|
|
|
@ -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(); |
|
|
|
}); |
|
|
|
|