diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod index c7b8b9964650d39d4485dc416d096bb9b14547a3..805cd843553b44db1fa41862d00a6f860b38af7c 100644 --- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod +++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod @@ -8,6 +8,7 @@ </siblings> <contentTitleProcess>%aditoprj%/entity/PermissionDetail_entity/contentTitleProcess.js</contentTitleProcess> <iconIdProcess>%aditoprj%/entity/PermissionDetail_entity/iconIdProcess.js</iconIdProcess> + <titlePlural>Permission Details</titlePlural> <recordContainer>jDito</recordContainer> <entityFields> <entityProvider> @@ -16,7 +17,9 @@ <entityField> <name>CONDITION</name> <title>Condition</title> + <contentType>FILTER_TREE</contentType> <stateProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/condition/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/condition/valueProcess.js</valueProcess> </entityField> <entityField> <name>ACTION</name> diff --git a/entity/PermissionDetail_entity/contentTitleProcess.js b/entity/PermissionDetail_entity/contentTitleProcess.js index 28deb444c318b28bd734b722ef718b7537b24ade..7e35ace3e3ce47d5f46b1b494dff2c1ad9887f09 100644 --- a/entity/PermissionDetail_entity/contentTitleProcess.js +++ b/entity/PermissionDetail_entity/contentTitleProcess.js @@ -3,6 +3,8 @@ import("system.vars"); import("system.result"); var res = ""; +var entityName = vars.get("$field.ENTITY"); +var noCond = "{\"entity\":\"" + entityName + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}"; switch (vars.get("$field.ACCESSTYPE")) { case "E": @@ -25,7 +27,7 @@ switch (vars.get("$field.ACCESSTYPE")) { break; } -if (vars.get("$field.CONDITION") != "") { +if (vars.get("$field.CONDITION") != noCond && vars.get("$field.CONDITION") != "") { res += " - conditional"; } else { res += " - default"; diff --git a/entity/PermissionDetail_entity/entityfields/condition/valueProcess.js b/entity/PermissionDetail_entity/entityfields/condition/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a7a5aae60f3344712e5f1a7255faaadedf59efde --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/condition/valueProcess.js @@ -0,0 +1,10 @@ +import("system.logging"); +import("system.neon"); +import("system.vars"); +import("system.result"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null) { + var entity = vars.get("$field.ENTITY"); + logging.log("entity: " + entity); + result.string(JSON.stringify({entity: "" + entity + "", filter: {type: "group", operator: "AND", childs: []}})); +} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js index 3a8117c2036e0fd0b85fe1172c271059bb518746..b521f8d71824429bad1047462db01501a7c6fb4f 100644 --- a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js +++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js @@ -1,3 +1,4 @@ +import("system.logging"); import("Permission_lib"); import("system.neon"); import("system.util"); @@ -57,6 +58,7 @@ if (checkInput([role, entity, accesstype, condtype, action])) { } else { // permission doesnt exist -> insert new permission // new permissionid is needed to link actions to the permission in the next step + logging.log("onInsert cond: " + condition); permissionid = PermissionUtil.insertNewPermission(permissionsetid, condition, condtype) } diff --git a/process/Permission_lib/process.js b/process/Permission_lib/process.js index 999846f31bde5082d5b45cdd0f75ec7247317011..dab7d4ce7fd0d421255f6f5da9539667d87cb7d4 100644 --- a/process/Permission_lib/process.js +++ b/process/Permission_lib/process.js @@ -260,9 +260,13 @@ PermissionUtil.getRootFieldPermission = function(pPermId) { * @result {String} returns the id of the default permission of a given permission set. Never 'null', empty string if there is no result. */ PermissionUtil.getDefaultPermission = function(pPermSetId) { - var sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION" + var sqlStr = "select ENTITY_ID from ASYS_PERMISSIONSET where ASYS_PERMISSIONSETID = '" + pPermSetId + "'"; + var entityName = db.cell(sqlStr, alias); + var noCond = "{\"entity\":\"" + entityName + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}"; + + sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION" + " where ASYS_PERMISSIONSET_ID = '" + pPermSetId + "'" - + " and COND is null" + + " and (COND is null or COND = '" + noCond + "')"; return db.cell(sqlStr, alias); } @@ -274,9 +278,13 @@ PermissionUtil.getDefaultPermission = function(pPermSetId) { * @result {String[]} returns the ids of the conditional permissions of a given permission set. The result can never be null. */ PermissionUtil.getConditionalPermission = function(pPermSetId) { - var sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION" + var sqlStr = "select ENTITY_ID from ASYS_PERMISSIONSET where ASYS_PERMISSIONSETID = '" + pPermSetId + "'"; + var entityName = db.cell(sqlStr, alias); + var noCond = "{\"entity\":\"" + entityName + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}"; + + sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION" + " where ASYS_PERMISSIONSET_ID = '" + pPermSetId + "'" - + " and COND is not null" + + " and COND is not null and COND not like '" + noCond + "'"; return db.table(sqlStr, alias); }