diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts index 552a3d855a5f54ccf630601391264c9263db1836..5f67634d46f0b6b8d003be360b0bb25962b479ca 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 015e2bf31a60f3797a9f9b3509977ef8bd05f23e..694c06aa5ba58771c8a9fafcfab956edbd0d3729 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);