diff --git a/jslib b/jslib index cea09a22e5..6ac6df75d7 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit cea09a22e533ef3598bb497ba0503c2fcd5b2dc1 +Subproject commit 6ac6df75d7a9bd5ea58f5d8310f1b3e34abd2bde diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index cf40fcc0aa..c8d497b798 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -91,9 +91,10 @@ import { UnauthGuardService } from './services/unauth-guard.service'; import { AuthGuardService } from 'jslib/angular/services/auth-guard.service'; -import { OrganizationUserType } from 'jslib/enums/organizationUserType'; -import { EmergencyAccessComponent } from './settings/emergency-access.component'; +import { Permissions } from 'jslib/enums/permissions'; + import { EmergencyAccessViewComponent } from './settings/emergency-access-view.component'; +import { EmergencyAccessComponent } from './settings/emergency-access.component'; const routes: Routes = [ { @@ -259,35 +260,75 @@ const routes: Routes = [ path: 'tools', component: OrgToolsComponent, canActivate: [OrganizationTypeGuardService], - data: { allowedTypes: [OrganizationUserType.Owner, OrganizationUserType.Admin] }, + data: { permissions: [Permissions.AccessImportExport, Permissions.AccessReports] }, children: [ - { path: '', pathMatch: 'full', redirectTo: 'import' }, - { path: 'import', component: OrgImportComponent, data: { titleId: 'importData' } }, - { path: 'export', component: OrgExportComponent, data: { titleId: 'exportVault' } }, + { + path: '', + pathMatch: 'full', + redirectTo: 'import', + }, + { + path: 'import', + component: OrgImportComponent, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'importData', + permissions: [Permissions.AccessImportExport], + }, + }, + { + path: 'export', + component: OrgExportComponent, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'exportVault', + permissions: [Permissions.AccessImportExport], + }, + }, { path: 'exposed-passwords-report', component: OrgExposedPasswordsReportComponent, - data: { titleId: 'exposedPasswordsReport' }, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'exposedPasswordsReport', + permissions: [Permissions.AccessReports], + }, }, { path: 'inactive-two-factor-report', component: OrgInactiveTwoFactorReportComponent, - data: { titleId: 'inactive2faReport' }, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'inactive2faReport', + permissions: [Permissions.AccessReports], + }, }, { path: 'reused-passwords-report', component: OrgReusedPasswordsReportComponent, - data: { titleId: 'reusedPasswordsReport' }, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'reusedPasswordsReport', + permissions: [Permissions.AccessReports], + }, }, { path: 'unsecured-websites-report', component: OrgUnsecuredWebsitesReportComponent, - data: { titleId: 'unsecuredWebsitesReport' }, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'unsecuredWebsitesReport', + permissions: [Permissions.AccessReports], + }, }, { path: 'weak-passwords-report', component: OrgWeakPasswordsReportComponent, - data: { titleId: 'weakPasswordsReport' }, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'weakPasswordsReport', + permissions: [Permissions.AccessReports], + }, }, ], }, @@ -296,26 +337,73 @@ const routes: Routes = [ component: OrgManageComponent, canActivate: [OrganizationTypeGuardService], data: { - allowedTypes: [ - OrganizationUserType.Owner, - OrganizationUserType.Admin, - OrganizationUserType.Manager, + permissions: [ + Permissions.ManageAssignedCollections, + Permissions.ManageAllCollections, + Permissions.AccessEventLogs, + Permissions.ManageGroups, + Permissions.ManageUsers, + Permissions.ManagePolicies, ], }, children: [ - { path: '', pathMatch: 'full', redirectTo: 'people' }, - { path: 'collections', component: OrgManageCollectionsComponent, data: { titleId: 'collections' } }, - { path: 'events', component: OrgEventsComponent, data: { titleId: 'eventLogs' } }, - { path: 'groups', component: OrgGroupsComponent, data: { titleId: 'groups' } }, - { path: 'people', component: OrgPeopleComponent, data: { titleId: 'people' } }, - { path: 'policies', component: OrgPoliciesComponent, data: { titleId: 'policies' } }, + { + path: '', + pathMatch: 'full', + redirectTo: 'people', + }, + { + path: 'collections', + component: OrgManageCollectionsComponent, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'collections', + permissions: [Permissions.ManageAssignedCollections, Permissions.ManageAllCollections], + }, + }, + { + path: 'events', + component: OrgEventsComponent, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'eventLogs', + permissions: [Permissions.AccessEventLogs], + }, + }, + { + path: 'groups', + component: OrgGroupsComponent, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'groups', + permissions: [Permissions.ManageGroups], + }, + }, + { + path: 'people', + component: OrgPeopleComponent, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'people', + permissions: [Permissions.ManageUsers], + }, + }, + { + path: 'policies', + component: OrgPoliciesComponent, + canActivate: [OrganizationTypeGuardService], + data: { + titleId: 'policies', + permissions: [Permissions.ManagePolicies], + }, + }, ], }, { path: 'settings', component: OrgSettingsComponent, canActivate: [OrganizationTypeGuardService], - data: { allowedTypes: [OrganizationUserType.Owner] }, + data: { permissions: [Permissions.ManageOrganization] }, children: [ { path: '', pathMatch: 'full', redirectTo: 'account' }, { path: 'account', component: OrgAccountComponent, data: { titleId: 'myOrganization' } }, @@ -340,6 +428,7 @@ const routes: Routes = [ @NgModule({ imports: [RouterModule.forRoot(routes, { useHash: true, + paramsInheritanceStrategy: 'always', /*enableTracing: true,*/ })], exports: [RouterModule], diff --git a/src/app/layouts/organization-layout.component.html b/src/app/layouts/organization-layout.component.html index c7843f1e90..93f18d5d97 100644 --- a/src/app/layouts/organization-layout.component.html +++ b/src/app/layouts/organization-layout.component.html @@ -15,21 +15,21 @@ -