From df1b09ceea69d8ef1fb79579e048fa84559cd7fe Mon Sep 17 00:00:00 2001
From: "S.Leipold" <S.Leipold@sleipold.aditosoftware.local>
Date: Wed, 8 Jan 2020 15:51:31 +0100
Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Neon][TicketNr.:?=
 =?UTF-8?q?=201048120][L=C3=B6schen=20einer=20Rolle=20entfernt=20nicht=20d?=
 =?UTF-8?q?ie=20zugeh=C3=B6rigen=20Permissions]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../recordcontainers/jdito/onDelete.js        | 22 ++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/entity/Role_entity/recordcontainers/jdito/onDelete.js b/entity/Role_entity/recordcontainers/jdito/onDelete.js
index e80d3cd4bc..7ce344eda4 100644
--- a/entity/Role_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/Role_entity/recordcontainers/jdito/onDelete.js
@@ -2,7 +2,23 @@ import("Permission_lib");
 import("system.tools");
 import("system.vars");
 
-var name = vars.get("$field.ROLENAME"); // field got prefix "CUSTOM_" already
+var targetRole = vars.get("$field.ROLENAME"); // field got prefix "CUSTOM_" already
+var usersWithTargetRole = tools.getUsersWithRole(targetRole);
+
 // delete permissions linked to this role
-PermissionUtil.deleteEverythingLinkedToRole(name);
-tools.deleteRole(name);
\ No newline at end of file
+PermissionUtil.deleteEverythingLinkedToRole(targetRole);
+
+// remove role from all users with this role
+for each (let userWithTargetRole in usersWithTargetRole) {
+    var user = tools.getUser(userWithTargetRole);
+    var roles = tools.getRoles(userWithTargetRole);
+    
+    roles = roles.filter(function(role) {
+        return role != targetRole;
+    });
+    user[tools.ROLES] = roles;
+
+    tools.updateUser(user);
+}
+
+tools.deleteRole(targetRole);
\ No newline at end of file
-- 
GitLab