mirror of
https://github.com/bitwarden/browser
synced 2025-12-12 22:33:35 +00:00
* PM-8112 - Update classes of existing registration icons * PM-8112 - Add new icons * PM-8112 - Export icons from libs/auth * PM-8112 - RegistrationStart - Add new user icon as page icon * PM-8112 - Replace RegistrationCheckEmailIcon with new icon so it displays properly * PM-8112 - RegistrationFinish - Add new icon across clients * PM-8112 - Registration start comp - update page icon and page title on state change to match figma * PM-8112 - RegistrationFinish - adding most of framework for changing page title & subtitle when an org invite is in state. * PM-8112 - Add joinOrganizationName to all clients translations * PM-8112 - RegistrationFinish - Remove default page title & subtitle and let onInit logic figure out what to set based on flows. * PM-8112 - RegistrationStart - Fix setAnonLayoutWrapperData calls * PM-8112 - RegistrationFinish - simplify qParams init logic to make handling loading and page title and subtitle setting easier. * PM-8112 - Registration Link expired - move icon to page icon out of main content * PM-8112 - RegistrationFinish - Refactor init logic further into distinct flows. * PM-8112 - Fix icons * PM-8112 - Extension AppRoutingModule - move sign up start & finish routes under extension anon layout * PM-8112 - Fix storybook * PM-8112 - Clean up unused prop * PM-8112 - RegistrationLockAltIcon tweaks * PM-8112 - Update icons to have proper styling * PM-8112 - RegistrationUserAddIcon - remove unnecessary svg class * PM-8112 - Fix icons
251 lines
7.3 KiB
TypeScript
251 lines
7.3 KiB
TypeScript
import { NgModule } from "@angular/core";
|
|
import { RouterModule, Routes } from "@angular/router";
|
|
|
|
import { EnvironmentSelectorComponent } from "@bitwarden/angular/auth/components/environment-selector.component";
|
|
import { unauthUiRefreshSwap } from "@bitwarden/angular/auth/functions/unauth-ui-refresh-route-swap";
|
|
import {
|
|
authGuard,
|
|
lockGuard,
|
|
redirectGuard,
|
|
tdeDecryptionRequiredGuard,
|
|
unauthGuardFn,
|
|
} from "@bitwarden/angular/auth/guards";
|
|
import { canAccessFeature } from "@bitwarden/angular/platform/guard/feature-flag.guard";
|
|
import { extensionRefreshRedirect } from "@bitwarden/angular/utils/extension-refresh-redirect";
|
|
import {
|
|
AnonLayoutWrapperComponent,
|
|
AnonLayoutWrapperData,
|
|
LockIcon,
|
|
LockV2Component,
|
|
PasswordHintComponent,
|
|
RegistrationFinishComponent,
|
|
RegistrationLockAltIcon,
|
|
RegistrationStartComponent,
|
|
RegistrationStartSecondaryComponent,
|
|
RegistrationStartSecondaryComponentData,
|
|
RegistrationUserAddIcon,
|
|
SetPasswordJitComponent,
|
|
UserLockIcon,
|
|
} from "@bitwarden/auth/angular";
|
|
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
|
|
|
|
import { twofactorRefactorSwap } from "../../../../libs/angular/src/utils/two-factor-component-refactor-route-swap";
|
|
import { AccessibilityCookieComponent } from "../auth/accessibility-cookie.component";
|
|
import { maxAccountsGuardFn } from "../auth/guards/max-accounts.guard";
|
|
import { HintComponent } from "../auth/hint.component";
|
|
import { LockComponent } from "../auth/lock.component";
|
|
import { LoginDecryptionOptionsComponent } from "../auth/login/login-decryption-options/login-decryption-options.component";
|
|
import { LoginViaAuthRequestComponent } from "../auth/login/login-via-auth-request.component";
|
|
import { LoginComponent } from "../auth/login/login.component";
|
|
import { RegisterComponent } from "../auth/register.component";
|
|
import { RemovePasswordComponent } from "../auth/remove-password.component";
|
|
import { SetPasswordComponent } from "../auth/set-password.component";
|
|
import { SsoComponent } from "../auth/sso.component";
|
|
import { TwoFactorAuthComponent } from "../auth/two-factor-auth.component";
|
|
import { TwoFactorComponent } from "../auth/two-factor.component";
|
|
import { UpdateTempPasswordComponent } from "../auth/update-temp-password.component";
|
|
import { VaultComponent } from "../vault/app/vault/vault.component";
|
|
|
|
import { SendComponent } from "./tools/send/send.component";
|
|
|
|
/**
|
|
* Data properties acceptable for use in route objects in the desktop
|
|
*/
|
|
export interface RouteDataProperties {
|
|
// For any new route data properties, add them here.
|
|
// then assert that the data object satisfies this interface in the route object.
|
|
}
|
|
|
|
const routes: Routes = [
|
|
{
|
|
path: "",
|
|
pathMatch: "full",
|
|
children: [], // Children lets us have an empty component.
|
|
canActivate: [redirectGuard({ loggedIn: "/vault", loggedOut: "/login", locked: "/lock" })],
|
|
},
|
|
{
|
|
path: "lock",
|
|
component: LockComponent,
|
|
canActivate: [lockGuard()],
|
|
canMatch: [extensionRefreshRedirect("/lockV2")],
|
|
},
|
|
{
|
|
path: "login",
|
|
component: LoginComponent,
|
|
canActivate: [maxAccountsGuardFn()],
|
|
},
|
|
{
|
|
path: "login-with-device",
|
|
component: LoginViaAuthRequestComponent,
|
|
},
|
|
{
|
|
path: "admin-approval-requested",
|
|
component: LoginViaAuthRequestComponent,
|
|
},
|
|
...twofactorRefactorSwap(
|
|
TwoFactorComponent,
|
|
AnonLayoutWrapperComponent,
|
|
{
|
|
path: "2fa",
|
|
},
|
|
{
|
|
path: "2fa",
|
|
component: AnonLayoutWrapperComponent,
|
|
children: [
|
|
{
|
|
path: "",
|
|
component: TwoFactorAuthComponent,
|
|
canActivate: [unauthGuardFn()],
|
|
},
|
|
],
|
|
},
|
|
),
|
|
{
|
|
path: "login-initiated",
|
|
component: LoginDecryptionOptionsComponent,
|
|
canActivate: [tdeDecryptionRequiredGuard()],
|
|
},
|
|
{ path: "register", component: RegisterComponent },
|
|
{
|
|
path: "vault",
|
|
component: VaultComponent,
|
|
canActivate: [authGuard],
|
|
},
|
|
{ path: "accessibility-cookie", component: AccessibilityCookieComponent },
|
|
{ path: "set-password", component: SetPasswordComponent },
|
|
{ path: "sso", component: SsoComponent },
|
|
{
|
|
path: "send",
|
|
component: SendComponent,
|
|
canActivate: [authGuard],
|
|
},
|
|
{
|
|
path: "update-temp-password",
|
|
component: UpdateTempPasswordComponent,
|
|
canActivate: [authGuard],
|
|
},
|
|
{
|
|
path: "remove-password",
|
|
component: RemovePasswordComponent,
|
|
canActivate: [authGuard],
|
|
},
|
|
...unauthUiRefreshSwap(
|
|
HintComponent,
|
|
AnonLayoutWrapperComponent,
|
|
{
|
|
path: "hint",
|
|
canActivate: [unauthGuardFn()],
|
|
},
|
|
{
|
|
path: "",
|
|
children: [
|
|
{
|
|
path: "hint",
|
|
canActivate: [unauthGuardFn()],
|
|
data: {
|
|
pageTitle: {
|
|
key: "requestPasswordHint",
|
|
},
|
|
pageSubtitle: {
|
|
key: "enterYourAccountEmailAddressAndYourPasswordHintWillBeSentToYou",
|
|
},
|
|
pageIcon: UserLockIcon,
|
|
} satisfies AnonLayoutWrapperData,
|
|
children: [
|
|
{ path: "", component: PasswordHintComponent },
|
|
{
|
|
path: "",
|
|
component: EnvironmentSelectorComponent,
|
|
outlet: "environment-selector",
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
),
|
|
{
|
|
path: "",
|
|
component: AnonLayoutWrapperComponent,
|
|
children: [
|
|
{
|
|
path: "signup",
|
|
canActivate: [canAccessFeature(FeatureFlag.EmailVerification), unauthGuardFn()],
|
|
data: {
|
|
pageIcon: RegistrationUserAddIcon,
|
|
pageTitle: {
|
|
key: "createAccount",
|
|
},
|
|
} satisfies AnonLayoutWrapperData,
|
|
children: [
|
|
{
|
|
path: "",
|
|
component: RegistrationStartComponent,
|
|
},
|
|
{
|
|
path: "",
|
|
component: RegistrationStartSecondaryComponent,
|
|
outlet: "secondary",
|
|
data: {
|
|
loginRoute: "/login",
|
|
} satisfies RegistrationStartSecondaryComponentData,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: "finish-signup",
|
|
canActivate: [canAccessFeature(FeatureFlag.EmailVerification), unauthGuardFn()],
|
|
data: {
|
|
pageIcon: RegistrationLockAltIcon,
|
|
} satisfies AnonLayoutWrapperData,
|
|
children: [
|
|
{
|
|
path: "",
|
|
component: RegistrationFinishComponent,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: "lockV2",
|
|
canActivate: [canAccessFeature(FeatureFlag.ExtensionRefresh), lockGuard()],
|
|
data: {
|
|
pageIcon: LockIcon,
|
|
pageTitle: {
|
|
key: "yourVaultIsLockedV2",
|
|
},
|
|
showReadonlyHostname: true,
|
|
} satisfies AnonLayoutWrapperData,
|
|
children: [
|
|
{
|
|
path: "",
|
|
component: LockV2Component,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: "set-password-jit",
|
|
canActivate: [canAccessFeature(FeatureFlag.EmailVerification)],
|
|
component: SetPasswordJitComponent,
|
|
data: {
|
|
pageTitle: {
|
|
key: "joinOrganization",
|
|
},
|
|
pageSubtitle: {
|
|
key: "finishJoiningThisOrganizationBySettingAMasterPassword",
|
|
},
|
|
} satisfies AnonLayoutWrapperData,
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
@NgModule({
|
|
imports: [
|
|
RouterModule.forRoot(routes, {
|
|
useHash: true,
|
|
/*enableTracing: true,*/
|
|
}),
|
|
],
|
|
exports: [RouterModule],
|
|
})
|
|
export class AppRoutingModule {}
|