|
|
|
|
@ -104,6 +104,8 @@ export class PermissionManagementComponent
|
|
|
|
|
|
|
|
|
|
selectAllTab = false;
|
|
|
|
|
|
|
|
|
|
disableSelectAllTab = false;
|
|
|
|
|
|
|
|
|
|
modalBusy = false;
|
|
|
|
|
|
|
|
|
|
trackByFn: TrackByFunction<PermissionGroupDto> = (_, item) => item.name;
|
|
|
|
|
@ -135,6 +137,18 @@ export class PermissionManagementComponent
|
|
|
|
|
return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setDisabled(grantedProviders) {
|
|
|
|
|
if (grantedProviders.length) {
|
|
|
|
|
grantedProviders.forEach(permission => {
|
|
|
|
|
this.disableSelectAllTab = permission.grantedProviders?.some(
|
|
|
|
|
p => p.providerName !== this.providerName,
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
this.disableSelectAllTab = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isGrantedByOtherProviderName(grantedProviders: ProviderInfoDto[]): boolean {
|
|
|
|
|
if (grantedProviders.length) {
|
|
|
|
|
return grantedProviders.findIndex(p => p.providerName !== this.providerName) > -1;
|
|
|
|
|
@ -150,24 +164,25 @@ export class PermissionManagementComponent
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.permissions = this.permissions.map(per => {
|
|
|
|
|
if (clickedPermission.name === per.name) {
|
|
|
|
|
return { ...per, isGranted: !per.isGranted };
|
|
|
|
|
} else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) {
|
|
|
|
|
return { ...per, isGranted: false };
|
|
|
|
|
} else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {
|
|
|
|
|
return { ...per, isGranted: true };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return per;
|
|
|
|
|
}).map((per,index,permissions) => {
|
|
|
|
|
const childrens = permissions
|
|
|
|
|
.filter(p => p.parentName === per.name);
|
|
|
|
|
if(childrens.length > 0 && childrens.every(x => !x.isGranted)){
|
|
|
|
|
this.permissions = this.permissions
|
|
|
|
|
.map(per => {
|
|
|
|
|
if (clickedPermission.name === per.name) {
|
|
|
|
|
return { ...per, isGranted: !per.isGranted };
|
|
|
|
|
} else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) {
|
|
|
|
|
return { ...per, isGranted: false };
|
|
|
|
|
} else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {
|
|
|
|
|
return { ...per, isGranted: true };
|
|
|
|
|
}
|
|
|
|
|
return per
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return per;
|
|
|
|
|
})
|
|
|
|
|
.map((per, index, permissions) => {
|
|
|
|
|
const childrens = permissions.filter(p => p.parentName === per.name);
|
|
|
|
|
if (childrens.length > 0 && childrens.every(x => !x.isGranted)) {
|
|
|
|
|
return { ...per, isGranted: false };
|
|
|
|
|
}
|
|
|
|
|
return per;
|
|
|
|
|
});
|
|
|
|
|
this.setTabCheckboxState();
|
|
|
|
|
this.setGrantCheckboxState();
|
|
|
|
|
}, 0);
|
|
|
|
|
@ -231,6 +246,7 @@ export class PermissionManagementComponent
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onChangeGroup(group: PermissionGroupDto) {
|
|
|
|
|
this.setDisabled(group.permissions);
|
|
|
|
|
this.selectedGroup = group;
|
|
|
|
|
this.setTabCheckboxState();
|
|
|
|
|
}
|
|
|
|
|
@ -283,6 +299,7 @@ export class PermissionManagementComponent
|
|
|
|
|
initModal() {
|
|
|
|
|
// TODO: Refactor
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.setDisabled(this.permissions);
|
|
|
|
|
this.setTabCheckboxState();
|
|
|
|
|
this.setGrantCheckboxState();
|
|
|
|
|
});
|
|
|
|
|
|