From a6eb8fdefca719f67f2d78e4b017a6c832857cf7 Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Fri, 29 Nov 2019 15:54:55 +0100 Subject: [PATCH] FEAT #11645 TIME 0:10 add all priv if superadmin --- src/frontend/service/app.guard.ts | 7 +++++-- src/frontend/service/privileges.service.ts | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts index 552a3d855a5..5f67634d46f 100644 --- a/src/frontend/service/app.guard.ts +++ b/src/frontend/service/app.guard.ts @@ -6,6 +6,7 @@ import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { HeaderService } from './header.service'; import { ProcessComponent } from '../app/process/process.component'; +import { PrivilegeService } from './privileges.service'; @Injectable({ providedIn: 'root' @@ -14,13 +15,15 @@ export class AppGuard implements CanActivate { constructor(public http: HttpClient, private router: Router, - public headerService: HeaderService) { } + public headerService: HeaderService, + private privilegeService: PrivilegeService) { } canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean { // TO DO : CAN BE REMOVE AFTER FULL V2 localStorage.setItem('PreviousV2Route', state.url); if (this.headerService.user.id === undefined) { + return this.http.get('../../rest/currentUser/profile') .pipe( map((data: any) => { @@ -31,7 +34,7 @@ export class AppGuard implements CanActivate { lastname: data.lastname, entities: data.entities, groups: data.groups, - privileges: data.privileges + privileges: data.privileges[0] === 'ALL_PRIVILEGES' ? this.privilegeService.getAllPrivileges() : data.privileges } return true; }) diff --git a/src/frontend/service/privileges.service.ts b/src/frontend/service/privileges.service.ts index 015e2bf31a6..694c06aa5ba 100644 --- a/src/frontend/service/privileges.service.ts +++ b/src/frontend/service/privileges.service.ts @@ -503,6 +503,16 @@ export class PrivilegeService { constructor(public headerService: HeaderService) { } + getAllPrivileges() { + let priv: any[] = []; + + priv = priv.concat(this.privileges.map(elem => elem.id)); + priv = priv.concat(this.administrations.map(elem => elem.id)); + priv = priv.concat(this.menus.map(elem => elem.id)); + + return priv; + } + getPrivileges(ids: string[]=null) { if (ids !== null) { return this.privileges.filter(elem => ids.indexOf(elem.id) > -1); -- GitLab