From 64d1506bc3a2d190b814487cf033e04499727c5b Mon Sep 17 00:00:00 2001
From: Simon Leipold <s.leipold@adito.de>
Date: Fri, 7 Jun 2019 13:24:04 +0200
Subject: [PATCH] Permissions - fixed behavior when usePermission-flag gets
 removed

---
 .../entityfields/field/dropDownProcess.js          |  8 ++++----
 .../recordcontainers/jdito/contentProcess.js       | 14 +++++++++++++-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js b/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js
index 123b0887b4..531be41df5 100644
--- a/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js
@@ -3,9 +3,9 @@ import("system.vars");
 import("system.project");
 
 var entityTitle = vars.get("$field.ENTITY");
+var res = [];
 if (entityTitle != undefined && entityTitle != null && entityTitle != "") {
     var entityStructure = project.getEntityStructure(entityTitle);
-    var res = [];
 
     for (var field in entityStructure.fields) { 
         field = entityStructure.fields[field];
@@ -13,11 +13,11 @@ if (entityTitle != undefined && entityTitle != null && entityTitle != "") {
             var name = field.name;
             var title = field.title;
             if (title != undefined && title != null && title != "") {
-                res.push([title, title]);
+                res.push([name, title]);
             } else {
                 res.push([name, name]);
             }
         }
     }
-    result.object(res);
-}
\ No newline at end of file
+}
+result.object(res);
\ No newline at end of file
diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
index a8b9087169..055d366a91 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.util");
 import("system.vars");
 import("system.db");
@@ -10,16 +11,27 @@ var sqlStr;
 var whereCond = " where";
 var alias = "_____SYSTEMALIAS";
 var entitiesMetaData = project.getDataModels(project.DATAMODEL_KIND_ENTITY);
+var entityStructure;
 var entitiesUsePermFlagSet = [];
+var fieldsUsePermFlagSet = [];
 
 // gets all names of the entites which have the 'usePermission'-flag set (positive list)
+// gets all names of the fields which have the 'usePermission'-flag set (positive list)
 for each (let entityMetaData in entitiesMetaData) {
     if (entityMetaData[6] == "true") {
         entitiesUsePermFlagSet.push(entityMetaData[0])
-    }
+        entityStructure = project.getEntityStructure(entityMetaData[0]);
+        for (fieldname in entityStructure.fields) {
+            field = entityStructure.fields[fieldname];
+            if (field.usePermissions == true) {
+                fieldsUsePermFlagSet.push(field.name);
+            }
+        }
+    }   
 }
 
 whereCond += " ENTITY_ID in ('" + entitiesUsePermFlagSet.join("','") + "')";
+whereCond += " and (FIELD_ID in ('" + fieldsUsePermFlagSet.join("','") + "') or FIELD_ID is NULL)";
 
 if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) {
     whereCond += " and ASYS_PERMISSIONSET.ROLE_ID = '" + vars.getString("$param.RoleTitle_param") + "'";
-- 
GitLab