-
-
-
-
-
-
-
-
{{ p.name }}
- {{ p.description }}
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ "recoveryCodeTitle" | i18n }}
- {{ "recoveryCodeDesc" | i18n }}
-
-
-
-
-
-
+
+
+ {{ "twoStepOptions" | i18n }}
+
+
+
+
+
+
+
+
+
{{ p.name }}
+
{{ p.description }}
+
+
+
-
+
+
+
+
+
+
+
{{ "recoveryCodeTitle" | i18n }}
+
{{ "recoveryCodeDesc" | i18n }}
+
+
+
+
-
-
+
+
+
+
+
diff --git a/apps/web/src/app/auth/two-factor-options.component.ts b/apps/web/src/app/auth/two-factor-options.component.ts
index 624d003c91..fef15799df 100644
--- a/apps/web/src/app/auth/two-factor-options.component.ts
+++ b/apps/web/src/app/auth/two-factor-options.component.ts
@@ -1,11 +1,24 @@
+import { DialogRef } from "@angular/cdk/dialog";
import { Component } from "@angular/core";
import { Router } from "@angular/router";
import { TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent } from "@bitwarden/angular/auth/components/two-factor-options.component";
import { TwoFactorService } from "@bitwarden/common/auth/abstractions/two-factor.service";
+import { TwoFactorProviderType } from "@bitwarden/common/auth/enums/two-factor-provider-type";
import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { DialogService } from "@bitwarden/components";
+
+export enum TwoFactorOptionsDialogResult {
+ Provider = "Provider selected",
+ Recover = "Recover selected",
+}
+
+export type TwoFactorOptionsDialogResultType = {
+ result: TwoFactorOptionsDialogResult;
+ type: TwoFactorProviderType;
+};
@Component({
selector: "app-two-factor-options",
@@ -18,7 +31,22 @@ export class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent {
i18nService: I18nService,
platformUtilsService: PlatformUtilsService,
environmentService: EnvironmentService,
+ private dialogRef: DialogRef,
) {
super(twoFactorService, router, i18nService, platformUtilsService, window, environmentService);
}
+
+ async choose(p: any) {
+ await super.choose(p);
+ this.dialogRef.close({ result: TwoFactorOptionsDialogResult.Provider, type: p.type });
+ }
+
+ async recover() {
+ await super.recover();
+ this.dialogRef.close({ result: TwoFactorOptionsDialogResult.Recover });
+ }
+
+ static open(dialogService: DialogService) {
+ return dialogService.open
(TwoFactorOptionsComponent);
+ }
}
diff --git a/apps/web/src/app/auth/two-factor.component.html b/apps/web/src/app/auth/two-factor.component.html
index 9a55ba3aa0..df86db99ee 100644
--- a/apps/web/src/app/auth/two-factor.component.html
+++ b/apps/web/src/app/auth/two-factor.component.html
@@ -171,4 +171,3 @@