Browse Source

fix: cover all possible availability cases for visible and permission properties

pull/19846/head
sumeyyeKurtulus 2 years ago
parent
commit
4f5d1b6482
  1. 19
      npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts

19
npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts

@ -211,13 +211,22 @@ export class ExtensibleTableComponent<R = any> implements OnChanges {
const visibleActions = actions.filter(action => {
const { visible, permission } = action;
if (permission && visible) {
const visibilityCheck = visible({ record: rowData, getInjected: this.getInjected });
const permissionCheck = this.permissionService.getGrantedPolicy(permission);
return visibilityCheck && permissionCheck;
// Case 1: assuming that the action has neither permission nor visible properties, so no need to make an extra check
let isVisible = true;
let hasPermission = true;
// Case 2: action has visible condition
if (visible) {
isVisible = visible({ record: rowData, getInjected: this.getInjected });
}
// Case 3: action has permission condition
if (permission) {
hasPermission = this.permissionService.getGrantedPolicy(permission);
}
return true;
// Return true if the action is both visible and has permission, otherwise return false
return isVisible && hasPermission;
});
return visibleActions.length > 0;

Loading…
Cancel
Save