Browse Source

refactor(core): add a resource control to permission guard

pull/2522/head
mehmet-erim 7 years ago
parent
commit
8fe488907d
  1. 16
      npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts

16
npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts

@ -13,12 +13,22 @@ import { ConfigState } from '../states';
export class PermissionGuard implements CanActivate {
constructor(private store: Store) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
let resource = snq(() => route.data.routes.requiredPolicy) || snq(() => route.data.requiredPolicy as string);
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot,
): Observable<boolean> | boolean {
let resource =
snq(() => route.data.routes.requiredPolicy) || snq(() => route.data.requiredPolicy as string);
if (!resource) {
resource = snq(
() => route.routeConfig.children.find(child => state.url.indexOf(child.path) > -1).data.requiredPolicy,
() =>
route.routeConfig.children.find(child => state.url.indexOf(child.path) > -1).data
.requiredPolicy,
);
if (!resource) {
return true;
}
}
return this.store.select(ConfigState.getGrantedPolicy(resource)).pipe(

Loading…
Cancel
Save