diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index d4a56fe8f6..7d98ab3aae 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -863,6 +863,15 @@ "enterTheCodeSentToYourEmail": { "message": "Enter the code sent to your email" }, + "enterTheCodeFromYourAuthenticatorApp": { + "message": "Enter the code from your authenticator app" + }, + "pressYourYubiKeyToAuthenticate": { + "message": "Press your YubiKey to authenticate" + }, + "duoTwoFactorRequiredPageSubtitle": { + "message": "Duo two-step login is required for your account. Popout the extension to complete login." + }, "restartRegistration": { "message": "Restart registration" }, diff --git a/apps/desktop/src/locales/en/messages.json b/apps/desktop/src/locales/en/messages.json index 7b773d26c2..71eaa2063d 100644 --- a/apps/desktop/src/locales/en/messages.json +++ b/apps/desktop/src/locales/en/messages.json @@ -655,6 +655,12 @@ "enterTheCodeSentToYourEmail": { "message": "Enter the code sent to your email" }, + "enterTheCodeFromYourAuthenticatorApp": { + "message": "Enter the code from your authenticator app" + }, + "pressYourYubiKeyToAuthenticate": { + "message": "Press your YubiKey to authenticate" + }, "logInWithPasskey": { "message": "Log in with passkey" }, @@ -3180,6 +3186,9 @@ "duoRequiredByOrgForAccount": { "message": "Duo two-step login is required for your account." }, + "duoTwoFactorRequiredPageSubtitle": { + "message": "Duo two-step login is required for your account. Launch Duo and follow the steps to finish logging in." + }, "launchDuo": { "message": "Launch Duo in Browser" }, diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index 880fea3ca7..70d753c540 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -1182,6 +1182,12 @@ "enterTheCodeSentToYourEmail": { "message": "Enter the code sent to your email" }, + "enterTheCodeFromYourAuthenticatorApp": { + "message": "Enter the code from your authenticator app" + }, + "pressYourYubiKeyToAuthenticate": { + "message": "Press your YubiKey to authenticate" + }, "authenticationTimeout": { "message": "Authentication timeout" }, @@ -7146,6 +7152,9 @@ "duoRequiredByOrgForAccount": { "message": "Duo two-step login is required for your account." }, + "duoTwoFactorRequiredPageSubtitle": { + "message": "Duo two-step login is required for your account. Launch Duo and follow the steps to finish logging in." + }, "launchDuo": { "message": "Launch Duo" }, diff --git a/libs/auth/src/angular/two-factor-auth/two-factor-auth.component.ts b/libs/auth/src/angular/two-factor-auth/two-factor-auth.component.ts index ae78bd3589..e2c8053132 100644 --- a/libs/auth/src/angular/two-factor-auth/two-factor-auth.component.ts +++ b/libs/auth/src/angular/two-factor-auth/two-factor-auth.component.ts @@ -39,7 +39,11 @@ import { } from "@bitwarden/components"; import { AnonLayoutWrapperDataService } from "../anon-layout/anon-layout-wrapper-data.service"; -import { TwoFactorAuthEmailIcon } from "../icons/two-factor-auth"; +import { + TwoFactorAuthAuthenticatorIcon, + TwoFactorAuthEmailIcon, + TwoFactorAuthYubikeyIcon, +} from "../icons/two-factor-auth"; import { TwoFactorAuthAuthenticatorComponent } from "./child-components/two-factor-auth-authenticator.component"; import { TwoFactorAuthDuoComponent } from "./child-components/two-factor-auth-duo/two-factor-auth-duo.component"; @@ -299,20 +303,32 @@ export class TwoFactorAuthComponent implements OnInit, OnDestroy { } async setAnonLayoutDataByTwoFactorProviderType() { + // TODO: finish adding all provider types switch (this.selectedProviderType) { - // case TwoFactorProviderType.Authenticator: - // this.anonLayoutWrapperDataService.setAnonLayoutWrapperData({ - // pageTitle: this.i18nService.t("ADD ME"), - // pageSubtitle: this.i18nService.t("twoFactorAuthenticatorSubtitle"), - // pageIcon: TwoFactorAuthAuthenticatorIcon, - // }); - // break; + case TwoFactorProviderType.Authenticator: + this.anonLayoutWrapperDataService.setAnonLayoutWrapperData({ + pageSubtitle: this.i18nService.t("enterTheCodeFromYourAuthenticatorApp"), + pageIcon: TwoFactorAuthAuthenticatorIcon, + }); + break; case TwoFactorProviderType.Email: this.anonLayoutWrapperDataService.setAnonLayoutWrapperData({ pageSubtitle: this.i18nService.t("enterTheCodeSentToYourEmail"), pageIcon: TwoFactorAuthEmailIcon, }); break; + case TwoFactorProviderType.Duo: + this.anonLayoutWrapperDataService.setAnonLayoutWrapperData({ + pageSubtitle: this.i18nService.t("duoTwoFactorRequiredPageSubtitle"), + pageIcon: TwoFactorAuthAuthenticatorIcon, + }); + break; + case TwoFactorProviderType.Yubikey: + this.anonLayoutWrapperDataService.setAnonLayoutWrapperData({ + pageSubtitle: this.i18nService.t("pressYourYubiKeyToAuthenticate"), + pageIcon: TwoFactorAuthYubikeyIcon, + }); + break; default: break;