From 143a9788c737fd2c0c82481dde535ad01640625f Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Tue, 2 Feb 2021 18:55:35 +0300 Subject: [PATCH] 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), + ), + ), ); }