[master]: Fix sandbox guard for researhcer
This commit is contained in:
parent
08ad6fbeb0
commit
b0f6b9101b
|
@ -1 +1 @@
|
||||||
Subproject commit 037c32c545c772c06f8a7a9a5d1da84d95b96522
|
Subproject commit e1f6549e891fab346b0f98448c7700aeab09fb99
|
|
@ -15,7 +15,8 @@ const routes: Route[] = [
|
||||||
path: '', component: ResearcherComponent, children: [
|
path: '', component: ResearcherComponent, children: [
|
||||||
{path: '', loadChildren: () => import('./search-researcher/search-researcher.module').then(m => m.SearchResearcherModule)},
|
{path: '', loadChildren: () => import('./search-researcher/search-researcher.module').then(m => m.SearchResearcherModule)},
|
||||||
{path: ':stakeholder/search', loadChildren: () => import('../search/resultLanding.module').then(m => m.ResultLandingModule)},
|
{path: ':stakeholder/search', loadChildren: () => import('../search/resultLanding.module').then(m => m.ResultLandingModule)},
|
||||||
{path: ':stakeholder', loadChildren: () => import('../shared/monitor/monitor.module').then(m => m.MonitorModule), canActivateChild: [SandboxGuard]}
|
{path: ':stakeholder', loadChildren: () => import('../shared/monitor/monitor.module').then(m => m.MonitorModule), canActivateChild: [SandboxGuard],
|
||||||
|
data: {"researcher": true}}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
|
@ -3,6 +3,9 @@ import {Injectable} from "@angular/core";
|
||||||
import {ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree} from "@angular/router";
|
import {ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree} from "@angular/router";
|
||||||
import {Observable} from "rxjs";
|
import {Observable} from "rxjs";
|
||||||
import {properties} from "../../environments/environment";
|
import {properties} from "../../environments/environment";
|
||||||
|
import {LoginErrorCodes} from "../openaireLibrary/login/utils/guardHelper.class";
|
||||||
|
import {map, tap} from "rxjs/operators";
|
||||||
|
import {Session} from "../openaireLibrary/login/utils/helper.class";
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
|
@ -10,6 +13,23 @@ import {properties} from "../../environments/environment";
|
||||||
export class SandboxGuard extends AdminDashboardGuard {
|
export class SandboxGuard extends AdminDashboardGuard {
|
||||||
|
|
||||||
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
||||||
return properties.environment != 'beta' || super.canActivateChild(childRoute, state);
|
let sandbox = properties.environment !== 'beta'
|
||||||
|
if(childRoute.data['researcher'] && childRoute.params.stakeholder && sandbox) {
|
||||||
|
let errorCode = LoginErrorCodes.NOT_LOGIN;
|
||||||
|
let alias = childRoute.params.stakeholder;
|
||||||
|
return this.userManagementService.getUserInfo().pipe(map(user => {
|
||||||
|
if(user) {
|
||||||
|
errorCode = LoginErrorCodes.NOT_ADMIN;
|
||||||
|
}
|
||||||
|
return user && (Session.isPortalAdministrator(user) ||
|
||||||
|
Session.isCurator('researcher', user) || user?.orcid === alias);
|
||||||
|
}), tap(authorized => {
|
||||||
|
if(!authorized){
|
||||||
|
this.router.navigate(['/user-info'], {queryParams: {'errorCode': errorCode, 'redirectUrl':state.url}});
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
return !sandbox || super.canActivateChild(childRoute, state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue