import("Sql_lib"); import("system.project"); import("system.vars"); import("system.result"); import("system.db"); import("Permission_lib"); var res = []; var roleName = ""; var entityName = ""; let alias = SqlUtils.getSystemAlias(); var roleInternalEveryone = "INTERNAL_EVERYONE"; var entitiesMetaData = project.getDataModels(project.DATAMODEL_KIND_ENTITY); var entitiesUsePermFlagSet = []; // array, which contains ids of entities with usePermission flag set // gets all names of the entites which have the 'usePermission'-flag set (positive list) for each (let entityMetaData in entitiesMetaData) { if (entityMetaData[6] == "true") { entitiesUsePermFlagSet.push(entityMetaData[0]); } } var rolesOrEntitiesSelect = new SqlBuilder(alias).where(); var rolesOrEntities = []; if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) { roleName = vars.getString("$param.RoleTitle_param"); if (roleName == roleInternalEveryone) { var counter = 0; for each (let entityUsePermFlagSet in entitiesUsePermFlagSet) { if (PermissionUtil.getNumberOfPermissions(entityUsePermFlagSet, roleName) == 0) { // no permissions for INTERNAL_EVERYONE found -> display X's for all actions res.push(["NOREALPERMINDB" + counter++, entityUsePermFlagSet, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"]); } } } rolesOrEntitiesSelect.select("distinct ASYS_PERMISSIONSET.ENTITY_ID") .from("ASYS_PERMISSIONSET") .and("ASYS_PERMISSIONSET.ROLE_ID", roleName); } else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) { entityName = vars.getString("$param.EntityTitle_param"); if (PermissionUtil.getNumberOfPermissions(entityName, roleInternalEveryone) == 0) { // no permissions for INTERNAL_EVERYONE found -> display X's for all actions res.push(["NOREALPERMINDB", roleInternalEveryone, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"]); } rolesOrEntitiesSelect.select("distinct ASYS_PERMISSIONSET.ROLE_ID") .from("ASYS_PERMISSIONSET") .and("ASYS_PERMISSIONSET.ENTITY_ID", entityName); } rolesOrEntities = rolesOrEntitiesSelect .and("ASYS_PERMISSIONSET.ENTITY_ID", entitiesUsePermFlagSet, SqlBuilder.IN()) .arrayColumn(); var entityPermSetId = ""; for each (var entry in rolesOrEntities) { // entry contains either a role or an entity, depending on which param exists if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) { entityPermSetId = PermissionUtil.getSetRoot(roleName, entry); } else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) { entityPermSetId = PermissionUtil.getSetRoot(entry, entityName); } var recordPermSetId = newSelect("ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID", alias) .from("ASYS_PERMISSIONSET") .where("ASYS_PERMISSIONSET.ASYS_PERMISSIONSET_ID", entityPermSetId) .and("ASYS_PERMISSIONSET.ACCESSTYPE", 'R') .arrayColumn(); var currOverview = [entityPermSetId, entry, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"]; if (entityPermSetId) { var recordPermSetId = new SqlBuilder(alias) .select("ASYS_PERMISSIONSETID") .from("ASYS_PERMISSIONSET") .where("ASYS_PERMISSIONSET.ASYS_PERMISSIONSET_ID", entityPermSetId) .and("ACCESSTYPE = 'R'") .arrayColumn(); var currOverview = [entityPermSetId, entry, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"]; // default entity permissions currOverview = prepareOverview(entityPermSetId, currOverview, "default"); // conditional record permissions currOverview = prepareOverview(recordPermSetId, currOverview, "conditional"); // default record permissions currOverview = prepareOverview(recordPermSetId, currOverview, "default"); res.push(currOverview); } } result.object(res); function prepareOverview(pPermSetId, pCurrOverview, pMode) { var conditionalPermActionId = [], currOverview; switch (pMode) { case "default": var permId = PermissionUtil.getPermissionWithoutCond(pPermSetId); var defaultPermActionId = PermissionUtil.getActions([permId]); currOverview = pCurrOverview; if (PermissionUtil.getCondType(permId) == 1 ) { for each (let actionSets in defaultPermActionId) { switch (PermissionUtil.resolveActionId(actionSets)) { case "view": currOverview[2] = "VAADIN:CIRCLE"; break; case "create": currOverview[3] = "VAADIN:CIRCLE"; break; case "read": currOverview[4] = "VAADIN:CIRCLE"; break; case "update": currOverview[5] = "VAADIN:CIRCLE"; break; case "delete": currOverview[6] = "VAADIN:CIRCLE"; break; } } } break; case "conditional": var permIds = PermissionUtil.getPermissionWithCond(pPermSetId); permIds.forEach(function(permId) { conditionalPermActionId.push(PermissionUtil.getActions([permId])); }); currOverview = pCurrOverview; for each (let actionSets in conditionalPermActionId) { for each (let action in actionSets) { switch (PermissionUtil.resolveActionId(action)) { case "view": currOverview[2] = "VAADIN:CIRCLE_THIN"; break; case "create": currOverview[3] = "VAADIN:CIRCLE_THIN"; break; case "read": currOverview[4] = "VAADIN:CIRCLE_THIN"; break; case "update": currOverview[5] = "VAADIN:CIRCLE_THIN"; break; case "delete": currOverview[6] = "VAADIN:CIRCLE_THIN"; break; } } } break; } return currOverview; }