mirror of
https://github.com/bitwarden/browser
synced 2025-12-20 02:03:39 +00:00
[PS-589] Added Device Verification section setting for 2FA Email for new device (#2868)
* PS-589 Added Device Verification section for enable/disable the feature of 2FA email on new device login and the api calls for the new endpoint * PS-589 prettier fix * PS-589 Fix import typo because of caps * PS-589 Improved button to use bitButton directive and loading to have the ngIf on the 2fa setup component
This commit is contained in:
committed by
GitHub
parent
2d72201650
commit
c93c6a775d
@@ -3,11 +3,15 @@ import { Component, OnInit, Type, ViewChild, ViewContainerRef } from "@angular/c
|
||||
import { ModalRef } from "jslib-angular/components/modal/modal.ref";
|
||||
import { ModalService } from "jslib-angular/services/modal.service";
|
||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { PolicyType } from "jslib-common/enums/policyType";
|
||||
import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType";
|
||||
import { DeviceVerificationRequest } from "jslib-common/models/request/deviceVerificationRequest";
|
||||
import { TwoFactorProviders } from "jslib-common/services/twoFactor.service";
|
||||
|
||||
import { TwoFactorAuthenticatorComponent } from "./two-factor-authenticator.component";
|
||||
@@ -39,18 +43,32 @@ export class TwoFactorSetupComponent implements OnInit {
|
||||
canAccessPremium: boolean;
|
||||
showPolicyWarning = false;
|
||||
loading = true;
|
||||
enableDeviceVerification: boolean;
|
||||
isDeviceVerificationSectionEnabled: boolean;
|
||||
modal: ModalRef;
|
||||
formPromise: Promise<any>;
|
||||
|
||||
constructor(
|
||||
protected apiService: ApiService,
|
||||
protected modalService: ModalService,
|
||||
protected messagingService: MessagingService,
|
||||
protected policyService: PolicyService,
|
||||
private stateService: StateService
|
||||
private stateService: StateService,
|
||||
private platformUtilsService: PlatformUtilsService,
|
||||
private i18nService: I18nService,
|
||||
private logService: LogService
|
||||
) {}
|
||||
|
||||
async ngOnInit() {
|
||||
this.canAccessPremium = await this.stateService.getCanAccessPremium();
|
||||
try {
|
||||
const deviceVerificationSettings = await this.apiService.getDeviceVerificationSettings();
|
||||
this.isDeviceVerificationSectionEnabled =
|
||||
deviceVerificationSettings.isDeviceVerificationSectionEnabled;
|
||||
this.enableDeviceVerification = deviceVerificationSettings.unknownDeviceVerificationEnabled;
|
||||
} catch (e) {
|
||||
this.logService.error(e);
|
||||
}
|
||||
|
||||
for (const key in TwoFactorProviders) {
|
||||
// eslint-disable-next-line
|
||||
@@ -186,4 +204,37 @@ export class TwoFactorSetupComponent implements OnInit {
|
||||
this.showPolicyWarning = false;
|
||||
}
|
||||
}
|
||||
|
||||
async submit() {
|
||||
try {
|
||||
if (this.enableDeviceVerification) {
|
||||
const email = await this.stateService.getEmail();
|
||||
const confirmed = await this.platformUtilsService.showDialog(
|
||||
this.i18nService.t(
|
||||
"areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX",
|
||||
email
|
||||
),
|
||||
this.i18nService.t("deviceVerification"),
|
||||
this.i18nService.t("yes"),
|
||||
this.i18nService.t("no"),
|
||||
"warning"
|
||||
);
|
||||
if (!confirmed) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this.formPromise = this.apiService.putDeviceVerificationSettings(
|
||||
new DeviceVerificationRequest(this.enableDeviceVerification)
|
||||
);
|
||||
await this.formPromise;
|
||||
this.platformUtilsService.showToast(
|
||||
"success",
|
||||
null,
|
||||
this.i18nService.t("updatedDeviceVerification")
|
||||
);
|
||||
} catch (e) {
|
||||
this.logService.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user