diff --git a/.storybook/main.ts b/.storybook/main.ts index cb63ada550..26eee201f9 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -4,6 +4,7 @@ import remarkGfm from "remark-gfm"; const config: StorybookConfig = { stories: [ + "../libs/auth/src/**/*.mdx", "../libs/auth/src/**/*.stories.@(js|jsx|ts|tsx)", "../libs/components/src/**/*.mdx", "../libs/components/src/**/*.stories.@(js|jsx|ts|tsx)", diff --git a/angular.json b/angular.json index 4b62c771cb..cdf213e39d 100644 --- a/angular.json +++ b/angular.json @@ -142,7 +142,15 @@ "configDir": ".storybook", "browserTarget": "components:build", "compodoc": true, - "compodocArgs": ["-p", "./tsconfig.json", "-e", "json", "-d", "."], + "compodocArgs": [ + "-p", + "./tsconfig.json", + "-e", + "json", + "-d", + ".", + "--disableRoutesGraph" + ], "port": 6006 } }, diff --git a/apps/browser/config/base.json b/apps/browser/config/base.json index 8a3ccc14d3..6c428c43d2 100644 --- a/apps/browser/config/base.json +++ b/apps/browser/config/base.json @@ -1,5 +1,5 @@ { - "dev_flags": {}, + "devFlags": {}, "flags": { "showPasswordless": true, "enableCipherKeyEncryption": false, diff --git a/apps/browser/config/development.json b/apps/browser/config/development.json index aba10eb25b..e0925ebecc 100644 --- a/apps/browser/config/development.json +++ b/apps/browser/config/development.json @@ -2,7 +2,8 @@ "devFlags": { "managedEnvironment": { "base": "https://localhost:8080" - } + }, + "skipWelcomeOnInstall": true }, "flags": { "showPasswordless": true, diff --git a/apps/browser/package.json b/apps/browser/package.json index 580acfc3d0..278a3b6c52 100644 --- a/apps/browser/package.json +++ b/apps/browser/package.json @@ -1,6 +1,6 @@ { "name": "@bitwarden/browser", - "version": "2024.4.2", + "version": "2024.5.0", "scripts": { "build": "webpack", "build:mv3": "cross-env MANIFEST_VERSION=3 webpack", diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index bd62b825e7..9360524da1 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -374,12 +374,21 @@ "other": { "message": "Other" }, + "unlockMethods": { + "message": "Unlock options" + }, "unlockMethodNeededToChangeTimeoutActionDesc": { "message": "Set up an unlock method to change your vault timeout action." }, "unlockMethodNeeded": { "message": "Set up an unlock method in Settings" }, + "sessionTimeoutHeader": { + "message": "Session timeout" + }, + "otherOptions": { + "message": "Other options" + }, "rateExtension": { "message": "Rate the extension" }, @@ -3023,6 +3032,15 @@ "adminConsole": { "message": "Admin Console" }, + "accountSecurity": { + "message": "Account security" + }, + "notifications": { + "message": "Notifications" + }, + "appearance": { + "message": "Appearance" + }, "errorAssigningTargetCollection": { "message": "Error assigning target collection." }, diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json index 2a7f18ca01..a95f11ffa1 100644 --- a/apps/browser/src/_locales/en_IN/messages.json +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -226,7 +226,7 @@ "message": "Help & feedback" }, "helpCenter": { - "message": "Bitwarden Help center" + "message": "Bitwarden Help centre" }, "communityForums": { "message": "Explore Bitwarden community forums" @@ -728,7 +728,7 @@ "message": "Change the application's colour theme." }, "themeDescAlt": { - "message": "Change the application's color theme. Applies to all logged in accounts." + "message": "Change the application's colour theme. Applies to all logged in accounts." }, "dark": { "message": "Dark", @@ -1165,7 +1165,7 @@ "message": "Show a recognizable image next to each login." }, "faviconDescAlt": { - "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + "message": "Show a recognisable image next to each login. Applies to all logged in accounts." }, "enableBadgeCounter": { "message": "Show badge counter" @@ -1730,7 +1730,7 @@ "message": "An organization policy is affecting your ownership options." }, "personalOwnershipPolicyInEffectImports": { - "message": "An organization policy has blocked importing items into your individual vault." + "message": "An organisation policy has blocked importing items into your individual vault." }, "excludedDomains": { "message": "Excluded Domains" @@ -1990,7 +1990,7 @@ "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "updateWeakMasterPasswordWarning": { - "message": "Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password does not meet one or more of your organisation policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic Enrollment" @@ -2006,11 +2006,11 @@ "description": "Used as a message within the notification bar when no folders are found" }, "orgPermissionsUpdatedMustSetPassword": { - "message": "Your organization permissions were updated, requiring you to set a master password.", + "message": "Your organisation permissions were updated, requiring you to set a master password.", "description": "Used as a card title description on the set password page to explain why the user is there" }, "orgRequiresYouToSetPassword": { - "message": "Your organization requires you to set a master password.", + "message": "Your organisation requires you to set a master password.", "description": "Used as a card title description on the set password page to explain why the user is there" }, "verificationRequired": { @@ -2037,7 +2037,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", + "message": "Your organisation policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -2054,7 +2054,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Your organization policies have set your vault timeout action to $ACTION$.", + "message": "Your organisation policies have set your vault timeout action to $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -2111,7 +2111,7 @@ "message": "Exporting Personal Vault" }, "exportingIndividualVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organisation vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2305,7 +2305,7 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Your organization policies have turned on auto-fill on page load." + "message": "Your organisation policies have turned on auto-fill on page load." }, "howToAutofill": { "message": "How to auto-fill" @@ -2377,7 +2377,7 @@ "message": "Approve with master password" }, "ssoIdentifierRequired": { - "message": "Organization SSO identifier is required." + "message": "Organisation SSO identifier is required." }, "eu": { "message": "EU", @@ -2688,7 +2688,7 @@ "message": "Total" }, "importWarning": { - "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organisation. Do you want to proceed?", "placeholders": { "organization": { "content": "$1", @@ -3007,10 +3007,10 @@ "message": "Passkey removed" }, "unassignedItemsBannerNotice": { - "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console." + "message": "Notice: Unassigned organisation items are no longer visible in the All Vaults view and only accessible via the Admin Console." }, "unassignedItemsBannerSelfHostNotice": { - "message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console." + "message": "Notice: On May 16, 2024, unassigned organisation items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console." }, "unassignedItemsBannerCTAPartOne": { "message": "Assign these items to a collection from the", diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json index e1199857c7..4ffbb147be 100644 --- a/apps/browser/src/_locales/es/messages.json +++ b/apps/browser/src/_locales/es/messages.json @@ -3,7 +3,7 @@ "message": "Bitwarden" }, "extName": { - "message": "Bitwarden Password Manager", + "message": "Bitwarden - Administrador de contraseñas", "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { @@ -2962,27 +2962,27 @@ "description": "Label indicating the most common import formats" }, "overrideDefaultBrowserAutofillTitle": { - "message": "¿Quiere hacer de Bitwarden su gestor de contraseñas predeterminado?", + "message": "¿Hacer de Bitwarden su administrador de contraseñas predeterminado?", "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" }, "overrideDefaultBrowserAutofillDescription": { - "message": "Pasar por alto esta opción puede causar conflictos entre el menú de relleno automático de Bitwarden y el del navegador.", + "message": "Pasar por alto esta opción puede causar conflictos entre el menú de autocompletar de Bitwarden y el de tu navegador.", "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" }, "overrideDefaultBrowserAutoFillSettings": { - "message": "Hacer de Bitwarden su gestor de contraseñas predeterminado", + "message": "Hacer de Bitwarden tu administrador de contraseñas predeterminado", "description": "Label for the setting that allows overriding the default browser autofill settings" }, "privacyPermissionAdditionNotGrantedTitle": { - "message": "No se pudo establecer Bitwarden como el gestor de contraseñas predeterminado", + "message": "No se puede establecer Bitwarden como el administrador de contraseñas predeterminado", "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" }, "privacyPermissionAdditionNotGrantedDescription": { - "message": "Debe otorgar los permisos de privacidad del navegador a Bitwarden para establecerlo como gestor de contraseñas predeterminado.", + "message": "Debes otorgar permisos de privacidad del navegador a Bitwarden para establecerlo como administrador de contraseñas predeterminado.", "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" }, "makeDefault": { - "message": "Predeterminar", + "message": "Establecer como predeterminado", "description": "Button text for the setting that allows overriding the default browser autofill settings" }, "saveCipherAttemptSuccess": { @@ -2998,7 +2998,7 @@ "description": "Notification message for when saving credentials has failed." }, "success": { - "message": "Success" + "message": "Éxito" }, "removePasskey": { "message": "Eliminar passkey" @@ -3013,20 +3013,20 @@ "message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console." }, "unassignedItemsBannerCTAPartOne": { - "message": "Assign these items to a collection from the", + "message": "Asignar estos elementos a una colección de", "description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible." }, "unassignedItemsBannerCTAPartTwo": { - "message": "to make them visible.", + "message": "para hcerlos visibles.", "description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible." }, "adminConsole": { - "message": "Admin Console" + "message": "Consola de administrador" }, "errorAssigningTargetCollection": { - "message": "Error assigning target collection." + "message": "Error al asignar la colección de destino." }, "errorAssigningTargetFolder": { - "message": "Error assigning target folder." + "message": "Error al asignar la carpeta de destino." } } diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index c167d89006..6ffbf522d3 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -173,10 +173,10 @@ "message": "Keisti pagrindinį slaptažodį" }, "continueToWebApp": { - "message": "Continue to web app?" + "message": "Tęsti į žiniatinklio programėlę?" }, "changeMasterPasswordOnWebConfirmation": { - "message": "You can change your master password on the Bitwarden web app." + "message": "Pagrindinį slaptažodį galite pakeisti „Bitwarden“ žiniatinklio programėlėje." }, "fingerprintPhrase": { "message": "Pirštų atspaudų frazė", @@ -2998,7 +2998,7 @@ "description": "Notification message for when saving credentials has failed." }, "success": { - "message": "Success" + "message": "Sėkmė" }, "removePasskey": { "message": "Pašalinti slaptaraktį" @@ -3007,26 +3007,26 @@ "message": "Pašalintas slaptaraktis" }, "unassignedItemsBannerNotice": { - "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console." + "message": "Pranešimas: nepriskirti organizacijos elementai nebėra matomi peržiūros rodinyje Visi saugyklos ir yra pasiekiami tik per Administratoriaus konsolę." }, "unassignedItemsBannerSelfHostNotice": { - "message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console." + "message": "Pranešimas: 2024 m. gegužės 16 d. nepriskirti organizacijos elementai nebėra matomi peržiūros rodinyje Visi saugyklos ir yra pasiekiami tik per Administratoriaus konsolę." }, "unassignedItemsBannerCTAPartOne": { - "message": "Assign these items to a collection from the", + "message": "Priskirkite šiuos elementus kolekcijai iš", "description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible." }, "unassignedItemsBannerCTAPartTwo": { - "message": "to make them visible.", + "message": ", kad jie būtų matomi.", "description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible." }, "adminConsole": { - "message": "Admin Console" + "message": "Administratoriaus konsolės" }, "errorAssigningTargetCollection": { - "message": "Error assigning target collection." + "message": "Klaida priskiriant tikslinę kolekciją." }, "errorAssigningTargetFolder": { - "message": "Error assigning target folder." + "message": "Klaida priskiriant tikslinį aplanką." } } diff --git a/apps/browser/src/auth/background/service-factories/device-trust-service.factory.ts b/apps/browser/src/auth/background/service-factories/device-trust-service.factory.ts index 106bcbcf72..42a8232c3e 100644 --- a/apps/browser/src/auth/background/service-factories/device-trust-service.factory.ts +++ b/apps/browser/src/auth/background/service-factories/device-trust-service.factory.ts @@ -34,6 +34,7 @@ import { KeyGenerationServiceInitOptions, keyGenerationServiceFactory, } from "../../../platform/background/service-factories/key-generation-service.factory"; +import { logServiceFactory } from "../../../platform/background/service-factories/log-service.factory"; import { PlatformUtilsServiceInitOptions, platformUtilsServiceFactory, @@ -88,6 +89,7 @@ export function deviceTrustServiceFactory( await stateProviderFactory(cache, opts), await secureStorageServiceFactory(cache, opts), await userDecryptionOptionsServiceFactory(cache, opts), + await logServiceFactory(cache, opts), ), ); } diff --git a/apps/browser/src/auth/background/service-factories/master-password-service.factory.ts b/apps/browser/src/auth/background/service-factories/master-password-service.factory.ts index a2f9052a3f..37fcf789ff 100644 --- a/apps/browser/src/auth/background/service-factories/master-password-service.factory.ts +++ b/apps/browser/src/auth/background/service-factories/master-password-service.factory.ts @@ -4,20 +4,35 @@ import { } from "@bitwarden/common/auth/abstractions/master-password.service.abstraction"; import { MasterPasswordService } from "@bitwarden/common/auth/services/master-password/master-password.service"; +import { + encryptServiceFactory, + EncryptServiceInitOptions, +} from "../../../platform/background/service-factories/encrypt-service.factory"; import { CachedServices, factory, FactoryOptions, } from "../../../platform/background/service-factories/factory-options"; +import { + keyGenerationServiceFactory, + KeyGenerationServiceInitOptions, +} from "../../../platform/background/service-factories/key-generation-service.factory"; import { stateProviderFactory, StateProviderInitOptions, } from "../../../platform/background/service-factories/state-provider.factory"; +import { + stateServiceFactory, + StateServiceInitOptions, +} from "../../../platform/background/service-factories/state-service.factory"; type MasterPasswordServiceFactoryOptions = FactoryOptions; export type MasterPasswordServiceInitOptions = MasterPasswordServiceFactoryOptions & - StateProviderInitOptions; + StateProviderInitOptions & + StateServiceInitOptions & + KeyGenerationServiceInitOptions & + EncryptServiceInitOptions; export function internalMasterPasswordServiceFactory( cache: { masterPasswordService?: InternalMasterPasswordServiceAbstraction } & CachedServices, @@ -27,7 +42,13 @@ export function internalMasterPasswordServiceFactory( cache, "masterPasswordService", opts, - async () => new MasterPasswordService(await stateProviderFactory(cache, opts)), + async () => + new MasterPasswordService( + await stateProviderFactory(cache, opts), + await stateServiceFactory(cache, opts), + await keyGenerationServiceFactory(cache, opts), + await encryptServiceFactory(cache, opts), + ), ); } diff --git a/apps/browser/src/auth/background/service-factories/pin-crypto-service.factory.ts b/apps/browser/src/auth/background/service-factories/pin-crypto-service.factory.ts deleted file mode 100644 index db16245f67..0000000000 --- a/apps/browser/src/auth/background/service-factories/pin-crypto-service.factory.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { PinCryptoServiceAbstraction, PinCryptoService } from "@bitwarden/auth/common"; - -import { - VaultTimeoutSettingsServiceInitOptions, - vaultTimeoutSettingsServiceFactory, -} from "../../../background/service-factories/vault-timeout-settings-service.factory"; -import { - CryptoServiceInitOptions, - cryptoServiceFactory, -} from "../../../platform/background/service-factories/crypto-service.factory"; -import { - FactoryOptions, - CachedServices, - factory, -} from "../../../platform/background/service-factories/factory-options"; -import { - LogServiceInitOptions, - logServiceFactory, -} from "../../../platform/background/service-factories/log-service.factory"; -import { - StateServiceInitOptions, - stateServiceFactory, -} from "../../../platform/background/service-factories/state-service.factory"; - -import { KdfConfigServiceInitOptions, kdfConfigServiceFactory } from "./kdf-config-service.factory"; - -type PinCryptoServiceFactoryOptions = FactoryOptions; - -export type PinCryptoServiceInitOptions = PinCryptoServiceFactoryOptions & - StateServiceInitOptions & - CryptoServiceInitOptions & - VaultTimeoutSettingsServiceInitOptions & - LogServiceInitOptions & - KdfConfigServiceInitOptions; - -export function pinCryptoServiceFactory( - cache: { pinCryptoService?: PinCryptoServiceAbstraction } & CachedServices, - opts: PinCryptoServiceInitOptions, -): Promise { - return factory( - cache, - "pinCryptoService", - opts, - async () => - new PinCryptoService( - await stateServiceFactory(cache, opts), - await cryptoServiceFactory(cache, opts), - await vaultTimeoutSettingsServiceFactory(cache, opts), - await logServiceFactory(cache, opts), - await kdfConfigServiceFactory(cache, opts), - ), - ); -} diff --git a/apps/browser/src/auth/background/service-factories/pin-service.factory.ts b/apps/browser/src/auth/background/service-factories/pin-service.factory.ts new file mode 100644 index 0000000000..f15e7fe762 --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/pin-service.factory.ts @@ -0,0 +1,74 @@ +import { PinServiceAbstraction, PinService } from "@bitwarden/auth/common"; + +import { + CryptoFunctionServiceInitOptions, + cryptoFunctionServiceFactory, +} from "../../../platform/background/service-factories/crypto-function-service.factory"; +import { + EncryptServiceInitOptions, + encryptServiceFactory, +} from "../../../platform/background/service-factories/encrypt-service.factory"; +import { + FactoryOptions, + CachedServices, + factory, +} from "../../../platform/background/service-factories/factory-options"; +import { + KeyGenerationServiceInitOptions, + keyGenerationServiceFactory, +} from "../../../platform/background/service-factories/key-generation-service.factory"; +import { + LogServiceInitOptions, + logServiceFactory, +} from "../../../platform/background/service-factories/log-service.factory"; +import { + StateProviderInitOptions, + stateProviderFactory, +} from "../../../platform/background/service-factories/state-provider.factory"; +import { + StateServiceInitOptions, + stateServiceFactory, +} from "../../../platform/background/service-factories/state-service.factory"; + +import { AccountServiceInitOptions, accountServiceFactory } from "./account-service.factory"; +import { KdfConfigServiceInitOptions, kdfConfigServiceFactory } from "./kdf-config-service.factory"; +import { + MasterPasswordServiceInitOptions, + masterPasswordServiceFactory, +} from "./master-password-service.factory"; + +type PinServiceFactoryOptions = FactoryOptions; + +export type PinServiceInitOptions = PinServiceFactoryOptions & + AccountServiceInitOptions & + CryptoFunctionServiceInitOptions & + EncryptServiceInitOptions & + KdfConfigServiceInitOptions & + KeyGenerationServiceInitOptions & + LogServiceInitOptions & + MasterPasswordServiceInitOptions & + StateProviderInitOptions & + StateServiceInitOptions; + +export function pinServiceFactory( + cache: { pinService?: PinServiceAbstraction } & CachedServices, + opts: PinServiceInitOptions, +): Promise { + return factory( + cache, + "pinService", + opts, + async () => + new PinService( + await accountServiceFactory(cache, opts), + await cryptoFunctionServiceFactory(cache, opts), + await encryptServiceFactory(cache, opts), + await kdfConfigServiceFactory(cache, opts), + await keyGenerationServiceFactory(cache, opts), + await logServiceFactory(cache, opts), + await masterPasswordServiceFactory(cache, opts), + await stateProviderFactory(cache, opts), + await stateServiceFactory(cache, opts), + ), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/user-verification-service.factory.ts b/apps/browser/src/auth/background/service-factories/user-verification-service.factory.ts index d6f9ce7624..5b5a425045 100644 --- a/apps/browser/src/auth/background/service-factories/user-verification-service.factory.ts +++ b/apps/browser/src/auth/background/service-factories/user-verification-service.factory.ts @@ -37,7 +37,7 @@ import { internalMasterPasswordServiceFactory, MasterPasswordServiceInitOptions, } from "./master-password-service.factory"; -import { PinCryptoServiceInitOptions, pinCryptoServiceFactory } from "./pin-crypto-service.factory"; +import { PinServiceInitOptions, pinServiceFactory } from "./pin-service.factory"; import { userDecryptionOptionsServiceFactory, UserDecryptionOptionsServiceInitOptions, @@ -57,7 +57,7 @@ export type UserVerificationServiceInitOptions = UserVerificationServiceFactoryO I18nServiceInitOptions & UserVerificationApiServiceInitOptions & UserDecryptionOptionsServiceInitOptions & - PinCryptoServiceInitOptions & + PinServiceInitOptions & LogServiceInitOptions & VaultTimeoutSettingsServiceInitOptions & PlatformUtilsServiceInitOptions & @@ -80,7 +80,7 @@ export function userVerificationServiceFactory( await i18nServiceFactory(cache, opts), await userVerificationApiServiceFactory(cache, opts), await userDecryptionOptionsServiceFactory(cache, opts), - await pinCryptoServiceFactory(cache, opts), + await pinServiceFactory(cache, opts), await logServiceFactory(cache, opts), await vaultTimeoutSettingsServiceFactory(cache, opts), await platformUtilsServiceFactory(cache, opts), diff --git a/apps/browser/src/auth/popup/components/set-pin.component.html b/apps/browser/src/auth/popup/components/set-pin.component.html index aff87b5371..50e7aca75f 100644 --- a/apps/browser/src/auth/popup/components/set-pin.component.html +++ b/apps/browser/src/auth/popup/components/set-pin.component.html @@ -12,8 +12,16 @@ -