mirror of
https://github.com/bitwarden/browser
synced 2025-12-16 08:13:42 +00:00
support for unlocking with PIN code
This commit is contained in:
@@ -47,6 +47,7 @@ export class SettingsComponent implements OnInit {
|
||||
@ViewChild('lockOptionsSelect', { read: ElementRef }) lockOptionsSelectRef: ElementRef;
|
||||
lockOptions: any[];
|
||||
lockOption: number = null;
|
||||
pin: boolean = null;
|
||||
previousLockOption: number = null;
|
||||
|
||||
constructor(private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,
|
||||
@@ -87,6 +88,8 @@ export class SettingsComponent implements OnInit {
|
||||
this.lockOption = option;
|
||||
}
|
||||
this.previousLockOption = this.lockOption;
|
||||
|
||||
this.pin = await this.lockService.isPinLockSet();
|
||||
}
|
||||
|
||||
async saveLockOption(newValue: number) {
|
||||
@@ -111,6 +114,27 @@ export class SettingsComponent implements OnInit {
|
||||
}
|
||||
}
|
||||
|
||||
async updatePin() {
|
||||
if (this.pin) {
|
||||
const pin = await swal({
|
||||
text: this.i18nService.t('setYourPinCode'),
|
||||
content: { element: 'input' },
|
||||
buttons: [this.i18nService.t('cancel'), this.i18nService.t('submit')],
|
||||
});
|
||||
if (pin != null && pin.trim() !== '') {
|
||||
const pinKey = await this.cryptoService.makePinKey(pin, await this.userService.getEmail());
|
||||
const key = await this.cryptoService.getKey();
|
||||
const pinProtectedKey = await this.cryptoService.encrypt(key.key, pinKey);
|
||||
await this.storageService.save(ConstantsService.pinProtectedKey, pinProtectedKey.encryptedString);
|
||||
} else {
|
||||
this.pin = false;
|
||||
}
|
||||
}
|
||||
if (!this.pin) {
|
||||
await this.storageService.remove(ConstantsService.pinProtectedKey);
|
||||
}
|
||||
}
|
||||
|
||||
async lock() {
|
||||
this.analytics.eventTrack.next({ action: 'Lock Now' });
|
||||
await this.lockService.lock();
|
||||
|
||||
Reference in New Issue
Block a user