Skip to content

Commit 6f8b9b5

Browse files
FrancescoMolinaroAndrea Barbasso
authored andcommitted
Merged in task/dspace-cris-2024_02_x/DSC-1857 (pull request DSpace#4725)
[DSC-1857] replace script find one with new auth feature Approved-by: Andrea Barbasso
2 parents a568c82 + 27cf0e2 commit 6f8b9b5

4 files changed

Lines changed: 10 additions & 35 deletions

File tree

src/app/core/data/feature-authorization/feature-id.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,6 @@ export enum FeatureID {
4242
ShowClaimItem = 'showClaimItem',
4343
CanCorrectItem = 'canCorrectItem',
4444
CanViewInWorkflowSinceStatistics = 'canViewInWorkflowSinceStatistics',
45+
CanExportMetadata = 'canExportMetadata',
46+
CanImportMetadata = 'canImportMetadata',
4547
}

src/app/menu-resolver.service.ts

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,6 @@ import { ConfigurationDataService } from './core/data/configuration-data.service
3131
import { AuthorizationDataService } from './core/data/feature-authorization/authorization-data.service';
3232
import { FeatureID } from './core/data/feature-authorization/feature-id';
3333
import { PaginatedList } from './core/data/paginated-list.model';
34-
import {
35-
METADATA_EXPORT_SCRIPT_NAME,
36-
METADATA_IMPORT_SCRIPT_NAME,
37-
ScriptDataService,
38-
} from './core/data/processes/script-data.service';
3934
import { RemoteData } from './core/data/remote-data';
4035
import { Section } from './core/layout/models/section.model';
4136
import { SectionDataService } from './core/layout/section-data.service';
@@ -77,7 +72,6 @@ export class MenuResolverService {
7772
protected menuService: MenuService,
7873
protected authorizationService: AuthorizationDataService,
7974
protected modalService: NgbModal,
80-
protected scriptDataService: ScriptDataService,
8175
protected configurationDataService: ConfigurationDataService,
8276
protected authService: AuthService,
8377
protected sectionDataService: SectionDataService,
@@ -650,17 +644,8 @@ export class MenuResolverService {
650644
];
651645
menuList.forEach((menuSection) => this.menuService.addSection(MenuID.ADMIN, menuSection));
652646

653-
observableCombineLatest([
654-
this.authorizationService.isAuthorized(FeatureID.AdministratorOf),
655-
this.authorizationService.isAuthorized(FeatureID.IsCommunityAdmin),
656-
this.authorizationService.isAuthorized(FeatureID.IsCollectionAdmin),
657-
]).pipe(
658-
filter(([isAdmin, isCommunityAdmin, isCollectionAdmin]) =>
659-
isAdmin || isCollectionAdmin || isCommunityAdmin,
660-
),
661-
take(1),
662-
switchMap(() => this.scriptDataService.scriptWithNameExistsAndCanExecute(METADATA_EXPORT_SCRIPT_NAME)),
663-
filter((metadataExportScriptExists: boolean) => metadataExportScriptExists),
647+
this.authorizationService.isAuthorized(FeatureID.CanExportMetadata).pipe(
648+
filter((canExport) => canExport),
664649
take(1),
665650
).subscribe(() => {
666651
// Hides the export menu for unauthorised people
@@ -783,17 +768,8 @@ export class MenuResolverService {
783768
const menuList = [];
784769
menuList.forEach((menuSection) => this.menuService.addSection(MenuID.ADMIN, menuSection));
785770

786-
observableCombineLatest([
787-
this.authorizationService.isAuthorized(FeatureID.AdministratorOf),
788-
this.authorizationService.isAuthorized(FeatureID.IsCommunityAdmin),
789-
this.authorizationService.isAuthorized(FeatureID.IsCollectionAdmin),
790-
]).pipe(
791-
filter(([isAdmin, isCommunityAdmin, isCollectionAdmin]) =>
792-
isAdmin || isCollectionAdmin || isCommunityAdmin,
793-
),
794-
take(1),
795-
switchMap(() => this.scriptDataService.scriptWithNameExistsAndCanExecute(METADATA_IMPORT_SCRIPT_NAME)),
796-
filter((metadataImportScriptExists: boolean) => metadataImportScriptExists),
771+
this.authorizationService.isAuthorized(FeatureID.CanImportMetadata).pipe(
772+
filter((canImport) => canImport),
797773
take(1),
798774
).subscribe(() => {
799775
// Hides the import menu for unauthorised people

src/app/menu.resolver.spec.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import { AdminSidebarComponent } from './admin/admin-sidebar/admin-sidebar.compo
1717
import { ConfigurationDataService } from './core/data/configuration-data.service';
1818
import { AuthorizationDataService } from './core/data/feature-authorization/authorization-data.service';
1919
import { FeatureID } from './core/data/feature-authorization/feature-id';
20-
import { ScriptDataService } from './core/data/processes/script-data.service';
2120
import { SectionDataService } from './core/layout/section-data.service';
2221
import { MenuService } from './shared/menu/menu.service';
2322
import { MenuID } from './shared/menu/menu-id.model';
@@ -76,7 +75,6 @@ describe('menuResolver', () => {
7675
let menuService;
7776
let sectionsService;
7877
let authorizationService;
79-
let scriptService;
8078
let mockNgbModal;
8179
let configurationDataService;
8280

@@ -91,9 +89,7 @@ describe('menuResolver', () => {
9189
authorizationService = jasmine.createSpyObj('authorizationService', {
9290
isAuthorized: observableOf(true),
9391
});
94-
scriptService = jasmine.createSpyObj('scriptService', {
95-
scriptWithNameExistsAndCanExecute: observableOf(true),
96-
});
92+
9793
mockNgbModal = {
9894
open: jasmine.createSpy('open').and.returnValue(
9995
{ componentInstance: {}, closed: observableOf({}) } as NgbModalRef,
@@ -109,7 +105,6 @@ describe('menuResolver', () => {
109105
{ provide: MenuService, useValue: menuService },
110106
{ provide: SectionDataService, useValue: sectionsService },
111107
{ provide: AuthorizationDataService, useValue: authorizationService },
112-
{ provide: ScriptDataService, useValue: scriptService },
113108
{ provide: ConfigurationDataService, useValue: configurationDataService },
114109
{ provide: NgbModal, useValue: mockNgbModal },
115110
{ provide: AuthService, useValue: AuthServiceStub },
@@ -419,7 +414,7 @@ describe('menuResolver', () => {
419414
describe('for site admin', () => {
420415
beforeEach(() => {
421416
authorizationService.isAuthorized = createSpy('isAuthorized').and.callFake((featureID: FeatureID) => {
422-
return observableOf(featureID === FeatureID.AdministratorOf);
417+
return observableOf(featureID === FeatureID.AdministratorOf || featureID === FeatureID.CanExportMetadata || featureID === FeatureID.CanImportMetadata);
423418
});
424419
});
425420

src/config/default-app-config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,8 @@ export class DefaultAppConfig implements AppConfig {
177177
FeatureID.CanSubmit,
178178
FeatureID.CoarNotifyEnabled,
179179
FeatureID.CanSeeQA,
180+
FeatureID.CanExportMetadata,
181+
FeatureID.CanImportMetadata,
180182
];
181183

182184
discoveryAuthorizationFeaturesConfig: DiscoveryConfigurationFeaturesConfig = {

0 commit comments

Comments
 (0)