From 3310f3c2c261295b46a5a4ae3a211146193f240a Mon Sep 17 00:00:00 2001 From: Simon Leipold <s.leipold@adito.de> Date: Mon, 5 Aug 2019 13:34:57 +0200 Subject: [PATCH] Permissions - bug fix: no more action duplicates possible --- .../PermissionAction_entity.aod | 1 + .../entityfields/action/dropDownProcess.js | 69 +------------------ .../PermissionAction_entity/onValidation.js | 19 +++++ .../recordcontainers/jdito/onInsert.js | 1 - 4 files changed, 21 insertions(+), 69 deletions(-) create mode 100644 entity/PermissionAction_entity/onValidation.js diff --git a/entity/PermissionAction_entity/PermissionAction_entity.aod b/entity/PermissionAction_entity/PermissionAction_entity.aod index 96c5c67d0f..337c7d2917 100644 --- a/entity/PermissionAction_entity/PermissionAction_entity.aod +++ b/entity/PermissionAction_entity/PermissionAction_entity.aod @@ -3,6 +3,7 @@ <name>PermissionAction_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Action</title> + <onValidation>%aditoprj%/entity/PermissionAction_entity/onValidation.js</onValidation> <titlePlural>Actions</titlePlural> <recordContainer>jDito</recordContainer> <entityFields> diff --git a/entity/PermissionAction_entity/entityfields/action/dropDownProcess.js b/entity/PermissionAction_entity/entityfields/action/dropDownProcess.js index 6d76464933..6da1b8813f 100644 --- a/entity/PermissionAction_entity/entityfields/action/dropDownProcess.js +++ b/entity/PermissionAction_entity/entityfields/action/dropDownProcess.js @@ -25,71 +25,4 @@ switch (accesstype) { ] } -result.object(actions); - - -//############################################################################# -//################only show actions which are not yet in the DB################ -//##########################not done yet####################################### -//############################################################################# -//import("system.logging"); -//import("Permission_lib"); -//import("system.vars"); -//import("system.result"); -// -//var permisson = vars.get("$param.PermissionId_param"); -//var actionIdsInDb = PermissionUtil.getPermissionAction(permisson); -//var actionsInDb = []; -//for each (var actionId in actionIdsInDb) { -// actionsInDb.push(PermissionUtil.resolvePermissionActionId(actionId)); -//} -// -//var entityActions = ["view", "create"]; -//var recordActions = ["read", "update", "delete"]; -//var fieldActions = ["read", "update"]; -//var diff; -// -//var accesstype = vars.get("$param.AccessType_param"); -//var actions = []; -// -//switch (accesstype) { -// case "E": -// diff = arrDiff(actionsInDb, entityActions); -// break; -// case "R": -// diff = arrDiff(actionsInDb, recordActions); -// break; -// case "F": -// diff = arrDiff(actionsInDb, fieldActions); -// break; -//} -// -//for each (let entry in diff) { -// actions.push([entry, entry]); -//} -// -//result.object(actions); -// -//// arrDiff calculates different elements of two arrays and returns them as array, otherwise empty array -//function arrDiff (arr1, arr2) { -// var helperArr = [], diff = []; -// -// for (let i = 0; i < arr1.length; i++) { -// helperArr[arr1[i]] = true; -// } -// -// for (let i = 0; i < arr2.length; i++) { -// if (helperArr[arr2[i]]) { -// delete helperArr[arr2[i]]; -// } -// else { -// helperArr[arr2[i]] = true; -// } -// } -// -// for (var k in helperArr) { -// diff.push(k); -// } -// -// return diff; -//} \ No newline at end of file +result.object(actions); \ No newline at end of file diff --git a/entity/PermissionAction_entity/onValidation.js b/entity/PermissionAction_entity/onValidation.js new file mode 100644 index 0000000000..d82b59851b --- /dev/null +++ b/entity/PermissionAction_entity/onValidation.js @@ -0,0 +1,19 @@ +import("system.vars"); +import("system.translate"); +import("system.result"); +import("Permission_lib"); + +var permissionId = vars.get("$param.PermissionId_param"); +var actionTitle = vars.get("$field.ACTION"); + +if (PermissionUtil.existsPermission(permissionId)) { + // existing permission + // check if action is already in DB + var actionsInDb = PermissionUtil.getPermissionAction(permissionId); + for each (var action in actionsInDb) { + if (PermissionUtil.resolvePermissionActionId(action) == actionTitle) { + result.string(translate.text("Action '" + actionTitle + "' already linked to this permission!")); + break; + } + } +} \ No newline at end of file diff --git a/entity/PermissionAction_entity/recordcontainers/jdito/onInsert.js b/entity/PermissionAction_entity/recordcontainers/jdito/onInsert.js index f7e1c66e82..3acce8156a 100644 --- a/entity/PermissionAction_entity/recordcontainers/jdito/onInsert.js +++ b/entity/PermissionAction_entity/recordcontainers/jdito/onInsert.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.db"); import("system.tools"); import("system.result"); -- GitLab