mirror of
https://github.com/bitwarden/browser
synced 2026-03-01 02:51:24 +00:00
* feat(newdeviceVerificaiton) : adding component and request model * feat(newDeviceverification) : adding state structure to track verify devices for active user; added API call to server. * feat(newDeviceVerification) : added visual elements for opting out of new device verification. * Fixing tests for account service. fixed DI for account service * Fixing strict lint issues * debt(deauthorizeSessionsModal) : changed modal to dialog. fixed strict typing for the new dialog for deviceVerification. * fixing tests * fixing desktop build DI * changed dialog to standalone fixed names and comments. * Adding tests for AccountService * fix linting * PM-15605 - AccountComp - fix ngOnDestroy erroring as it was incorrectly decorated with removed property. * PM-15605 - SetAccountVerifyDevicesDialogComponent - only show warning about turning off new device verification if user doensn't have 2FA configured per task description --------- Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com> Co-authored-by: Jared Snider <jsnider@bitwarden.com>
52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
import { Component } from "@angular/core";
|
|
import { FormBuilder } from "@angular/forms";
|
|
|
|
import { ApiService } from "@bitwarden/common/abstractions/api.service";
|
|
import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction";
|
|
import { Verification } from "@bitwarden/common/auth/types/verification";
|
|
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
|
import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
|
|
import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service";
|
|
import { DialogService, ToastService } from "@bitwarden/components";
|
|
|
|
@Component({
|
|
selector: "app-deauthorize-sessions",
|
|
templateUrl: "deauthorize-sessions.component.html",
|
|
})
|
|
export class DeauthorizeSessionsComponent {
|
|
deauthForm = this.formBuilder.group({
|
|
verification: undefined as Verification | undefined,
|
|
});
|
|
invalidSecret: boolean = false;
|
|
|
|
constructor(
|
|
private apiService: ApiService,
|
|
private i18nService: I18nService,
|
|
private formBuilder: FormBuilder,
|
|
private userVerificationService: UserVerificationService,
|
|
private messagingService: MessagingService,
|
|
private logService: LogService,
|
|
private toastService: ToastService,
|
|
) {}
|
|
|
|
submit = async () => {
|
|
try {
|
|
const verification: Verification = this.deauthForm.value.verification!;
|
|
const request = await this.userVerificationService.buildRequest(verification);
|
|
await this.apiService.postSecurityStamp(request);
|
|
this.toastService.showToast({
|
|
variant: "success",
|
|
title: this.i18nService.t("sessionsDeauthorized"),
|
|
message: this.i18nService.t("logBackIn"),
|
|
});
|
|
this.messagingService.send("logout");
|
|
} catch (e) {
|
|
this.logService.error(e);
|
|
}
|
|
};
|
|
|
|
static open(dialogService: DialogService) {
|
|
return dialogService.open(DeauthorizeSessionsComponent);
|
|
}
|
|
}
|