Skip to content
Snippets Groups Projects
Commit 92250d00 authored by Simon Leipold's avatar Simon Leipold
Browse files

[Projekt: Entwicklung - Neon][TicketNr.: 1048120][Löschen einer Rolle entfernt...

[Projekt: Entwicklung - Neon][TicketNr.: 1048120][Löschen einer Rolle entfernt nicht die zugehörigen Permissions]
parent 69be15b6
No related branches found
No related tags found
No related merge requests found
......@@ -3,7 +3,7 @@
<name>RoleChildren_entity</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<title>Child</title>
<titlePlural>Children</titlePlural>
<titlePlural>Child Roles</titlePlural>
<recordContainer>jDito</recordContainer>
<entityFields>
<entityProvider>
......
......@@ -139,6 +139,12 @@
</entityParameter>
</children>
</entityConsumer>
<entityActionField>
<name>deleteEverythingLinkedToRole</name>
<title>delete linked permissions and hierarchies</title>
<onActionProcess>%aditoprj%/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/onActionProcess.js</onActionProcess>
<iconId>VAADIN:CLOSE</iconId>
</entityActionField>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
......
import("Permission_lib");
import("system.vars");
PermissionUtil.deleteEverythingLinkedToRole(vars.get("$field.ROLENAME"));
\ No newline at end of file
import("Permission_lib");
import("system.vars");
import("system.result");
if (vars.get("$field.ROLETYPE") == "CUSTOM") {
if (vars.get("$field.ROLETYPE") == "CUSTOM" && PermissionUtil.roleIsDeletable(vars.get("$field.ROLENAME"))) {
result.string(true);
} else {
result.string(false);
......
......@@ -5,9 +5,6 @@ import("system.vars");
var selectedRole = vars.get("$field.ROLENAME"); // field got prefix "CUSTOM_" already
var usersWithSelectedRole = tools.getUsersWithRole(selectedRole);
// delete permissions linked to this role
PermissionUtil.deleteEverythingLinkedToRole(selectedRole);
// remove role from all users with this role
for each (let userWithSelectedRole in usersWithSelectedRole) {
var user = tools.getUser(userWithSelectedRole);
......
......@@ -11,6 +11,9 @@
<titledListViewTemplate>
<name>TitledList</name>
<entityField>#ENTITY</entityField>
<isDeletable v="false" />
<isEditable v="false" />
<isCreatable v="false" />
<columns>
<neonTitledListTableColumn>
<name>0451e2ec-e216-4d4f-8080-e6b9aaf56613</name>
......
......@@ -796,6 +796,46 @@ function PermissionUtil () {}
return affectedEntrys;
}
/**
* Checks if the given role is deletable. This includes checks for linked permissions and hierarchies.
*
* @param {String} pRole name of the role, mandatory
*
* @result {Boolean} returns true if role is deletable, otherwise false
*/
PermissionUtil.roleIsDeletable = function(pRole) {
// check for linked permissions
var sets = newSelect("ASYS_PERMISSIONSETID", alias)
.from("ASYS_PERMISSIONSET")
.where("ASYS_PERMISSIONSET.ROLE_ID", pRole)
.arrayColumn(true);
var perms = this.getPermissions(sets);
var actions = this.getActions(perms);
if (sets.length != 0 || perms.length != 0 || actions.length != 0) {
return false;
}
// check for linked hierarchies
// hierarchies where pRole is child
var parentHierarchies = newSelect("PARENT_ROLE", alias)
.from("ASYS_ROLES_CHILDREN")
.where("ASYS_ROLES_CHILDREN.CHILD_ROLE", pRole)
.arrayColumn(true);
// hierarchies where pRole is parent
var childHierarchies = newSelect("CHILD_ROLE", alias)
.from("ASYS_ROLES_CHILDREN")
.where("ASYS_ROLES_CHILDREN.PARENT_ROLE", pRole)
.arrayColumn(true);
if (parentHierarchies.length != 0 || childHierarchies != 0) {
return false;
}
return true;
}
} //end of block
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment