mirror of
https://github.com/bitwarden/browser
synced 2026-02-26 17:43:22 +00:00
* [PM-2014] feat: scaffold new fido2 login component and module * [PM-1024] feat: add content to login settings component * [PM-1024] feat: add badge and button aria label * [PM-2014] feat: create new dialog * feat: add ability to remove form field bottom margin (cherry picked from commit 05925ff77ed47f3865c2aecade8271390d9e2fa6) * [PM-2014] feat: disable dialog close button * [PM-2014] feat: implement mocked failing wizard flow * [PM-2014] feat: add icons and other content * [PM-2014] feat: change wording to "creating" password * [PM-2014] feat: add new auth and auth core modules * [PM-2014] chore: move fido2-login-settings to auth module * [PM-2014] chore: expose using barrel files * [PM-2014] feat: fetch webauthn challenge * [PM-2014] chore: refactor api logic into new api service and move ui logic into existing service * [PM-2014] feat: add tests for new credential options * [PM-2014] feat: return undefined when credential creation fails * [PM-2014] feat: implement credential creation * [PM-2014] feat: add passkey naming ui * [PM-2014] feat: add support for creation token * [PM-2014] feat: implement credential saving * [PM-2014] feat: Basic list of credentials * [PM-2014] feat: improve async data loading * [PM-2014] feat: finish up list UI * [PM-2014] fix: loading state not being set properly * [PM-2014] feat: improve aria labels * [PM-2014] feat: show toast on passkey saved * [PM-2014] feat: add delete dialog * [PM-2014] feat: implement deletion without user verification * [PM-2014] feat: add user verification to delete * [PM-2014] feat: change to danger button * [PM-2014] feat: show `save` if passkeys already exist * [PM-2014] feat: add passkey limit * [PM-2014] feat: improve error on delete * [PM-2014] feat: add support for feature flag * [PM-2014] feat: update copy * [PM-2014] feat: reduce remove button margin * [PM-2014] feat: refactor submit method * [PM-2014] feat: autofocus fields * [PM-2014] fix: move error handling to components After discussing it with Jake we decided that following convention was best. * [PM-2014] feat: change toast depending on existing passkeys * [PM-2014] chore: rename everything from `fido2` to `webauthn` * [PM-2014] fix: `CoreAuthModule` duplicate import * [PM-2014] feat: change to new figma design `Encryption not supported` * [PM-2014] fix: add missing href * [PM-2014] fix: misaligned badge * [PM-2014] chore: remove whitespace * [PM-2014] fix: dialog close bug * [PM-2014] fix: badge alignment not applying properly * [PM-2014] fix: remove redundant align class * [PM-2014] chore: move CoreAuthModule to AuthModule * [PM-2014] feat: create new settings module * [PM-2014] feat: move change password component to settings module * [PM-2014] chore: tweak loose components recommendation * [PM-2014] fix: remove deprecated pattern * [PM-2014] chore: rename everything to `WebauthnLogin` to follow new naming scheme * [PM-2014] chore: document requests and responses * [PM-2014] fix: remove `undefined` * [PM-2014] fix: clarify webauthn login service * [PM-2014] fix: use `getCredentials$()` * [PM-2014] fix: badge alignment using important statement * [PM-2014] fix: remove sm billing flag * [PM-2014] fix: `CoreAuthModule` double import * [PM-2014] fix: unimported component (issue due to conflict with master) * [PM-2014] fix: unawaited promise bug
71 lines
3.0 KiB
HTML
71 lines
3.0 KiB
HTML
<form [formGroup]="formGroup" [bitSubmit]="submit">
|
|
<bit-dialog dialogSize="large">
|
|
<span bitDialogTitle
|
|
>{{ "loginWithPasskey" | i18n }}
|
|
<span class="tw-text-sm tw-normal-case tw-text-muted">{{ "newPasskey" | i18n }}</span>
|
|
</span>
|
|
<ng-container bitDialogContent>
|
|
<ng-container *ngIf="currentStep === 'userVerification'">
|
|
<p bitTypography="body1">
|
|
{{ "passkeyEnterMasterPassword" | i18n }}
|
|
</p>
|
|
<bit-form-field disableMargin formGroupName="userVerification">
|
|
<bit-label>{{ "masterPassword" | i18n }}</bit-label>
|
|
<input type="password" bitInput formControlName="masterPassword" appAutofocus />
|
|
<button type="button" bitIconButton bitSuffix bitPasswordInputToggle></button>
|
|
<bit-hint>{{ "confirmIdentity" | i18n }}</bit-hint>
|
|
</bit-form-field>
|
|
</ng-container>
|
|
|
|
<div *ngIf="currentStep === 'credentialCreation'" class="tw-flex tw-flex-col tw-items-center">
|
|
<bit-icon [icon]="Icons.CreatePasskeyIcon" class="tw-mb-6"></bit-icon>
|
|
<h3 bitTypography="h3">{{ "creatingPasskeyLoading" | i18n }}</h3>
|
|
<p bitTypography="body1">{{ "creatingPasskeyLoadingInfo" | i18n }}</p>
|
|
</div>
|
|
|
|
<div
|
|
*ngIf="currentStep === 'credentialCreationFailed'"
|
|
class="tw-flex tw-flex-col tw-items-center"
|
|
>
|
|
<bit-icon [icon]="Icons.CreatePasskeyFailedIcon" class="tw-mb-6"></bit-icon>
|
|
<h3 bitTypography="h3">{{ "errorCreatingPasskey" | i18n }}</h3>
|
|
<p bitTypography="body1">{{ "errorCreatingPasskeyInfo" | i18n }}</p>
|
|
</div>
|
|
|
|
<div *ngIf="currentStep === 'credentialNaming'">
|
|
<h3 bitTypography="h3">{{ "passkeySuccessfullyCreated" | i18n }}</h3>
|
|
<p bitTypography="body1">
|
|
{{ "customPasskeyNameInfo" | i18n }}
|
|
</p>
|
|
<bit-form-field disableMargin formGroupName="credentialNaming">
|
|
<bit-label>{{ "customName" | i18n }}</bit-label>
|
|
<input type="text" bitInput formControlName="name" appAutofocus />
|
|
<bit-hint>{{
|
|
"charactersCurrentAndMaximum"
|
|
| i18n : formGroup.value.credentialNaming.name.length : NameMaxCharacters
|
|
}}</bit-hint>
|
|
</bit-form-field>
|
|
</div>
|
|
</ng-container>
|
|
<ng-container bitDialogFooter>
|
|
<button type="submit" bitButton bitFormButton buttonType="primary">
|
|
<ng-container *ngIf="currentStep === 'userVerification'">
|
|
{{ "continue" | i18n }}
|
|
</ng-container>
|
|
<ng-container *ngIf="currentStep === 'credentialCreation'">
|
|
{{ "continue" | i18n }}
|
|
</ng-container>
|
|
<ng-container *ngIf="currentStep === 'credentialCreationFailed'">
|
|
{{ "tryAgain" | i18n }}
|
|
</ng-container>
|
|
<ng-container *ngIf="currentStep === 'credentialNaming'">
|
|
{{ ((hasPasskeys$ | async) ? "save" : "enable") | i18n }}
|
|
</ng-container>
|
|
</button>
|
|
<button type="button" bitButton bitFormButton buttonType="secondary" bitDialogClose>
|
|
{{ "cancel" | i18n }}
|
|
</button>
|
|
</ng-container>
|
|
</bit-dialog>
|
|
</form>
|