1
0
mirror of https://github.com/bitwarden/browser synced 2026-01-04 01:23:57 +00:00
Files
browser/apps/web/src/app/admin-console/organizations/organization-routing.module.ts
Thomas Rittson 3e7f8f5384 [AC-2676] Remove paging logic from GroupsComponent (#9705)
* remove infinite scroll, use virtual scroll instead
* use TableDataSource for search
* allow sorting by name
* replacing PlatformUtilsService.showToast with ToastService
* misc FIXMEs
2024-07-04 06:04:16 +10:00

106 lines
3.5 KiB
TypeScript

import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
import { AuthGuard } from "@bitwarden/angular/auth/guards";
import { featureFlaggedRoute } from "@bitwarden/angular/platform/utils/feature-flagged-route";
import {
canAccessOrgAdmin,
canAccessGroupsTab,
canAccessMembersTab,
canAccessVaultTab,
canAccessReportingTab,
canAccessSettingsTab,
} from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
import { organizationPermissionsGuard } from "../../admin-console/organizations/guards/org-permissions.guard";
import { organizationRedirectGuard } from "../../admin-console/organizations/guards/org-redirect.guard";
import { OrganizationLayoutComponent } from "../../admin-console/organizations/layouts/organization-layout.component";
import { GroupsComponent } from "../../admin-console/organizations/manage/groups.component";
import { NewGroupsComponent } from "../../admin-console/organizations/manage/new-groups.component";
import { deepLinkGuard } from "../../auth/guards/deep-link.guard";
import { VaultModule } from "../../vault/org-vault/vault.module";
const routes: Routes = [
{
path: ":organizationId",
component: OrganizationLayoutComponent,
canActivate: [deepLinkGuard(), AuthGuard, organizationPermissionsGuard(canAccessOrgAdmin)],
children: [
{
path: "",
pathMatch: "full",
canActivate: [organizationRedirectGuard(getOrganizationRoute)],
children: [], // This is required to make the auto redirect work, },
},
{
path: "vault",
loadChildren: () => VaultModule,
},
{
path: "settings",
loadChildren: () =>
import("./settings/organization-settings.module").then(
(m) => m.OrganizationSettingsModule,
),
},
{
path: "members",
loadChildren: () => import("./members").then((m) => m.MembersModule),
},
...featureFlaggedRoute({
defaultComponent: GroupsComponent,
flaggedComponent: NewGroupsComponent,
featureFlag: FeatureFlag.GroupsComponentRefactor,
routeOptions: {
path: "groups",
canActivate: [organizationPermissionsGuard(canAccessGroupsTab)],
data: {
titleId: "groups",
},
},
}),
{
path: "reporting",
loadChildren: () =>
import("../organizations/reporting/organization-reporting.module").then(
(m) => m.OrganizationReportingModule,
),
},
{
path: "billing",
loadChildren: () =>
import("../../billing/organizations/organization-billing.module").then(
(m) => m.OrganizationBillingModule,
),
},
],
},
];
function getOrganizationRoute(organization: Organization): string {
if (canAccessVaultTab(organization)) {
return "vault";
}
if (canAccessMembersTab(organization)) {
return "members";
}
if (canAccessGroupsTab(organization)) {
return "groups";
}
if (canAccessReportingTab(organization)) {
return "reporting";
}
if (canAccessSettingsTab(organization)) {
return "settings";
}
return undefined;
}
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class OrganizationsRoutingModule {}