From 8fe488907dde3729302f97e127f2141a9b4766e8 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 27 Dec 2019 09:33:03 +0300 Subject: [PATCH] refactor(core): add a resource control to permission guard --- .../core/src/lib/guards/permission.guard.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts b/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts index e23eeb40c2..9321a7dcf6 100644 --- a/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts +++ b/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 { - let resource = snq(() => route.data.routes.requiredPolicy) || snq(() => route.data.requiredPolicy as string); + canActivate( + route: ActivatedRouteSnapshot, + state: RouterStateSnapshot, + ): Observable | 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(