Browse Source
Merge pull request #7578 from abpframework/feat/7572
Permission service should filter granted policies from list of policy
pull/7590/head
Bunyamin Coskuner
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
22 additions and
0 deletions
-
npm/ng-packs/packages/core/src/lib/models/common.ts
-
npm/ng-packs/packages/core/src/lib/services/permission.service.ts
|
|
|
@ -12,6 +12,10 @@ export namespace ABP { |
|
|
|
sendNullsAsQueryParam?: boolean; |
|
|
|
} |
|
|
|
|
|
|
|
export interface HasPolicy { |
|
|
|
requiredPolicy?: string; |
|
|
|
} |
|
|
|
|
|
|
|
export interface Test extends Partial<Root> { |
|
|
|
baseHref?: string; |
|
|
|
listQueryDebounceTime?: number; |
|
|
|
|
|
|
|
@ -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/common'; |
|
|
|
|
|
|
|
@Injectable({ providedIn: 'root' }) |
|
|
|
export class PermissionService { |
|
|
|
@ -19,6 +20,23 @@ export class PermissionService { |
|
|
|
return this.isPolicyGranted(key, policies); |
|
|
|
} |
|
|
|
|
|
|
|
filterItemsByPolicy<T extends ABP.HasPolicy>(items: Array<T>) { |
|
|
|
const policies = this.getSnapshot(); |
|
|
|
return items.filter( |
|
|
|
item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies), |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
filterItemsByPolicy$<T extends ABP.HasPolicy>(items: Array<T>) { |
|
|
|
return this.getStream().pipe( |
|
|
|
map(policies => |
|
|
|
items.filter( |
|
|
|
item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies), |
|
|
|
), |
|
|
|
), |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
protected isPolicyGranted(key: string, grantedPolicies: Record<string, boolean>) { |
|
|
|
if (!key) return true; |
|
|
|
|
|
|
|
|