From 59d9869cc5ff98c873f43dfbf1c3c23d912db1ff Mon Sep 17 00:00:00 2001 From: Simon Leipold <s.leipold@adito.de> Date: Mon, 5 Aug 2019 14:31:12 +0200 Subject: [PATCH] Permissions - bug fix: conditions of already existing permissions can be updated now without error message from onValidation process --- .../PermissionAction_entity.aod | 4 ++++ entity/PermissionAction_entity/onValidation.js | 10 ++++++++-- .../PermissionDetail_entity.aod | 4 ++++ .../children/permissioncondition_param/valueProcess.js | 3 +++ 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 entity/PermissionDetail_entity/entityfields/permissionactions/children/permissioncondition_param/valueProcess.js diff --git a/entity/PermissionAction_entity/PermissionAction_entity.aod b/entity/PermissionAction_entity/PermissionAction_entity.aod index 337c7d2917..6092f3cce0 100644 --- a/entity/PermissionAction_entity/PermissionAction_entity.aod +++ b/entity/PermissionAction_entity/PermissionAction_entity.aod @@ -48,6 +48,10 @@ <name>AccessType_param</name> <expose v="true" /> </entityParameter> + <entityParameter> + <name>PermissionCondition_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/PermissionAction_entity/onValidation.js b/entity/PermissionAction_entity/onValidation.js index d82b59851b..e97725af0b 100644 --- a/entity/PermissionAction_entity/onValidation.js +++ b/entity/PermissionAction_entity/onValidation.js @@ -1,17 +1,23 @@ +import("system.db"); import("system.vars"); import("system.translate"); import("system.result"); import("Permission_lib"); -var permissionId = vars.get("$param.PermissionId_param"); +var alias = "_____SYSTEMALIAS"; var actionTitle = vars.get("$field.ACTION"); +var permissionId = vars.get("$param.PermissionId_param"); +var permCondInput = vars.get("$param.PermissionCondition_param"); if (PermissionUtil.existsPermission(permissionId)) { // existing permission // check if action is already in DB var actionsInDb = PermissionUtil.getPermissionAction(permissionId); + var sqlStr = "select COND from ASYS_PERMISSION where ASYS_PERMISSIONID='" + permissionId + "'"; + var permCondDb = db.cell(sqlStr, alias); + for each (var action in actionsInDb) { - if (PermissionUtil.resolvePermissionActionId(action) == actionTitle) { + if (PermissionUtil.resolvePermissionActionId(action) == actionTitle && permCondInput == permCondDb) { result.string(translate.text("Action '" + actionTitle + "' already linked to this permission!")); break; } diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod index 62d48dbd8e..1f674316df 100644 --- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod +++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod @@ -188,6 +188,10 @@ <name>AccessType_param</name> <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/permissionactions/children/accesstype_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>PermissionCondition_param</name> + <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissioncondition_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> </entityFields> diff --git a/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissioncondition_param/valueProcess.js b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissioncondition_param/valueProcess.js new file mode 100644 index 0000000000..13699cb90d --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissioncondition_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.vars"); +import("system.result"); +result.string(vars.get("$field.CONDITION")); \ No newline at end of file -- GitLab