|
|
|
@ -2,9 +2,10 @@ import { Injectable } from '@angular/core'; |
|
|
|
import { ActivatedRouteSnapshot, CanActivate } from '@angular/router'; |
|
|
|
import { Store } from '@ngxs/store'; |
|
|
|
import { Observable } from 'rxjs'; |
|
|
|
import { ConfigState } from '../states'; |
|
|
|
import { tap } from 'rxjs/operators'; |
|
|
|
import snq from 'snq'; |
|
|
|
import { RestOccurError } from '../actions'; |
|
|
|
import { ConfigState } from '../states'; |
|
|
|
|
|
|
|
@Injectable({ |
|
|
|
providedIn: 'root', |
|
|
|
@ -13,7 +14,7 @@ export class PermissionGuard implements CanActivate { |
|
|
|
constructor(private store: Store) {} |
|
|
|
|
|
|
|
canActivate({ data }: ActivatedRouteSnapshot): Observable<boolean> { |
|
|
|
const resource = data.requiredPolicy as string; |
|
|
|
const resource = snq(() => data.routes.requiredPolicy) || (data.requiredPolicy as string); |
|
|
|
return this.store.select(ConfigState.getGrantedPolicy(resource)).pipe( |
|
|
|
tap(access => { |
|
|
|
if (!access) { |
|
|
|
|