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 { export class PermissionGuard implements CanActivate {
constructor(private store: Store) {} constructor(private store: Store) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { canActivate(
let resource = snq(() => route.data.routes.requiredPolicy) || snq(() => route.data.requiredPolicy as string); route: ActivatedRouteSnapshot,
state: RouterStateSnapshot,
): Observable<boolean> | boolean {
let resource =
snq(() => route.data.routes.requiredPolicy) || snq(() => route.data.requiredPolicy as string);
if (!resource) { if (!resource) {
resource = snq( 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( return this.store.select(ConfigState.getGrantedPolicy(resource)).pipe(

Loading…
Cancel
Save