import("system.project"); import("system.vars"); import("system.result"); import("system.db"); import("Permission_lib"); var res = []; var roleTitle = ""; var entityTitle = ""; var sqlCond = ""; var sqlStr = ""; 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 sqlCondEntityUsePermFlagSet = " and ENTITY_ID in ('" + entitiesUsePermFlagSet.join("','") + "')"; if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) { roleTitle = vars.getString("$param.RoleTitle_param"); sqlCond = " where ROLE_ID = '" + roleTitle + "'"; sqlStr = "select distinct ENTITY_ID from ASYS_PERMISSIONSET" + sqlCond + sqlCondEntityUsePermFlagSet; } else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) { entityTitle = vars.getString("$param.EntityTitle_param"); sqlCond = " where ENTITY_ID = '" + entityTitle + "'"; sqlStr = "select distinct ROLE_ID from ASYS_PERMISSIONSET" + sqlCond + sqlCondEntityUsePermFlagSet; } var rolesOrEntities = db.array(db.COLUMN, sqlStr); 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.getRootPermissionSet(roleTitle, entry); } else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) { entityPermSetId = PermissionUtil.getRootPermissionSet(entry, entityTitle); } var recordPermSetId = PermissionUtil.getChildRecordPermissionSet(entityPermSetId); 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 permId, defaultPermActionId, conditionalPermActionId = [], currOverview; switch (pMode) { case "default": permId = PermissionUtil.getDefaultPermission(pPermSetId); defaultPermActionId = PermissionUtil.getPermissionAction(permId); currOverview = pCurrOverview; if (PermissionUtil.getPermissionCondType(permId) == "true") { for each (let actionSets in defaultPermActionId) { switch (PermissionUtil.resolvePermissionActionId(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": permId = PermissionUtil.getConditionalPermission(pPermSetId); for each (let perm in permId) { conditionalPermActionId.push(PermissionUtil.getPermissionAction(perm)); } currOverview = pCurrOverview; for each (let actionSets in conditionalPermActionId) { for each (let action in actionSets) { switch (PermissionUtil.resolvePermissionActionId(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; }