diff --git a/apps/.vscode/launch.json b/apps/.vscode/launch.json new file mode 100644 index 00000000000..177bc7dfad1 --- /dev/null +++ b/apps/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "pwa-chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + } + ] +} diff --git a/apps/desktop/src/app/vault/export.component.ts b/apps/desktop/src/app/vault/export.component.ts index 8087504f67e..0752a8599df 100644 --- a/apps/desktop/src/app/vault/export.component.ts +++ b/apps/desktop/src/app/vault/export.component.ts @@ -16,7 +16,6 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { UserVerificationService } from "@bitwarden/common/abstractions/userVerification.service"; -import { UserVerificationPromptService } from "@bitwarden/common/abstractions/userVerificationPrompt.service"; const BroadcasterSubscriptionId = "ExportComponent"; @@ -39,7 +38,6 @@ export class ExportComponent extends BaseExportComponent implements OnInit { protected modalService: ModalService, protected apiService: ApiService, protected stateService: StateService, - protected userVerificationPromptService: UserVerificationPromptService, protected modalConfig: ModalConfig ) { super( @@ -56,7 +54,6 @@ export class ExportComponent extends BaseExportComponent implements OnInit { modalService, apiService, stateService, - userVerificationPromptService, modalConfig ); } diff --git a/apps/web/src/app/organizations/tools/export.component.ts b/apps/web/src/app/organizations/tools/export.component.ts index d943b4615a3..8cec45f1d6e 100644 --- a/apps/web/src/app/organizations/tools/export.component.ts +++ b/apps/web/src/app/organizations/tools/export.component.ts @@ -3,7 +3,6 @@ import { FormBuilder } from "@angular/forms"; import { ActivatedRoute } from "@angular/router"; import { ModalConfig, ModalService } from "@bitwarden/angular/services/modal.service"; -import { UserVerificationPromptService } from "@bitwarden/angular/services/userVerificationPrompt.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { EventService } from "@bitwarden/common/abstractions/event.service"; @@ -36,7 +35,6 @@ export class ExportComponent extends BaseExportComponent { modalService: ModalService, apiService: ApiService, stateService: StateService, - userVerificationPromptService: UserVerificationPromptService, modalConfig: ModalConfig ) { super( @@ -52,7 +50,6 @@ export class ExportComponent extends BaseExportComponent { modalService, apiService, stateService, - userVerificationPromptService, modalConfig ); } diff --git a/apps/web/src/app/services/services.module.ts b/apps/web/src/app/services/services.module.ts index cdc2783254f..2860ea4a837 100644 --- a/apps/web/src/app/services/services.module.ts +++ b/apps/web/src/app/services/services.module.ts @@ -30,7 +30,6 @@ import { PlatformUtilsService as PlatformUtilsServiceAbstraction } from "@bitwar import { StateService as BaseStateServiceAbstraction } from "@bitwarden/common/abstractions/state.service"; import { StateMigrationService as StateMigrationServiceAbstraction } from "@bitwarden/common/abstractions/stateMigration.service"; import { StorageService as StorageServiceAbstraction } from "@bitwarden/common/abstractions/storage.service"; -import { UserVerificationPromptService as UserVerificationPromptServiceAbstraction } from "@bitwarden/common/abstractions/userVerificationPrompt.service"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; import { ExportService } from "@bitwarden/common/services/export.service"; import { ImportService } from "@bitwarden/common/services/import.service"; @@ -45,7 +44,6 @@ import { MemoryStorageService } from "../../services/memoryStorage.service"; import { PasswordRepromptService } from "../../services/passwordReprompt.service"; import { StateService } from "../../services/state.service"; import { StateMigrationService } from "../../services/stateMigration.service"; -import { UserVerificationPromptService } from "../../services/userVerificationPrompt.service"; import { WebPlatformUtilsService } from "../../services/webPlatformUtils.service"; import { HomeGuard } from "../guards/home.guard"; import { PermissionsGuard as OrgPermissionsGuard } from "../organizations/guards/permissions.guard"; @@ -149,10 +147,6 @@ import { RouterService } from "./router.service"; provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService, }, - { - provide: UserVerificationPromptServiceAbstraction, - useClass: UserVerificationPromptService, - }, HomeGuard, ], }) diff --git a/apps/web/src/app/tools/export.component.ts b/apps/web/src/app/tools/export.component.ts index c3cb483df3d..555d07315fc 100644 --- a/apps/web/src/app/tools/export.component.ts +++ b/apps/web/src/app/tools/export.component.ts @@ -13,9 +13,10 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { UserVerificationService } from "@bitwarden/common/abstractions/userVerification.service"; -import { UserVerificationPromptService } from "@bitwarden/common/abstractions/userVerificationPrompt.service"; import { EncryptedExportType } from "@bitwarden/common/enums/EncryptedExportType"; +import { UserVerificationPromptComponent } from "../components/user-verification-prompt.component"; + @Component({ selector: "app-export", templateUrl: "export.component.html", @@ -41,7 +42,6 @@ export class ExportComponent extends BaseExportComponent { modalService: ModalService, apiService: ApiService, stateService: StateService, - userVerificationPromptService: UserVerificationPromptService, modalConfig: ModalConfig ) { super( @@ -58,7 +58,6 @@ export class ExportComponent extends BaseExportComponent { modalService, apiService, stateService, - userVerificationPromptService, modalConfig ); } @@ -76,15 +75,28 @@ export class ExportComponent extends BaseExportComponent { } try { - if ( - await this.userVerificationPromptService.showUserVerificationPrompt( - confirmDescription, - confirmButtonText, - modalTitle - ) - ) { + const ref = this.modalService.open(UserVerificationPromptComponent, { + allowMultipleModals: true, + data: { + confirmDescription: confirmDescription, + confirmButtonText: confirmButtonText, + modalTitle: modalTitle, + }, + }); + + if (ref == null) { + return; + } + + if (await ref.onClosedPromise()) { //successful this.submitWithSecretAlreadyVerified(); + } else { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("error"), + this.i18nService.t("invalidMasterPassword") + ); } } catch { this.platformUtilsService.showToast( diff --git a/apps/web/src/services/userVerificationPrompt.service.ts b/apps/web/src/services/userVerificationPrompt.service.ts deleted file mode 100644 index 3e116019df2..00000000000 --- a/apps/web/src/services/userVerificationPrompt.service.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Injectable } from "@angular/core"; - -import { UserVerificationPromptService as BaseUserVerificationPrompt } from "@bitwarden/angular/services/userVerificationPrompt.service"; - -import { UserVerificationPromptComponent } from "../app/components/user-verification-prompt.component"; - -@Injectable() -export class UserVerificationPromptService extends BaseUserVerificationPrompt { - component = UserVerificationPromptComponent; -} diff --git a/libs/angular/src/components/export.component.ts b/libs/angular/src/components/export.component.ts index aabfc32abd0..6db861e45c5 100644 --- a/libs/angular/src/components/export.component.ts +++ b/libs/angular/src/components/export.component.ts @@ -19,7 +19,6 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { UserVerificationService } from "@bitwarden/common/abstractions/userVerification.service"; -import { UserVerificationPromptService } from "@bitwarden/common/abstractions/userVerificationPrompt.service"; import { EncryptedExportType } from "@bitwarden/common/enums/EncryptedExportType"; import { EventType } from "@bitwarden/common/enums/eventType"; import { PolicyType } from "@bitwarden/common/enums/policyType"; @@ -64,7 +63,6 @@ export class ExportComponent implements OnInit { protected modalService: ModalService, protected apiService: ApiService, protected stateService: StateService, - protected userVerificationPromptService: UserVerificationPromptService, protected modalConfig: ModalConfig ) {} @@ -176,7 +174,9 @@ export class ExportComponent implements OnInit { } protected getExportData() { - return this.exportService.getExport(this.format, null, this.encryptionPassword); + return (this.fileEncryptionType != 1 && this.password == undefined) || this.password == "" + ? this.exportService.getExport(this.format, null) + : this.exportService.getPasswordProtectedExport(this.password); } protected getFileName(prefix?: string) { diff --git a/libs/common/src/abstractions/export.service.ts b/libs/common/src/abstractions/export.service.ts index 9dc5fa8044d..b0266530bd6 100644 --- a/libs/common/src/abstractions/export.service.ts +++ b/libs/common/src/abstractions/export.service.ts @@ -3,7 +3,7 @@ import { EventView } from "../models/view/eventView"; export type ExportFormat = "csv" | "json" | "encrypted_json"; export abstract class ExportService { - getExport: (format?: ExportFormat, organizationId?: string, password?: string) => Promise; + getExport: (format?: ExportFormat, organizationId?: string) => Promise; getPasswordProtectedExport: (password: string, organizationId?: string) => Promise; getOrganizationExport: (organizationId: string, format?: ExportFormat) => Promise; getEventExport: (events: EventView[]) => Promise; diff --git a/libs/common/src/abstractions/userVerificationPrompt.service.ts b/libs/common/src/abstractions/userVerificationPrompt.service.ts deleted file mode 100644 index 83b9f7d2eae..00000000000 --- a/libs/common/src/abstractions/userVerificationPrompt.service.ts +++ /dev/null @@ -1,9 +0,0 @@ -export abstract class UserVerificationPromptService { - protectedFields: () => string[]; - showUserVerificationPrompt: ( - confirmDescription?: string, - confirmButtonText?: string, - modalTitle?: string - ) => Promise; - enabled: () => Promise; -} diff --git a/libs/common/src/services/export.service.ts b/libs/common/src/services/export.service.ts index 299d9697b6a..c6f08be6d26 100644 --- a/libs/common/src/services/export.service.ts +++ b/libs/common/src/services/export.service.ts @@ -36,19 +36,13 @@ export class ExportService implements ExportServiceAbstraction { private cryptoFunctionService: CryptoFunctionService ) {} - async getExport( - format: ExportFormat = "csv", - organizationId?: string, - password?: string - ): Promise { + async getExport(format: ExportFormat = "csv", organizationId?: string): Promise { if (organizationId) { return await this.getOrganizationExport(organizationId, format); } if (format === "encrypted_json") { - return password == undefined || password == "" - ? this.getEncryptedExport() - : this.getPasswordProtectedExport(password); + return this.getEncryptedExport(); } else { return this.getDecryptedExport(format); }