mirror of
https://github.com/bitwarden/browser
synced 2026-02-13 15:03:26 +00:00
Merge branch 'main' into ps/extension-refresh
This commit is contained in:
3
apps/web/.vscode/settings.json
vendored
3
apps/web/.vscode/settings.json
vendored
@@ -2,5 +2,6 @@
|
||||
"eslint.options": {
|
||||
"ignorePath": "${workspaceFolder}/../../../.eslintIgnore"
|
||||
},
|
||||
"prettier.ignorePath": "${workspaceFolder}/../../../.prettierignore"
|
||||
"prettier.ignorePath": "${workspaceFolder}/../../../.prettierignore",
|
||||
"cSpell.words": ["bitwarden"]
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.se
|
||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
||||
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
||||
import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
|
||||
import { BiometricStateService } from "@bitwarden/common/platform/biometrics/biometric-state.service";
|
||||
import { StateEventRunnerService } from "@bitwarden/common/platform/state";
|
||||
import { SyncService } from "@bitwarden/common/platform/sync";
|
||||
import { UserId } from "@bitwarden/common/types/guid";
|
||||
@@ -30,6 +29,7 @@ import { CollectionService } from "@bitwarden/common/vault/abstractions/collecti
|
||||
import { InternalFolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
|
||||
import { DialogService, ToastOptions, ToastService } from "@bitwarden/components";
|
||||
import { PasswordGenerationServiceAbstraction } from "@bitwarden/generator-legacy";
|
||||
import { BiometricStateService } from "@bitwarden/key-management";
|
||||
|
||||
import { PolicyListService } from "./admin-console/core/policy-list.service";
|
||||
import {
|
||||
|
||||
@@ -4,23 +4,23 @@ import { APP_INITIALIZER, NgModule, Optional, SkipSelf } from "@angular/core";
|
||||
import { OrganizationUserApiService } from "@bitwarden/admin-console/common";
|
||||
import { SafeProvider, safeProvider } from "@bitwarden/angular/platform/utils/safe-provider";
|
||||
import {
|
||||
SECURE_STORAGE,
|
||||
LOCALES_DIRECTORY,
|
||||
SYSTEM_LANGUAGE,
|
||||
MEMORY_STORAGE,
|
||||
OBSERVABLE_MEMORY_STORAGE,
|
||||
OBSERVABLE_DISK_STORAGE,
|
||||
OBSERVABLE_DISK_LOCAL_STORAGE,
|
||||
WINDOW,
|
||||
SafeInjectionToken,
|
||||
DEFAULT_VAULT_TIMEOUT,
|
||||
CLIENT_TYPE,
|
||||
DEFAULT_VAULT_TIMEOUT,
|
||||
LOCALES_DIRECTORY,
|
||||
MEMORY_STORAGE,
|
||||
OBSERVABLE_DISK_LOCAL_STORAGE,
|
||||
OBSERVABLE_DISK_STORAGE,
|
||||
OBSERVABLE_MEMORY_STORAGE,
|
||||
SECURE_STORAGE,
|
||||
SYSTEM_LANGUAGE,
|
||||
SafeInjectionToken,
|
||||
WINDOW,
|
||||
} from "@bitwarden/angular/services/injection-tokens";
|
||||
import { JslibServicesModule } from "@bitwarden/angular/services/jslib-services.module";
|
||||
import { ModalService as ModalServiceAbstraction } from "@bitwarden/angular/services/modal.service";
|
||||
import {
|
||||
SetPasswordJitService,
|
||||
RegistrationFinishService as RegistrationFinishServiceAbstraction,
|
||||
SetPasswordJitService,
|
||||
} from "@bitwarden/auth/angular";
|
||||
import { InternalUserDecryptionOptionsServiceAbstraction } from "@bitwarden/auth/common";
|
||||
import { ApiService } from "@bitwarden/common/abstractions/api.service";
|
||||
@@ -41,7 +41,6 @@ import { I18nService as I18nServiceAbstraction } from "@bitwarden/common/platfor
|
||||
import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
|
||||
import { PlatformUtilsService as PlatformUtilsServiceAbstraction } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
||||
import { AbstractStorageService } from "@bitwarden/common/platform/abstractions/storage.service";
|
||||
import { BiometricsService } from "@bitwarden/common/platform/biometrics/biometric.service";
|
||||
import { ThemeType } from "@bitwarden/common/platform/enums";
|
||||
import { AppIdService as DefaultAppIdService } from "@bitwarden/common/platform/services/app-id.service";
|
||||
import { MemoryStorageService } from "@bitwarden/common/platform/services/memory-storage.service";
|
||||
@@ -59,13 +58,14 @@ import {
|
||||
ThemeStateService,
|
||||
} from "@bitwarden/common/platform/theming/theme-state.service";
|
||||
import { VaultTimeout, VaultTimeoutStringType } from "@bitwarden/common/types/vault-timeout.type";
|
||||
import { BiometricsService } from "@bitwarden/key-management";
|
||||
|
||||
import { PolicyListService } from "../admin-console/core/policy-list.service";
|
||||
import { WebSetPasswordJitService, WebRegistrationFinishService } from "../auth";
|
||||
import { WebRegistrationFinishService, WebSetPasswordJitService } from "../auth";
|
||||
import { AcceptOrganizationInviteService } from "../auth/organization-invite/accept-organization.service";
|
||||
import { HtmlStorageService } from "../core/html-storage.service";
|
||||
import { I18nService } from "../core/i18n.service";
|
||||
import { WebBiometricsService } from "../platform/web-biometric.service";
|
||||
import { WebBiometricsService } from "../key-management/web-biometric.service";
|
||||
import { WebEnvironmentService } from "../platform/web-environment.service";
|
||||
import { WebMigrationRunner } from "../platform/web-migration-runner";
|
||||
import { WebStorageServiceProvider } from "../platform/web-storage-service.provider";
|
||||
|
||||
@@ -15,9 +15,15 @@ import {
|
||||
/**
|
||||
* Data properties acceptable for use in route objects (see usage in oss-routing.module.ts for example)
|
||||
*/
|
||||
export interface DataProperties {
|
||||
titleId?: string; // sets the title of the current HTML document (shows in browser tab)
|
||||
doNotSaveUrl?: boolean; // choose to not keep track of the previous URL in memory
|
||||
export interface RouteDataProperties {
|
||||
/**
|
||||
* Title of the current HTML document (shows in browser tab)
|
||||
*/
|
||||
titleId?: string;
|
||||
/**
|
||||
* doNotSaveUrl - choose to not keep track of the previous URL in memory in the RouterService
|
||||
*/
|
||||
doNotSaveUrl?: boolean;
|
||||
}
|
||||
|
||||
const DEEP_LINK_REDIRECT_URL = new KeyDefinition(ROUTER_DISK, "deepLinkRedirectUrl", {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { BiometricsService } from "@bitwarden/common/platform/biometrics/biometric.service";
|
||||
import { BiometricsService } from "@bitwarden/key-management";
|
||||
|
||||
export class WebBiometricsService extends BiometricsService {
|
||||
async supportsBiometric(): Promise<boolean> {
|
||||
@@ -61,7 +61,7 @@ import { VerifyEmailTokenComponent } from "./auth/verify-email-token.component";
|
||||
import { VerifyRecoverDeleteComponent } from "./auth/verify-recover-delete.component";
|
||||
import { SponsoredFamiliesComponent } from "./billing/settings/sponsored-families.component";
|
||||
import { EnvironmentSelectorComponent } from "./components/environment-selector/environment-selector.component";
|
||||
import { DataProperties } from "./core";
|
||||
import { RouteDataProperties } from "./core";
|
||||
import { FrontendLayoutComponent } from "./layouts/frontend-layout.component";
|
||||
import { UserLayoutComponent } from "./layouts/user-layout.component";
|
||||
import { RequestSMAccessComponent } from "./secrets-manager/secrets-manager-landing/request-sm-access.component";
|
||||
@@ -79,7 +79,7 @@ const routes: Routes = [
|
||||
{
|
||||
path: "",
|
||||
component: FrontendLayoutComponent,
|
||||
data: { doNotSaveUrl: true } satisfies DataProperties,
|
||||
data: { doNotSaveUrl: true } satisfies RouteDataProperties,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
@@ -90,17 +90,17 @@ const routes: Routes = [
|
||||
{
|
||||
path: "login-with-device",
|
||||
component: LoginViaAuthRequestComponent,
|
||||
data: { titleId: "loginWithDevice" } satisfies DataProperties,
|
||||
data: { titleId: "loginWithDevice" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "login-with-passkey",
|
||||
component: LoginViaWebAuthnComponent,
|
||||
data: { titleId: "loginWithPasskey" } satisfies DataProperties,
|
||||
data: { titleId: "loginWithPasskey" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "admin-approval-requested",
|
||||
component: LoginViaAuthRequestComponent,
|
||||
data: { titleId: "adminApprovalRequested" } satisfies DataProperties,
|
||||
data: { titleId: "adminApprovalRequested" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "login-initiated",
|
||||
@@ -111,7 +111,7 @@ const routes: Routes = [
|
||||
path: "register",
|
||||
component: TrialInitiationComponent,
|
||||
canActivate: [unauthGuardFn()],
|
||||
data: { titleId: "createAccount" } satisfies DataProperties,
|
||||
data: { titleId: "createAccount" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "trial",
|
||||
@@ -121,20 +121,23 @@ const routes: Routes = [
|
||||
{
|
||||
path: "set-password",
|
||||
component: SetPasswordComponent,
|
||||
data: { titleId: "setMasterPassword" } satisfies DataProperties,
|
||||
data: { titleId: "setMasterPassword" } satisfies RouteDataProperties,
|
||||
},
|
||||
{ path: "verify-email", component: VerifyEmailTokenComponent },
|
||||
{
|
||||
path: "accept-organization",
|
||||
canActivate: [deepLinkGuard()],
|
||||
component: AcceptOrganizationComponent,
|
||||
data: { titleId: "joinOrganization", doNotSaveUrl: false } satisfies DataProperties,
|
||||
data: { titleId: "joinOrganization", doNotSaveUrl: false } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "accept-families-for-enterprise",
|
||||
component: AcceptFamilySponsorshipComponent,
|
||||
canActivate: [deepLinkGuard()],
|
||||
data: { titleId: "acceptFamilySponsorship", doNotSaveUrl: false } satisfies DataProperties,
|
||||
data: {
|
||||
titleId: "acceptFamilySponsorship",
|
||||
doNotSaveUrl: false,
|
||||
} satisfies RouteDataProperties,
|
||||
},
|
||||
{ path: "recover", pathMatch: "full", redirectTo: "recover-2fa" },
|
||||
{
|
||||
@@ -147,19 +150,19 @@ const routes: Routes = [
|
||||
path: "verify-recover-delete-provider",
|
||||
component: VerifyRecoverDeleteProviderComponent,
|
||||
canActivate: [unauthGuardFn()],
|
||||
data: { titleId: "deleteAccount" } satisfies DataProperties,
|
||||
data: { titleId: "deleteAccount" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "update-temp-password",
|
||||
component: UpdateTempPasswordComponent,
|
||||
canActivate: [authGuard],
|
||||
data: { titleId: "updateTempPassword" } satisfies DataProperties,
|
||||
data: { titleId: "updateTempPassword" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "update-password",
|
||||
component: UpdatePasswordComponent,
|
||||
canActivate: [authGuard],
|
||||
data: { titleId: "updatePassword" } satisfies DataProperties,
|
||||
data: { titleId: "updatePassword" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "migrate-legacy-encryption",
|
||||
@@ -220,8 +223,10 @@ const routes: Routes = [
|
||||
{
|
||||
path: "signup",
|
||||
canActivate: [canAccessFeature(FeatureFlag.EmailVerification), unauthGuardFn()],
|
||||
data: { pageTitle: "createAccount", titleId: "createAccount" } satisfies DataProperties &
|
||||
AnonLayoutWrapperData,
|
||||
data: {
|
||||
pageTitle: "createAccount",
|
||||
titleId: "createAccount",
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
@@ -244,7 +249,7 @@ const routes: Routes = [
|
||||
pageTitle: "setAStrongPassword",
|
||||
pageSubtitle: "finishCreatingYourAccountBySettingAPassword",
|
||||
titleId: "setAStrongPassword",
|
||||
} satisfies DataProperties & AnonLayoutWrapperData,
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
@@ -257,7 +262,7 @@ const routes: Routes = [
|
||||
data: {
|
||||
pageTitle: "viewSend",
|
||||
showReadonlyHostname: true,
|
||||
} satisfies DataProperties & AnonLayoutWrapperData,
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
@@ -301,7 +306,7 @@ const routes: Routes = [
|
||||
data: {
|
||||
pageTitle: "enterpriseSingleSignOn",
|
||||
titleId: "enterpriseSingleSignOn",
|
||||
} satisfies DataProperties & AnonLayoutWrapperData,
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
@@ -362,7 +367,7 @@ const routes: Routes = [
|
||||
],
|
||||
data: {
|
||||
pageTitle: "verifyIdentity",
|
||||
} satisfies DataProperties & AnonLayoutWrapperData,
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
},
|
||||
{
|
||||
path: "recover-2fa",
|
||||
@@ -381,7 +386,7 @@ const routes: Routes = [
|
||||
data: {
|
||||
pageTitle: "recoverAccountTwoStep",
|
||||
titleId: "recoverAccountTwoStep",
|
||||
} satisfies DataProperties & AnonLayoutWrapperData,
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
},
|
||||
{
|
||||
path: "accept-emergency",
|
||||
@@ -390,7 +395,7 @@ const routes: Routes = [
|
||||
pageTitle: "emergencyAccess",
|
||||
titleId: "acceptEmergency",
|
||||
doNotSaveUrl: false,
|
||||
} satisfies DataProperties & AnonLayoutWrapperData,
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
@@ -407,7 +412,7 @@ const routes: Routes = [
|
||||
data: {
|
||||
pageTitle: "deleteAccount",
|
||||
titleId: "deleteAccount",
|
||||
} satisfies DataProperties & AnonLayoutWrapperData,
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
@@ -426,7 +431,7 @@ const routes: Routes = [
|
||||
data: {
|
||||
pageTitle: "deleteAccount",
|
||||
titleId: "deleteAccount",
|
||||
} satisfies DataProperties & AnonLayoutWrapperData,
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
@@ -441,7 +446,7 @@ const routes: Routes = [
|
||||
data: {
|
||||
pageTitle: "removeMasterPassword",
|
||||
titleId: "removeMasterPassword",
|
||||
} satisfies DataProperties & AnonLayoutWrapperData,
|
||||
} satisfies RouteDataProperties & AnonLayoutWrapperData,
|
||||
},
|
||||
{
|
||||
path: "trial-initiation",
|
||||
@@ -479,7 +484,7 @@ const routes: Routes = [
|
||||
{
|
||||
path: "sends",
|
||||
component: SendComponent,
|
||||
data: { titleId: "send" } satisfies DataProperties,
|
||||
data: { titleId: "send" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "sm-landing",
|
||||
@@ -494,7 +499,7 @@ const routes: Routes = [
|
||||
{
|
||||
path: "create-organization",
|
||||
component: CreateOrganizationComponent,
|
||||
data: { titleId: "newOrganization" } satisfies DataProperties,
|
||||
data: { titleId: "newOrganization" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "settings",
|
||||
@@ -503,12 +508,12 @@ const routes: Routes = [
|
||||
{
|
||||
path: "account",
|
||||
component: AccountComponent,
|
||||
data: { titleId: "myAccount" } satisfies DataProperties,
|
||||
data: { titleId: "myAccount" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "preferences",
|
||||
component: PreferencesComponent,
|
||||
data: { titleId: "preferences" } satisfies DataProperties,
|
||||
data: { titleId: "preferences" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "security",
|
||||
@@ -517,7 +522,7 @@ const routes: Routes = [
|
||||
{
|
||||
path: "domain-rules",
|
||||
component: DomainRulesComponent,
|
||||
data: { titleId: "domainRules" } satisfies DataProperties,
|
||||
data: { titleId: "domainRules" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "subscription",
|
||||
@@ -532,19 +537,19 @@ const routes: Routes = [
|
||||
{
|
||||
path: "",
|
||||
component: EmergencyAccessComponent,
|
||||
data: { titleId: "emergencyAccess" } satisfies DataProperties,
|
||||
data: { titleId: "emergencyAccess" } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: ":id",
|
||||
component: EmergencyAccessViewComponent,
|
||||
data: { titleId: "emergencyAccess" } satisfies DataProperties,
|
||||
data: { titleId: "emergencyAccess" } satisfies RouteDataProperties,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "sponsored-families",
|
||||
component: SponsoredFamiliesComponent,
|
||||
data: { titleId: "sponsoredFamilies" } satisfies DataProperties,
|
||||
data: { titleId: "sponsoredFamilies" } satisfies RouteDataProperties,
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -559,7 +564,7 @@ const routes: Routes = [
|
||||
import("./tools/import/import-web.component").then((mod) => mod.ImportWebComponent),
|
||||
data: {
|
||||
titleId: "importData",
|
||||
} satisfies DataProperties,
|
||||
} satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "export",
|
||||
@@ -569,12 +574,12 @@ const routes: Routes = [
|
||||
),
|
||||
data: {
|
||||
titleId: "exportVault",
|
||||
} satisfies DataProperties,
|
||||
} satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "generator",
|
||||
component: GeneratorComponent,
|
||||
data: { titleId: "generator" } satisfies DataProperties,
|
||||
data: { titleId: "generator" } satisfies RouteDataProperties,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
"@bitwarden/vault-export-ui": ["../../libs/tools/export/vault-export/vault-export-ui/src"],
|
||||
"@bitwarden/importer/core": ["../../libs/importer/src"],
|
||||
"@bitwarden/importer/ui": ["../../libs/importer/src/components"],
|
||||
"@bitwarden/key-management": ["../../libs/key-management/src"],
|
||||
"@bitwarden/platform": ["../../libs/platform/src"],
|
||||
"@bitwarden/send-ui": ["../../libs/tools/send/send-ui/src"],
|
||||
"@bitwarden/vault": ["../../libs/vault/src"],
|
||||
|
||||
Reference in New Issue
Block a user