import("system.util"); import("Util_lib"); 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 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.RoleName_param") && vars.get("$param.RoleName_param")) { roleName = vars.getString("$param.RoleName_param"); rolesOrEntitiesSelect.select("distinct ASYS_PERMISSIONSET.ENTITY_ID") .from("ASYS_PERMISSIONSET") .and("ASYS_PERMISSIONSET.ROLE_ID", roleName); } else if (vars.exists("$param.EntityId_param") && vars.get("$param.EntityId_param")) { entityName = vars.getString("$param.EntityId_param"); 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 var overview = { uid: util.getNewUUID(), entry: entry, view: PermissionEnums.FORBIDDEN_ACTION_ICON(), create: PermissionEnums.FORBIDDEN_ACTION_ICON(), read: PermissionEnums.FORBIDDEN_ACTION_ICON(), update: PermissionEnums.FORBIDDEN_ACTION_ICON(), "delete": PermissionEnums.FORBIDDEN_ACTION_ICON() }; if (vars.exists("$param.RoleName_param") && vars.get("$param.RoleName_param")) { entityPermSetId = PermissionUtil.getSetRoot(roleName, entry); } else if (vars.exists("$param.EntityId_param") && vars.get("$param.EntityId_param")) { entityPermSetId = PermissionUtil.getSetRoot(entry, entityName); } if (entityPermSetId) { var recordPermSetId = PermissionUtil.getRecordSetOfEntitySet(entityPermSetId); // entity permissions overview = prepareOverview(entityPermSetId, overview); // record permissions overview = prepareOverview(recordPermSetId, overview); res.push([overview.uid, overview.entry, overview.view, overview.create, overview.read, overview.update, overview["delete"]]); } } var order = vars.get("$local.order"); var columnOrder = { "ENTITY.value" : 1, "ACTION_VIEW.value" : 2, "ACTION_CREATE.value" : 3, "ACTION_READ.value" : 4, "ACTION_UPDATE.value" : 5, "ACTION_DELETE.value" : 6 }; var sortOrder = []; for (let field in order) { if (field in columnOrder) { sortOrder.push(columnOrder[field]); sortOrder.push(order[field] == "DOWN"); } } if (!sortOrder.length) //sort by entity or role by default sortOrder = [1, false]; ArrayUtils.sortMulti(res, sortOrder); result.object(res); function prepareOverview(pPermSetId, pOverview) { if (!pPermSetId) { return pOverview; } var conditionalPermActionId = []; var overview = pOverview; var permId = PermissionUtil.getPermissionWithoutCond(pPermSetId); if (permId && permId != "") { var defaultPermActionId = PermissionUtil.getActions([permId]); if (PermissionUtil.getCondType(permId) == 1) { for each (let actionSets in defaultPermActionId) { overview[PermissionUtil.resolveActionId(actionSets)] = PermissionEnums.PERMITTED_ACTION_ICON(); } } } var permIds = PermissionUtil.getPermissionWithCond(pPermSetId); if (permIds && permIds.length > 0) { for each (let permId in permIds) { conditionalPermActionId.push(PermissionUtil.getActions([permId])); } for each (let actionSets in conditionalPermActionId) { for each (let action in actionSets) { overview[PermissionUtil.resolveActionId(action)] = PermissionEnums.RESTRICTED_ACTION_ICON(); } } } return overview; }