From 183b4a7058dfb70f7e48007707e6ef68dde27d09 Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Tue, 2 Feb 2021 17:40:01 +0300 Subject: [PATCH 1/3] Permission service should filter granted policies from list of policy resolve #7572 --- .../core/src/lib/services/permission.service.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/npm/ng-packs/packages/core/src/lib/services/permission.service.ts b/npm/ng-packs/packages/core/src/lib/services/permission.service.ts index c549c5a7a8..af6a8e3d46 100644 --- a/npm/ng-packs/packages/core/src/lib/services/permission.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/permission.service.ts @@ -19,6 +19,17 @@ export class PermissionService { return this.isPolicyGranted(key, policies); } + filterGrantedPolicies(policyKeys: Array) { + const policies = this.getSnapshot(); + return policyKeys.filter(key => this.isPolicyGranted(key, policies)); + } + + filterGrantedPolicies$(policyKeys: Array) { + return this.getStream().pipe( + map(policies => policyKeys.filter(key => this.isPolicyGranted(key, policies))), + ); + } + protected isPolicyGranted(key: string, grantedPolicies: Record) { if (!key) return true; From 143a9788c737fd2c0c82481dde535ad01640625f Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Tue, 2 Feb 2021 18:55:35 +0300 Subject: [PATCH 2/3] filter fn modified to filter given items by policy --- .../packages/core/src/lib/models/common.ts | 4 ++++ .../core/src/lib/services/permission.service.ts | 15 +++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/models/common.ts b/npm/ng-packs/packages/core/src/lib/models/common.ts index d4d44faae0..db03b1cea7 100644 --- a/npm/ng-packs/packages/core/src/lib/models/common.ts +++ b/npm/ng-packs/packages/core/src/lib/models/common.ts @@ -12,6 +12,10 @@ export namespace ABP { sendNullsAsQueryParam?: boolean; } + export interface HasPolicy { + requiredPolicy?: string; + } + export interface Test extends Partial { baseHref?: string; listQueryDebounceTime?: number; diff --git a/npm/ng-packs/packages/core/src/lib/services/permission.service.ts b/npm/ng-packs/packages/core/src/lib/services/permission.service.ts index af6a8e3d46..b47c29ed61 100644 --- a/npm/ng-packs/packages/core/src/lib/services/permission.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/permission.service.ts @@ -3,6 +3,7 @@ import { map } from 'rxjs/operators'; import snq from 'snq'; import { ApplicationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models'; import { ConfigStateService } from './config-state.service'; +import { ABP } from '../models'; @Injectable({ providedIn: 'root' }) export class PermissionService { @@ -19,14 +20,20 @@ export class PermissionService { return this.isPolicyGranted(key, policies); } - filterGrantedPolicies(policyKeys: Array) { + filterItemsByPolicy(items: Array) { const policies = this.getSnapshot(); - return policyKeys.filter(key => this.isPolicyGranted(key, policies)); + return items.filter( + item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies), + ); } - filterGrantedPolicies$(policyKeys: Array) { + filterItemsByPolicy$(items: Array) { return this.getStream().pipe( - map(policies => policyKeys.filter(key => this.isPolicyGranted(key, policies))), + map(policies => + items.filter( + item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies), + ), + ), ); } From 8c70f3593033c85592a7ec33d73c0babf4eabeed Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Tue, 2 Feb 2021 19:02:58 +0300 Subject: [PATCH 3/3] import changed --- .../packages/core/src/lib/services/permission.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/core/src/lib/services/permission.service.ts b/npm/ng-packs/packages/core/src/lib/services/permission.service.ts index b47c29ed61..eb6b3fc75e 100644 --- a/npm/ng-packs/packages/core/src/lib/services/permission.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/permission.service.ts @@ -3,7 +3,7 @@ import { map } from 'rxjs/operators'; import snq from 'snq'; import { ApplicationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models'; import { ConfigStateService } from './config-state.service'; -import { ABP } from '../models'; +import { ABP } from '../models/common'; @Injectable({ providedIn: 'root' }) export class PermissionService {