1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-06 19:53:59 +00:00

[PM-2014] feat: implement deletion without user verification

This commit is contained in:
Andreas Coroiu
2023-05-10 15:09:27 +02:00
parent be0aaf8334
commit 09d09f7e3d
4 changed files with 30 additions and 1 deletions

View File

@@ -34,4 +34,8 @@ export class WebauthnApiService {
getCredentials(): Promise<ListResponse<WebauthnCredentialResponse>> {
return this.apiService.send("GET", "/webauthn", null, true, true);
}
deleteCredential(id: string): Promise<unknown> {
return this.apiService.send("DELETE", `/webauthn/${id}`, null, true, true);
}
}

View File

@@ -114,6 +114,19 @@ export class WebauthnService {
);
}
async deleteCredential(credentialId: string): Promise<boolean> {
try {
await this.apiService.deleteCredential(credentialId);
this.platformUtilsService.showToast("success", null, this.i18nService.t("passkeyRemoved"));
this.refresh();
return true;
} catch (error) {
this.logService?.error(error);
this.platformUtilsService.showToast("error", null, this.i18nService.t("unexpectedError"));
return false;
}
}
private getCredentials$(): Observable<WebauthnCredentialView[]> {
return from(this.apiService.getCredentials()).pipe(map((response) => response.data));
}

View File

@@ -38,7 +38,16 @@ export class DeleteCredentialDialogComponent implements OnInit, OnDestroy {
}
submit = async () => {
// empty
if (this.credential === undefined) {
return;
}
this.dialogRef.disableClose = true;
if (!(await this.webauthnService.deleteCredential(this.credential.id))) {
this.dialogRef.disableClose = false;
return;
}
this.dialogRef.close();
};
ngOnDestroy(): void {

View File

@@ -673,6 +673,9 @@
}
}
},
"passkeyRemoved": {
"message": "Passkey removed"
},
"removePasskey": {
"message": "Remove passkey"
},