Skip to content

Commit aac497c

Browse files
[DSC-1904] configure admin search
1 parent 33b1503 commit aac497c

3 files changed

Lines changed: 37 additions & 14 deletions

File tree

src/app/admin/admin-routing.module.ts

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ import { AdminEditUserAgreementComponent } from './admin-edit-user-agreement/adm
1010
import { NOTIFICATIONS_MODULE_PATH, REGISTRIES_MODULE_PATH } from './admin-routing-paths';
1111
import { EditCmsMetadataComponent } from './edit-cms-metadata/edit-cms-metadata.component';
1212
import { BatchImportPageComponent } from './admin-import-batch-page/batch-import-page.component';
13+
import {
14+
SiteAdministratorGuard
15+
} from '../core/data/feature-authorization/feature-authorization-guard/site-administrator.guard';
16+
import {
17+
GenericAdministratorGuard
18+
} from '../core/data/feature-authorization/feature-authorization-guard/generic-administrator-guard';
1319

1420
@NgModule({
1521
imports: [
@@ -18,59 +24,69 @@ import { BatchImportPageComponent } from './admin-import-batch-page/batch-import
1824
path: NOTIFICATIONS_MODULE_PATH,
1925
loadChildren: () => import('./admin-notifications/admin-notifications.module')
2026
.then((m) => m.AdminNotificationsModule),
27+
canActivate: [SiteAdministratorGuard]
2128
},
2229
{
2330
path: REGISTRIES_MODULE_PATH,
2431
loadChildren: () => import('./admin-registries/admin-registries.module')
2532
.then((m) => m.AdminRegistriesModule),
33+
canActivate: [SiteAdministratorGuard]
2634
},
2735
{
2836
path: 'search',
2937
resolve: { breadcrumb: I18nBreadcrumbResolver },
3038
component: AdminSearchPageComponent,
31-
data: { title: 'admin.search.title', breadcrumbKey: 'admin.search' }
39+
data: { title: 'admin.search.title', breadcrumbKey: 'admin.search' },
40+
canActivate: [GenericAdministratorGuard]
3241
},
3342
{
3443
path: 'workflow',
3544
resolve: { breadcrumb: I18nBreadcrumbResolver },
3645
component: AdminWorkflowPageComponent,
37-
data: { title: 'admin.workflow.title', breadcrumbKey: 'admin.workflow' }
46+
data: { title: 'admin.workflow.title', breadcrumbKey: 'admin.workflow' },
47+
canActivate: [SiteAdministratorGuard]
3848
},
3949
{
4050
path: 'curation-tasks',
4151
resolve: { breadcrumb: I18nBreadcrumbResolver },
4252
component: AdminCurationTasksComponent,
43-
data: { title: 'admin.curation-tasks.title', breadcrumbKey: 'admin.curation-tasks' }
53+
data: { title: 'admin.curation-tasks.title', breadcrumbKey: 'admin.curation-tasks' },
54+
canActivate: [SiteAdministratorGuard]
4455
},
4556
{
4657
path: 'metadata-import',
4758
resolve: { breadcrumb: I18nBreadcrumbResolver },
4859
component: MetadataImportPageComponent,
49-
data: { title: 'admin.metadata-import.title', breadcrumbKey: 'admin.metadata-import' }
60+
data: { title: 'admin.metadata-import.title', breadcrumbKey: 'admin.metadata-import' },
61+
canActivate: [GenericAdministratorGuard]
5062
},
5163
{
5264
path: 'edit-user-agreement',
5365
resolve: { breadcrumb: I18nBreadcrumbResolver },
5466
component: AdminEditUserAgreementComponent,
55-
data: { title: 'admin.edit-user-agreement.title', breadcrumbKey: 'admin.edit-user-agreement' }
67+
data: { title: 'admin.edit-user-agreement.title', breadcrumbKey: 'admin.edit-user-agreement' },
68+
canActivate: [SiteAdministratorGuard]
5669
},
5770
{
5871
path: 'edit-cms-metadata',
5972
resolve: { breadcrumb: I18nBreadcrumbResolver },
6073
component: EditCmsMetadataComponent,
61-
data: { title: 'admin.edit-cms-metadata.title', breadcrumbKey: 'admin.edit-cms-metadata' }
74+
data: { title: 'admin.edit-cms-metadata.title', breadcrumbKey: 'admin.edit-cms-metadata' },
75+
canActivate: [SiteAdministratorGuard]
6276
},
6377
{
6478
path: 'batch-import',
6579
resolve: { breadcrumb: I18nBreadcrumbResolver },
6680
component: BatchImportPageComponent,
67-
data: { title: 'admin.batch-import.title', breadcrumbKey: 'admin.batch-import' }
81+
data: { title: 'admin.batch-import.title', breadcrumbKey: 'admin.batch-import' },
82+
canActivate: [GenericAdministratorGuard]
6883
},
6984
{
7085
path: 'system-wide-alert',
7186
resolve: { breadcrumb: I18nBreadcrumbResolver },
7287
loadChildren: () => import('../system-wide-alert/system-wide-alert.module').then((m) => m.SystemWideAlertModule),
73-
data: {title: 'admin.system-wide-alert.title', breadcrumbKey: 'admin.system-wide-alert'}
88+
data: {title: 'admin.system-wide-alert.title', breadcrumbKey: 'admin.system-wide-alert'},
89+
canActivate: [SiteAdministratorGuard]
7490
},
7591
])
7692
],

src/app/app-routing.module.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,8 @@ import { ThemedPageErrorComponent } from './page-error/themed-page-error.compone
4545
import { ForgotPasswordCheckGuard } from './core/rest-property/forgot-password-check-guard.guard';
4646
import { SUGGESTION_MODULE_PATH } from './suggestions-page/suggestions-page-routing-paths';
4747
import { RedirectService } from './redirect/redirect.service';
48-
import {
49-
GenericAdministratorGuard
50-
} from './core/data/feature-authorization/feature-authorization-guard/generic-administrator-guard';
48+
49+
5150

5251
@NgModule({
5352
imports: [
@@ -170,7 +169,7 @@ import {
170169
path: ADMIN_MODULE_PATH,
171170
loadChildren: () => import('./admin/admin.module')
172171
.then((m) => m.AdminModule),
173-
canActivate: [GenericAdministratorGuard, EndUserAgreementCurrentUserGuard]
172+
canActivate: [EndUserAgreementCurrentUserGuard]
174173
},
175174
{
176175
path: 'login',

src/app/menu.resolver.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -724,7 +724,15 @@ export class MenuResolver implements Resolve<boolean> {
724724
* Create menu sections dependent on whether or not the current user is a site administrator
725725
*/
726726
createSiteAdministratorMenuSections() {
727-
this.authorizationService.isAuthorized(FeatureID.AdministratorOf).subscribe((authorized) => {
727+
combineLatest([
728+
this.authorizationService.isAuthorized(FeatureID.AdministratorOf),
729+
this.authorizationService.isAuthorized(FeatureID.IsCommunityAdmin),
730+
this.authorizationService.isAuthorized(FeatureID.IsCollectionAdmin),
731+
]).pipe(
732+
filter(([isAdmin, isCommunityAdmin, isCollectionAdmin]) =>
733+
isAdmin || isCollectionAdmin || isCommunityAdmin
734+
)
735+
).subscribe(([authorized, isCommunityAdmin, isCollectionAdmin]) => {
728736
const menuList = [
729737
/* Communities & Collections */
730738
{
@@ -777,7 +785,7 @@ export class MenuResolver implements Resolve<boolean> {
777785
{
778786
id: 'admin_search',
779787
active: false,
780-
visible: authorized,
788+
visible: authorized || isCollectionAdmin || isCommunityAdmin,
781789
model: {
782790
type: MenuItemType.LINK,
783791
text: 'menu.section.admin_search',

0 commit comments

Comments
 (0)