From e8b40c6773dfe94b2d25e76492a361b60b3e8471 Mon Sep 17 00:00:00 2001 From: Simon Leipold <s.leipold@adito.de> Date: Wed, 5 Jun 2019 14:56:59 +0200 Subject: [PATCH] Permissions - Vorbelegung beim Erstellen von Berechtigungen --- .../PermissionDetail_entity.aod | 15 +++++++++++---- .../entityfields/accesstype/valueProcess.js | 7 ++++++- .../entityfields/condition/stateProcess.js | 9 +++++++++ .../entityfields/condtype/valueProcess.js | 2 ++ .../entityfields/entity/stateProcess.js | 11 +++++++++++ .../entityfields/field/dropDownProcess.js | 2 +- .../entityfields/field/stateProcess.js | 15 +++++++++++++++ .../entityfields/role/stateProcess.js | 11 +++++++++++ .../PermissionDetailPreview_view.aod | 4 ---- 9 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 entity/PermissionDetail_entity/entityfields/condition/stateProcess.js create mode 100644 entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js create mode 100644 entity/PermissionDetail_entity/entityfields/entity/stateProcess.js create mode 100644 entity/PermissionDetail_entity/entityfields/field/stateProcess.js create mode 100644 entity/PermissionDetail_entity/entityfields/role/stateProcess.js diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod index f3d756e765..74fc985e17 100644 --- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod +++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod @@ -13,6 +13,7 @@ <entityField> <name>CONDITION</name> <title>Condition</title> + <stateProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/condition/stateProcess.js</stateProcess> </entityField> <entityField> <name>ACTION</name> @@ -24,9 +25,10 @@ <name>ROLE</name> <title>Role</title> <consumer>Roles</consumer> + <groupable v="true" /> <linkedContext>Role</linkedContext> <mandatory v="true" /> - <groupable v="true" /> + <stateProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/role/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/role/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js</displayValueProcess> </entityField> @@ -34,17 +36,19 @@ <name>ENTITY</name> <title>Entity</title> <consumer>MetaData</consumer> + <groupable v="true" /> <linkedContext>PermissionMetaData</linkedContext> <mandatory v="true" /> - <groupable v="true" /> + <stateProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/entity/stateProcess.js</stateProcess> <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> <title>Field</title> - <dropDownProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js</dropDownProcess> <groupable v="true" /> + <dropDownProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js</dropDownProcess> + <stateProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/field/stateProcess.js</stateProcess> </entityField> <entityField> <name>UID</name> @@ -57,8 +61,9 @@ <name>ACCESSTYPE</name> <title>Access type</title> <consumer>KeywordAccessType</consumer> - <mandatory v="true" /> <groupable v="true" /> + <mandatory v="true" /> + <state>READONLY</state> <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js</displayValueProcess> </entityField> @@ -67,6 +72,8 @@ <title>Condition Type</title> <consumer>KeywordConditionType</consumer> <mandatory v="true" /> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/condtype/displayValueProcess.js</displayValueProcess> </entityField> <entityField> diff --git a/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js b/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js index c24340acec..a94ae37903 100644 --- a/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js +++ b/entity/PermissionDetail_entity/entityfields/accesstype/valueProcess.js @@ -1,3 +1,4 @@ +import("system.logging"); import("system.vars"); import("system.result"); import("Permission_lib"); @@ -5,14 +6,18 @@ import("Permission_lib"); var field = vars.get("$field.FIELD"); var role = vars.get("$field.ROLE"); var entity = vars.get("$field.ENTITY"); +var permId = vars.get("$field.UID"); var rootPermSet = PermissionUtil.getRootPermissionSet(role, entity); +var rootPerm = PermissionUtil.getDefaultPermission(rootPermSet); if (rootPermSet == "") { result.string("E"); +} else if (rootPerm == permId) { + result.string("E"); } else { result.string("R"); } if (field != undefined && field != null && field != "") { result.string("F"); -} \ No newline at end of file +} diff --git a/entity/PermissionDetail_entity/entityfields/condition/stateProcess.js b/entity/PermissionDetail_entity/entityfields/condition/stateProcess.js new file mode 100644 index 0000000000..f6b4510443 --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/condition/stateProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$field.ACCESSTYPE") == "E") { + result.string(neon.COMPONENTSTATE_DISABLED); +} else { + result.string(neon.COMPONENTSTATE_AUTO); +} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js b/entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js new file mode 100644 index 0000000000..ab53c1064a --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string("true"); \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/entity/stateProcess.js b/entity/PermissionDetail_entity/entityfields/entity/stateProcess.js new file mode 100644 index 0000000000..943bb08817 --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/entity/stateProcess.js @@ -0,0 +1,11 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +var entityTitle = vars.get("$param.EntityTitle_param"); + +if (entityTitle != undefined && entityTitle != null && entityTitle != "") { + result.string(neon.COMPONENTSTATE_READONLY); +} else { + result.string(neon.COMPONENTSTATE_AUTO); +} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js b/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js index a0b883d9d7..224911373c 100644 --- a/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js +++ b/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.vars"); import("system.project"); -var entityTitle = vars.get("$param.EntityTitle_param"); +var entityTitle = vars.get("$field.ENTITY"); if (entityTitle != undefined && entityTitle != null && entityTitle != "") { var entityStructure = project.getEntityStructure(entityTitle); var res = []; diff --git a/entity/PermissionDetail_entity/entityfields/field/stateProcess.js b/entity/PermissionDetail_entity/entityfields/field/stateProcess.js new file mode 100644 index 0000000000..b6485674e6 --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/field/stateProcess.js @@ -0,0 +1,15 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Permission_lib"); + +var role = vars.get("$field.ROLE"); +var entity = vars.get("$field.ENTITY"); + +rootPermSet = PermissionUtil.getRootPermissionSet(role, entity); + +if (rootPermSet == "") { + result.string(neon.COMPONENTSTATE_DISABLED); +} else { + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/role/stateProcess.js b/entity/PermissionDetail_entity/entityfields/role/stateProcess.js new file mode 100644 index 0000000000..f5fec84a8c --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/role/stateProcess.js @@ -0,0 +1,11 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +var roleTitle = vars.get("$param.RoleTitle_param"); + +if (roleTitle != undefined && roleTitle != null && roleTitle != "") { + result.string(neon.COMPONENTSTATE_READONLY); +} else { + result.string(neon.COMPONENTSTATE_AUTO); +} \ No newline at end of file diff --git a/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod b/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod index ca1524850b..e6db91d75c 100644 --- a/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod +++ b/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod @@ -19,10 +19,6 @@ <editMode v="true" /> <entityField>#ENTITY</entityField> <fields> - <entityFieldLink> - <name>7aa0ce6f-370c-4f50-8498-fd5768e0859c</name> - <entityField>CONDTYPE</entityField> - </entityFieldLink> <entityFieldLink> <name>dd33df7a-82e6-49a8-b35f-99d0187970e3</name> <entityField>CONDITION</entityField> -- GitLab