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
commit 7dbf856404
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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;

Loading…
Cancel
Save