bitwarden-browser/apps/browser/src/auth/popup/two-factor.component.html

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

151 lines
5.7 KiB
HTML
Raw Normal View History

<form id="two-factor-page" #form (ngSubmit)="submit()" [appApiAction]="formPromise">
<header>
<div class="left">
<button type="button" routerLink="/login">{{ "back" | i18n }}</button>
2021-12-21 15:43:35 +01:00
</div>
2021-11-02 23:28:53 +01:00
<h1 class="center">
<span class="title">{{ title }}</span>
2021-12-21 15:43:35 +01:00
</h1>
<div class="right">
2021-12-21 15:43:35 +01:00
<button
2019-02-21 22:53:57 +01:00
type="submit"
[disabled]="form.loading"
2021-12-21 15:43:35 +01:00
*ngIf="
2019-02-21 22:53:57 +01:00
selectedProviderType != null &&
selectedProviderType !== providerType.Duo &&
2018-07-31 03:46:03 +02:00
selectedProviderType !== providerType.OrganizationDuo &&
(selectedProviderType !== providerType.WebAuthn || form.loading)
2021-12-21 15:43:35 +01:00
"
>
<span [hidden]="form.loading">{{ "continue" | i18n }}</span>
<i class="bwi bwi-spinner bwi-lg bwi-spin" [hidden]="!form.loading" aria-hidden="true"></i>
</button>
2021-12-21 15:43:35 +01:00
</div>
</header>
<main tabindex="-1">
2018-04-05 16:29:11 +02:00
<ng-container
2021-12-21 15:43:35 +01:00
*ngIf="
2018-04-05 16:29:11 +02:00
selectedProviderType === providerType.Authenticator ||
selectedProviderType === providerType.Email
2021-12-21 15:43:35 +01:00
"
>
2018-04-05 16:29:11 +02:00
<div class="content text-center">
<span *ngIf="selectedProviderType === providerType.Authenticator">
{{ "enterVerificationCodeApp" | i18n }}
2021-12-21 15:43:35 +01:00
</span>
2018-04-05 16:29:11 +02:00
<span *ngIf="selectedProviderType === providerType.Email">
{{ "enterVerificationCodeEmail" | i18n: twoFactorEmail }}
2021-12-21 15:43:35 +01:00
</span>
</div>
2018-04-05 16:29:11 +02:00
<div class="box first">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="code">{{ "verificationCode" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-25 23:53:51 +02:00
id="code"
type="text"
name="Code"
[(ngModel)]="token"
2021-12-21 15:43:35 +01:00
required
2018-04-25 23:53:51 +02:00
appAutofocus
2019-02-21 22:53:57 +01:00
inputmode="tel"
appInputVerbatim
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-05 16:29:11 +02:00
<div class="box-content-row box-content-row-checkbox" appBoxRow>
<label for="remember">{{ "rememberMe" | i18n }}</label>
<input id="remember" type="checkbox" name="Remember" [(ngModel)]="remember" />
2021-12-21 15:43:35 +01:00
</div>
</div>
2021-12-21 15:43:35 +01:00
</div>
2021-11-02 23:28:53 +01:00
</ng-container>
2019-02-21 22:53:57 +01:00
<ng-container *ngIf="selectedProviderType === providerType.Yubikey">
<div class="content text-center">
<p class="text-center">{{ "insertYubiKey" | i18n }}</p>
2023-01-12 19:25:05 +01:00
<img src="../../popup/images/yubikey.jpg" class="img-rounded img-responsive" alt="" />
2021-12-21 15:43:35 +01:00
</div>
2019-10-08 23:04:44 +02:00
<div class="box first">
<div class="box-content">
2018-04-05 16:29:11 +02:00
<div class="box-content-row" appBoxRow>
2019-10-08 23:04:44 +02:00
<label for="code" class="sr-only">{{ "verificationCode" | i18n }}</label>
<input
id="code"
2018-04-25 23:53:51 +02:00
type="password"
name="Code"
2019-10-08 23:04:44 +02:00
[(ngModel)]="token"
2021-12-21 15:43:35 +01:00
required
2018-04-25 23:53:51 +02:00
appAutofocus
2019-10-08 23:04:44 +02:00
appInputVerbatim
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-05 16:29:11 +02:00
<div class="box-content-row box-content-row-checkbox" appBoxRow>
2019-10-08 23:04:44 +02:00
<label for="remember">{{ "rememberMe" | i18n }}</label>
<input id="remember" type="checkbox" name="Remember" [(ngModel)]="remember" />
</div>
</div>
</div>
2018-04-05 16:29:11 +02:00
</ng-container>
<ng-container *ngIf="selectedProviderType === providerType.WebAuthn && !webAuthnNewTab">
<div id="web-authn-frame">
<iframe id="webauthn_iframe" sandbox="allow-scripts allow-same-origin"></iframe>
</div>
2018-04-05 16:29:11 +02:00
<div class="box">
<div class="box-content">
<div class="box-content-row box-content-row-checkbox" appBoxRow>
<label for="remember">{{ "rememberMe" | i18n }}</label>
<input id="remember" type="checkbox" name="Remember" [(ngModel)]="remember" />
</div>
2018-04-05 16:29:11 +02:00
</div>
2018-07-24 23:13:39 +02:00
</div>
</ng-container>
<ng-container *ngIf="selectedProviderType === providerType.WebAuthn && webAuthnNewTab">
<div class="content text-center" *ngIf="webAuthnNewTab">
2018-07-24 23:13:39 +02:00
<p class="text-center">{{ "webAuthnNewTab" | i18n }}</p>
<button type="button" class="btn primary block" (click)="authWebAuthn()" appStopClick>
2018-04-05 16:29:11 +02:00
{{ "webAuthnNewTabOpen" | i18n }}
</button>
2021-12-21 15:43:35 +01:00
</div>
2018-04-05 16:29:11 +02:00
</ng-container>
<ng-container
*ngIf="
selectedProviderType === providerType.Duo ||
selectedProviderType === providerType.OrganizationDuo
2021-12-21 15:43:35 +01:00
"
>
<div id="duo-frame">
<iframe
id="duo_iframe"
sandbox="allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox"
></iframe>
</div>
2018-04-05 16:29:11 +02:00
<div class="box">
<div class="box-content">
2018-04-05 16:29:11 +02:00
<div class="box-content-row box-content-row-checkbox" appBoxRow>
<label for="remember">{{ "rememberMe" | i18n }}</label>
<input id="remember" type="checkbox" name="Remember" [(ngModel)]="remember" />
2021-12-21 15:43:35 +01:00
</div>
</div>
2021-12-21 15:43:35 +01:00
</div>
2018-04-05 16:29:11 +02:00
</ng-container>
<div class="box-content-row" [hidden]="!showCaptcha()">
<iframe id="hcaptcha_iframe" height="80" sandbox="allow-scripts allow-same-origin"></iframe>
</div>
2018-07-24 23:13:39 +02:00
<div class="content" *ngIf="selectedProviderType == null">
<p class="text-center">{{ "noTwoStepProviders" | i18n }}</p>
<p class="text-center">{{ "noTwoStepProviders2" | i18n }}</p>
2021-12-21 15:43:35 +01:00
</div>
2018-07-24 23:13:39 +02:00
<div class="content no-vpad" *ngIf="selectedProviderType != null">
<p class="text-center">
<button type="button" appStopClick (click)="anotherMethod()">
{{ "useAnotherTwoStepMethod" | i18n }}
</button>
2021-12-21 15:43:35 +01:00
</p>
2018-04-05 16:29:11 +02:00
<p *ngIf="selectedProviderType === providerType.Email" class="text-center">
<button type="button" appStopClick (click)="sendEmail(true)" [appApiAction]="emailPromise">
2018-04-05 16:29:11 +02:00
{{ "sendVerificationCodeEmailAgain" | i18n }}
</button>
2021-12-21 15:43:35 +01:00
</p>
</div>
</main>
</form>