From 4edea6ea9aa63f52c3eaa92673883535e6983718 Mon Sep 17 00:00:00 2001 From: Simon Leipold <s.leipold@adito.de> Date: Wed, 22 May 2019 13:42:28 +0200 Subject: [PATCH] Permissions - bugfixes for insert/edit/delete of permissions --- .../PermissionDetail_entity.aod | 5 ++++- .../accesstype/displayValueProcess.js | 10 ++++++++++ .../entityfields/accesstype/valueProcess.js | 10 ++++++++++ .../condtype/displayValueProcess.js | 6 ------ .../entityfields/entity/displayValueProcess.js | 9 +++++++++ .../entityfields/entity/valueProcess.js | 16 +++++++++------- .../entityfields/role/displayValueProcess.js | 14 ++++++++++++++ .../entityfields/role/valueProcess.js | 16 +++++++++------- .../recordcontainers/jdito/onDelete.js | 13 +++++++------ .../recordcontainers/jdito/onInsert.js | 6 ++++-- .../recordcontainers/jdito/onUpdate.js | 3 ++- .../children/entityname_param/valueProcess.js | 2 +- process/Permission_lib/process.js | 17 ++++++++++++++--- 13 files changed, 93 insertions(+), 34 deletions(-) create mode 100644 entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js create mode 100644 entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js delete mode 100644 entity/PermissionDetail_entity/entityfields/condtype/displayValueProcess.js create mode 100644 entity/PermissionDetail_entity/entityfields/entity/displayValueProcess.js create mode 100644 entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod index f0a82c5aa6..2d5c67c902 100644 --- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod +++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod @@ -28,6 +28,7 @@ <mandatory v="true" /> <groupable v="true" /> <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/role/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>ENTITY</name> @@ -37,6 +38,7 @@ <mandatory v="true" /> <groupable v="true" /> <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/entity/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/entity/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>FIELD</name> @@ -56,13 +58,14 @@ <consumer>KeywordAccessType</consumer> <mandatory v="true" /> <groupable v="true" /> + <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>CONDTYPE</name> <title>Condition Type</title> <consumer>KeywordConditionType</consumer> <mandatory v="true" /> - <displayValueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/condtype/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>PARENT</name> diff --git a/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js b/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js new file mode 100644 index 0000000000..9df8d712ee --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js @@ -0,0 +1,10 @@ +//import("system.vars"); +//import("system.result"); +// +//var field = vars.get("$field.FIELD"); +// +//if (field != undefined && field != null && field != "") { +// result.string("Feld"); +//} else { +// result.string(""); +//} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js b/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js new file mode 100644 index 0000000000..52f53388aa --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js @@ -0,0 +1,10 @@ +//import("system.vars"); +//import("system.result"); +// +//var field = vars.get("$field.FIELD"); +// +//if (field != undefined && field != null && field != "") { +// result.string("F"); +//} else { +// result.string(""); +//} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/condtype/displayValueProcess.js b/entity/PermissionDetail_entity/entityfields/condtype/displayValueProcess.js deleted file mode 100644 index 40f4ec0027..0000000000 --- a/entity/PermissionDetail_entity/entityfields/condtype/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.permissionCondType(), vars.get("$field.CONDTYPE"))); diff --git a/entity/PermissionDetail_entity/entityfields/entity/displayValueProcess.js b/entity/PermissionDetail_entity/entityfields/entity/displayValueProcess.js new file mode 100644 index 0000000000..241d200ca4 --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/entity/displayValueProcess.js @@ -0,0 +1,9 @@ +//import("system.vars"); +//import("system.result"); +//import("system.neon"); +// +//let recordstate = vars.get("$sys.recordstate"); +// +//if(vars.exists("$param.EntityTitle_param") && (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)) { +// result.string(vars.getString("$param.EntityTitle_param")); +//} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/entity/valueProcess.js b/entity/PermissionDetail_entity/entityfields/entity/valueProcess.js index ace2def782..241d200ca4 100644 --- a/entity/PermissionDetail_entity/entityfields/entity/valueProcess.js +++ b/entity/PermissionDetail_entity/entityfields/entity/valueProcess.js @@ -1,7 +1,9 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && vars.exists("$param.EntityTitle_param")) { - result.string(vars.getString("$param.EntityTitle_param")); -} \ No newline at end of file +//import("system.vars"); +//import("system.result"); +//import("system.neon"); +// +//let recordstate = vars.get("$sys.recordstate"); +// +//if(vars.exists("$param.EntityTitle_param") && (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)) { +// result.string(vars.getString("$param.EntityTitle_param")); +//} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js b/entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js new file mode 100644 index 0000000000..d4c1d911ed --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js @@ -0,0 +1,14 @@ +//import("system.vars"); +//import("system.result"); +//import("system.neon"); +// +//var recordstate = vars.get("$sys.recordstate"); +// +//if (vars.exists("$param.RoleTitle_param")) { +// var role = vars.get("$param.RoleTitle_param"); +// +// if(role != undefined && role != null && role != "" && (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)) { +// res = role.split("_"); +// result.string(res[1]); +// } +//} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/role/valueProcess.js b/entity/PermissionDetail_entity/entityfields/role/valueProcess.js index ce210d3aef..cc6b48287a 100644 --- a/entity/PermissionDetail_entity/entityfields/role/valueProcess.js +++ b/entity/PermissionDetail_entity/entityfields/role/valueProcess.js @@ -1,7 +1,9 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && vars.exists("$param.RoleTitle_param")) { - result.string(vars.getString("$param.RoleTitle_param")); -} \ No newline at end of file +//import("system.vars"); +//import("system.result"); +//import("system.neon"); +// +//let recordstate = vars.get("$sys.recordstate"); +// +//if(vars.exists("$param.RoleTitle_param") && (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)) { +// result.string(vars.getString("$param.RoleTitle_param")); +//} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js index adbb5889df..f2c594edd7 100644 --- a/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js +++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js @@ -6,6 +6,7 @@ var permId = vars.get("$field.UID"); var accessType = vars.get("$field.ACCESSTYPE"); var parentPermSetId = PermissionUtil.getParentPermissionSet(permId); var linkedActions = PermissionUtil.getAllChildPermissionActions(permId); +var alias = "_____SYSTEMALIAS"; var sqlCondDelAction = SqlCondition.begin() .and("ASYS_PERMISSIONACTION.ASYS_PERMISSIONACTIONID in ('" + linkedActions.join("','") + "')") @@ -34,16 +35,16 @@ switch (accessType) { .and("ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID in ('" + allPermSets.join("','") + "')") .build(); - db.deleteData("ASYS_PERMISSIONACTION", sqlCondDelAction); // delete all actions - db.deleteData("ASYS_PERMISSION", sqlCondDelPerm); // delete all permissions - db.deleteData("ASYS_PERMISSIONSET", sqlCondDelPermSet); // delete all permission sets + db.deleteData("ASYS_PERMISSIONACTION", sqlCondDelAction, alias); // delete all actions + db.deleteData("ASYS_PERMISSION", sqlCondDelPerm, alias); // delete all permissions + db.deleteData("ASYS_PERMISSIONSET", sqlCondDelPermSet, alias); // delete all permission sets break; default: - db.deleteData("ASYS_PERMISSIONACTION", sqlCondDelAction); // delete all actions of the selected permission - db.deleteData("ASYS_PERMISSION", sqlCondDelPerm); // delete the selected permission + db.deleteData("ASYS_PERMISSIONACTION", sqlCondDelAction, alias); // delete all actions of the selected permission + db.deleteData("ASYS_PERMISSION", sqlCondDelPerm, alias); // delete the selected permission break; } if (PermissionUtil.permSetIsEmpty(parentPermSetId)) { - db.deleteData("ASYS_PERMISSIONSET", sqlCondDelPermSet); // delete empty permissionset + db.deleteData("ASYS_PERMISSIONSET", sqlCondDelPermSet, alias); // delete empty permissionset } diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js index 09f7f0299b..2e3cd82309 100644 --- a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js +++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js @@ -1,3 +1,4 @@ +import("Permission_lib"); import("system.logging"); import("system.neon"); import("system.util"); @@ -6,6 +7,7 @@ import("system.vars"); import("Permission_lib"); var table, cols, vals; +var alias = "_____SYSTEMALIAS"; var sqlExt = ""; var permissionid = util.getNewUUID(); var role = vars.get("$field.ROLE"); @@ -25,7 +27,7 @@ if (checkInput([role, entity, accesstype, condtype, action])) { sqlExt += " and ACCESSTYPE = 'R'"; var sqlStr = "select ASYS_PERMISSIONSETID from ASYS_PERMISSIONSET where ENTITY_ID = '" + entity + "' and ROLE_ID = '" + role + "'" + sqlExt; - var permissionsetid = db.cell(sqlStr); + var permissionsetid = db.cell(sqlStr, alias); if (permissionsetid == "") { // no fitting permissionset found - insert new permissionset @@ -76,6 +78,6 @@ function permExists(pRole, pEntity, pField, pAccesstype, pCondtype, pCondition) + " join ASYS_PERMISSION on ASYS_PERMISSION.ASYS_PERMISSIONSET_ID = ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID" + " where ENTITY_ID = '" + pEntity + "' and ROLE_ID = '" + pRole + "'" + " and ACCESSTYPE = '" + pAccesstype + "' and CONDTYPE = '" + pCondtype + "'" + sqlExt; - var permId = db.cell(sqlStr); + var permId = db.cell(sqlStr, alias); return permId; } \ No newline at end of file diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js index 0be080b802..e2cc6a303b 100644 --- a/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js @@ -6,6 +6,7 @@ import("Permission_lib"); var table, cols, vals, cond; +var alias = "_____SYSTEMALIAS"; var permissionid = vars.get("$field.UID"); var actionNew = vars.get("$field.ACTION").split(","); var entityNew = vars.get("$field.ENTITY"); @@ -17,7 +18,7 @@ if (diff.length > 0) { // delete all linked permission actions table = "ASYS_PERMISSIONACTION"; cond = SqlCondition.begin().and("ASYS_PERMISSION_ID = '" + permissionid + "'").build(); - var dbDeletes = db.deleteData(table, cond); + var dbDeletes = db.deleteData(table, cond, alias); // insert the different actions cols = db.getColumns(table); diff --git a/entity/PermissionMetaData_entity/entityfields/metadata/children/entityname_param/valueProcess.js b/entity/PermissionMetaData_entity/entityfields/metadata/children/entityname_param/valueProcess.js index f7920ec1e2..3ef775221b 100644 --- a/entity/PermissionMetaData_entity/entityfields/metadata/children/entityname_param/valueProcess.js +++ b/entity/PermissionMetaData_entity/entityfields/metadata/children/entityname_param/valueProcess.js @@ -1,3 +1,3 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.TITLE")); \ No newline at end of file +result.string(vars.get("$field.UID")); \ No newline at end of file diff --git a/process/Permission_lib/process.js b/process/Permission_lib/process.js index 247e338f2c..0c0713045e 100644 --- a/process/Permission_lib/process.js +++ b/process/Permission_lib/process.js @@ -325,6 +325,17 @@ PermissionUtil.permSetIsEmpty = function(pPermSetId) { return false; } +/** + * Returns all PermissionSets, Permissions and PermissionActions. + * + * @result {String[]) all PermissionSets, Permissions and PermissionActions + */ +PermissionUtil.getCompleteStructure = function() { + return db.table("select ASYS_PERMISSIONSET.ENTITY_ID, ASYS_PERMISSIONSET.ROLE_ID, ASYS_PERMISSIONSET.FIELD_ID, ASYS_PERMISSIONSET.ACCESSTYPE, ASYS_PERMISSION.COND, ASYS_PERMISSION.CONDTYPE, ASYS_PERMISSIONACTION.ACTION from ASYS_PERMISSIONSET" + + " join ASYS_PERMISSION on ASYS_PERMISSION.ASYS_PERMISSIONSET_ID = ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID" + + " join ASYS_PERMISSIONACTION on ASYS_PERMISSIONACTION.ASYS_PERMISSION_ID = ASYS_PERMISSION.ASYS_PERMISSIONID", alias); +} + /** * Returns all permissions of the given permission sets. * @@ -397,7 +408,7 @@ PermissionUtil.containsDuplicateActions = function(pPermId, pActionNew) { */ PermissionUtil.insertNewPermissionSet = function(pParentPermSet, pEntity, pRole, pField, pAccessType) { var table = "ASYS_PERMISSIONSET"; - var cols = db.getColumns(table); + var cols = db.getColumns(table, alias); var permsetid = util.getNewUUID(); var vals = [pAccessType, permsetid, pParentPermSet, pEntity, pField, pRole]; db.insertData(table, cols, null, vals, alias); @@ -417,7 +428,7 @@ PermissionUtil.insertNewPermissionSet = function(pParentPermSet, pEntity, pRole, */ PermissionUtil.insertNewPermission = function(pParentPermSet, pCond, pCondType) { var table = "ASYS_PERMISSION"; - var cols = db.getColumns(table); + var cols = db.getColumns(table, alias); var permid = util.getNewUUID(); var vals = [permid, pParentPermSet, pCond, pCondType]; db.insertData(table, cols, null, vals, alias); @@ -435,7 +446,7 @@ PermissionUtil.insertNewPermission = function(pParentPermSet, pCond, pCondType) */ PermissionUtil.insertNewPermissionAction = function(pParentPerm, pAction) { var table = "ASYS_PERMISSIONACTION"; - var cols = db.getColumns(table); + var cols = db.getColumns(table, alias); var permactionid = util.getNewUUID(); var vals = [pAction, permactionid, pParentPerm]; db.insertData(table, cols, null, vals, alias); -- GitLab