From 90f831859257992e16b99b5f851f33910a5ff564 Mon Sep 17 00:00:00 2001 From: addison Date: Wed, 3 Nov 2021 17:16:08 -0400 Subject: [PATCH] [bug] Adjust state scope of several biometric data points --- common/src/models/domain/account.ts | 17 ++++++----- common/src/models/domain/globals.ts | 6 ++-- common/src/services/state.service.ts | 43 ++++++++++++++-------------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/common/src/models/domain/account.ts b/common/src/models/domain/account.ts index ee4f04f9..27ef9bb1 100644 --- a/common/src/models/domain/account.ts +++ b/common/src/models/domain/account.ts @@ -37,10 +37,6 @@ export class Account { apiKeyClientSecret: string; alwaysShowDock: boolean; autoFillOnPageLoadDefault: boolean; - biometricAwaitingAcceptance: boolean; - biometricFingerprintValidated: boolean; - biometricText: string; - biometricUnlock: boolean; encryptedCiphers: { [id: string]: CipherData }; decryptedCiphers: CipherView[]; cryptoMasterKey: SymmetricCryptoKey; @@ -49,7 +45,6 @@ export class Account { decryptedCryptoSymmetricKey: SymmetricCryptoKey; defaultUriMatch: UriMatchType; disableAddLoginNotification: boolean; - disableAutoBiometricsPrompt: boolean; disableAutoTotpCopy: boolean; disableBadgeCounter: boolean; disableChangedPasswordNotification: boolean; @@ -61,7 +56,6 @@ export class Account { emailVerified: boolean; enableAlwaysOnTop: boolean; enableAutoFillOnPageLoad: boolean; - enableBiometric: boolean; enableBrowserIntegration: boolean; enableBrowserIntegrationFingerprint: boolean; enableCloseToTray: boolean; @@ -92,8 +86,6 @@ export class Account { mainWindowSize: number; minimizeOnCopyToClipboard: boolean; neverDomains: string[]; - noAutoPromptBiometrics: boolean; - noAutoPromptBiometricsText: string; openAtLogin: boolean; encryptedPasswordGenerationHistory: GeneratedPasswordHistory[]; decryptedPasswordGenerationHistory: GeneratedPasswordHistory[]; @@ -127,11 +119,18 @@ export class Account { locale: string; organizations: { [id: string]: OrganizationData }; everBeenUnlocked: boolean; - biometricLocked: boolean; enableGravitars: boolean; addEditCipherInfo: any; authenticationStatus: AuthenticationStatus; autoConfirmFingerPrints: boolean; + disableAutoBiometricsPrompt: boolean; + noAutoPromptBiometrics: boolean; + biometricLocked: boolean; + biometricUnlock: boolean; + biometricText: string; + enableBiometric: boolean; + enableBiometrics: boolean; + noAutoPromptBiometricsText: string; private hasPremiumPersonally: boolean; constructor(userId: string, userEmail: string, diff --git a/common/src/models/domain/globals.ts b/common/src/models/domain/globals.ts index df6126d1..265a391a 100644 --- a/common/src/models/domain/globals.ts +++ b/common/src/models/domain/globals.ts @@ -1,12 +1,9 @@ export class Globals { - biometricText: string; decodedToken: any; enableAlwaysOnTop: boolean; - enableBiometrics: boolean; installedVersion: string; lastActive: number; locale: string; - noAutoPromptBiometricsText: string; openAtLogin: boolean; organizationInvitation: any; rememberEmail: boolean; @@ -14,4 +11,7 @@ export class Globals { theme: string; window: Map = new Map(); twoFactorToken: string; + + biometricAwaitingAcceptance: boolean; + biometricFingerprintValidated: boolean; } diff --git a/common/src/services/state.service.ts b/common/src/services/state.service.ts index 7cc580ee..f37307dc 100644 --- a/common/src/services/state.service.ts +++ b/common/src/services/state.service.ts @@ -112,15 +112,15 @@ export class StateService implements StateServiceAbstraction { } async getBiometricAwaitingAcceptance(options?: StorageOptions): Promise { - return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.biometricAwaitingAcceptance ?? false; + return (await this.getGlobals(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.biometricAwaitingAcceptance ?? false; } async getBiometricFingerprintValidated(options?: StorageOptions): Promise { - return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.biometricFingerprintValidated ?? false; + return (await this.getGlobals(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.biometricFingerprintValidated ?? false; } async getBiometricText(options?: StorageOptions): Promise { - return (await this.getGlobals(this.reconcileOptions(options, this.defaultOnDiskOptions)))?.biometricText; + return (await this.getAccount(this.reconcileOptions(options, this.defaultOnDiskOptions)))?.biometricText; } async getBiometricUnlock(options?: StorageOptions): Promise { @@ -160,7 +160,8 @@ export class StateService implements StateServiceAbstraction { if (options?.keySuffix == null) { throw new RequiredSuffixError(); } - return (await this.getAccount(this.reconcileOptions(options, this.defaultSecureStorageOptions)))?.cryptoMasterKeyB64; + const value = (await this.getAccount(this.reconcileOptions(options, this.defaultSecureStorageOptions)))?.cryptoMasterKeyB64; + return value; } catch (e) { this.logService.error(e); } @@ -233,7 +234,7 @@ export class StateService implements StateServiceAbstraction { } async getEnableBiometric(options?: StorageOptions): Promise { - return (await this.getGlobals(this.reconcileOptions(options, this.defaultOnDiskOptions)))?.enableBiometrics ?? false; + return (await this.getAccount(this.reconcileOptions(options, this.defaultOnDiskOptions)))?.enableBiometrics ?? false; } async getEnableBrowserIntegration(options?: StorageOptions): Promise { @@ -375,7 +376,7 @@ export class StateService implements StateServiceAbstraction { } async getNoAutoPromptBiometricsText(options?: StorageOptions): Promise { - return (await this.getGlobals(this.reconcileOptions(options, this.defaultOnDiskOptions)))?.noAutoPromptBiometricsText; + return (await this.getAccount(this.reconcileOptions(options, this.defaultOnDiskOptions)))?.noAutoPromptBiometricsText; } async getOpenAtLogin(options?: StorageOptions): Promise { @@ -546,21 +547,21 @@ export class StateService implements StateServiceAbstraction { } async setBiometricAwaitingAcceptance(value: boolean, options?: StorageOptions): Promise { - const account = await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)); - account.biometricAwaitingAcceptance = value; - await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions)); + const globals = await this.getGlobals(this.reconcileOptions(options, this.defaultInMemoryOptions)); + globals.biometricAwaitingAcceptance = value; + await this.saveGlobals(globals, this.reconcileOptions(options, this.defaultInMemoryOptions)); } async setBiometricFingerprintValidated(value: boolean, options?: StorageOptions): Promise { - const account = await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)); - account.biometricFingerprintValidated = value; - await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions)); + const globals = await this.getGlobals(this.reconcileOptions(options, this.defaultInMemoryOptions)); + globals.biometricFingerprintValidated = value; + await this.saveGlobals(globals, this.reconcileOptions(options, this.defaultInMemoryOptions)); } async setBiometricText(value: string, options?: StorageOptions): Promise { - const globals = await this.getGlobals(this.reconcileOptions(options, this.defaultOnDiskOptions)); - globals.biometricText = value; - await this.saveGlobals(globals, this.reconcileOptions(options, this.defaultOnDiskOptions)); + const account = await this.getAccount(this.reconcileOptions(options, this.defaultOnDiskOptions)); + account.biometricText = value; + await this.saveAccount(account, this.reconcileOptions(options, this.defaultOnDiskOptions)); } async setBiometricUnlock(value: boolean, options?: StorageOptions): Promise { @@ -734,9 +735,9 @@ export class StateService implements StateServiceAbstraction { } async setEnableBiometric(value: boolean, options?: StorageOptions): Promise { - const globals = await this.getGlobals(this.reconcileOptions(options, this.defaultOnDiskOptions)); - globals.enableBiometrics = value; - await this.saveGlobals(globals, this.reconcileOptions(options, this.defaultOnDiskOptions)); + const account = await this.getAccount(this.reconcileOptions(options, this.defaultOnDiskOptions)); + account.enableBiometrics = value; + await this.saveAccount(account, this.reconcileOptions(options, this.defaultOnDiskOptions)); } async setEnableBrowserIntegration(value: boolean, options?: StorageOptions): Promise { @@ -938,9 +939,9 @@ export class StateService implements StateServiceAbstraction { } async setNoAutoPromptBiometricsText(value: string, options?: StorageOptions): Promise { - const globals = await this.getGlobals(this.reconcileOptions(options, this.defaultOnDiskOptions)); - globals.noAutoPromptBiometricsText = value; - await this.saveGlobals(globals, this.reconcileOptions(options, this.defaultOnDiskOptions)); + const account = await this.getAccount(this.reconcileOptions(options, this.defaultOnDiskOptions)); + account.noAutoPromptBiometricsText = value; + await this.saveAccount(account, this.reconcileOptions(options, this.defaultOnDiskOptions)); } async setOpenAtLogin(value: boolean, options?: StorageOptions): Promise {