bitwarden-estensione-browser/src/popup/accounts/lock.component.ts

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

108 lines
3.4 KiB
TypeScript
Raw Normal View History

import { Component, NgZone } from "@angular/core";
2018-04-05 04:59:42 +02:00
import { Router } from "@angular/router";
import Swal from "sweetalert2";
2018-04-05 04:59:42 +02:00
import { ConstantsService } from "jslib-common/services/constants.service";
import { ApiService } from "jslib-common/abstractions/api.service";
import { CryptoService } from "jslib-common/abstractions/crypto.service";
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
import { I18nService } from "jslib-common/abstractions/i18n.service";
import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.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 { StateService } from "jslib-common/abstractions/state.service";
import { StorageService } from "jslib-common/abstractions/storage.service";
import { UserService } from "jslib-common/abstractions/user.service";
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
2018-04-05 04:59:42 +02:00
import { LockComponent as BaseLockComponent } from "jslib-angular/components/lock.component";
2018-04-05 04:59:42 +02:00
@Component({
selector: "app-lock",
2018-04-06 17:48:45 +02:00
templateUrl: "lock.component.html",
2018-04-05 04:59:42 +02:00
})
2019-01-08 05:29:50 +01:00
export class LockComponent extends BaseLockComponent {
private isInitialLockScreen: boolean;
constructor(
router: Router,
i18nService: I18nService,
2018-04-05 04:59:42 +02:00
platformUtilsService: PlatformUtilsService,
messagingService: MessagingService,
2019-02-13 05:53:04 +01:00
userService: UserService,
cryptoService: CryptoService,
storageService: StorageService,
vaultTimeoutService: VaultTimeoutService,
environmentService: EnvironmentService,
stateService: StateService,
apiService: ApiService,
logService: LogService,
keyConnectorService: KeyConnectorService,
ngZone: NgZone
) {
2019-02-13 05:53:04 +01:00
super(
router,
i18nService,
platformUtilsService,
messagingService,
userService,
cryptoService,
storageService,
vaultTimeoutService,
environmentService,
stateService,
apiService,
logService,
keyConnectorService,
ngZone
);
2018-04-05 04:59:42 +02:00
this.successRoute = "/tabs/current";
this.isInitialLockScreen = (window as any).previousPopupUrl == null;
2018-04-05 04:59:42 +02:00
}
async ngOnInit() {
2019-02-13 05:53:04 +01:00
await super.ngOnInit();
const disableAutoBiometricsPrompt =
(await this.storageService.get<boolean>(ConstantsService.disableAutoBiometricsPromptKey)) ??
true;
window.setTimeout(async () => {
document.getElementById(this.pinLock ? "pin" : "masterPassword").focus();
if (this.biometricLock && !disableAutoBiometricsPrompt && this.isInitialLockScreen) {
if (await this.vaultTimeoutService.isLocked()) {
await this.unlockBiometric();
}
2021-12-21 15:43:35 +01:00
}
}, 100);
}
async unlockBiometric(): Promise<boolean> {
if (!this.biometricLock) {
return;
2021-12-21 15:43:35 +01:00
}
const div = document.createElement("div");
div.innerHTML = `<div class="swal2-text">${this.i18nService.t("awaitDesktop")}</div>`;
Swal.fire({
heightAuto: false,
buttonsStyling: false,
html: div,
showCancelButton: true,
cancelButtonText: this.i18nService.t("cancel"),
showConfirmButton: false,
});
const success = await super.unlockBiometric();
// Avoid closing the error dialogs
if (success) {
Swal.close();
}
2021-12-21 15:43:35 +01:00
return success;
}
2018-04-05 04:59:42 +02:00
}