diff --git a/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js index db4185a1cc56f6d0ab7b8d34e83ad8c9b62fc91c..74184cabbc33d5b127564052dbf1a3c3ee062a81 100644 --- a/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js +++ b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js @@ -1,3 +1,4 @@ +import("system.SQLTYPES"); import("Sql_lib"); import("system.db"); import("system.vars"); @@ -7,16 +8,17 @@ import("Permission_lib"); var alias = SqlUtils.getSystemAlias(); var rootPermId = ""; var entity = vars.get("$field.ENTITY"); -var role = vars.get("$field.ROLE"); +var roleTitle = vars.get("$field.ROLE"); +var roleName = PermissionUtil.resolveRoleTitle(roleTitle); var cond = vars.get("$field.CONDITION"); var field = vars.get("$field.FIELD"); var accesstype = vars.get("$field.ACCESSTYPE"); var emptyCond = PermissionUtil.getEmptyCondString(entity); -var permSetId = PermissionUtil.getSet(role, entity, accesstype, field); -var fieldWhereCond = " and ASYS_PERMISSIONSET.FIELD_ID is null" +var permSetId = PermissionUtil.getSet(roleName, entity, accesstype, field); +var fieldWhereCond = "ASYS_PERMISSIONSET.FIELD_ID is null"; if (field != "") { - fieldWhereCond = " and ASYS_PERMISSIONSET.FIELD_ID = '" + field + "'" + fieldWhereCond = "ASYS_PERMISSIONSET.FIELD_ID = '" + field + "'"; } if (permSetId != "") { @@ -24,8 +26,16 @@ if (permSetId != "") { if (cond == "" || cond == emptyCond) { rootPermId = PermissionUtil.getPermissionWithoutCond(permSetId); } else { // conditional permission - let sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION join ASYS_PERMISSIONSET on ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID = ASYS_PERMISSION.ASYS_PERMISSIONSET_ID where cast(ASYS_PERMISSION.COND as varchar(" + cond.length + ")) = '" + cond + "'" + fieldWhereCond + " and ASYS_PERMISSIONSET.ROLE_ID='" + role + "' and ASYS_PERMISSIONSET.ENTITY_ID='" + entity + "'"; - rootPermId = db.cell(sqlStr, alias); + var sqlHelper = new SqlMaskingUtils(alias); + + rootPermId = newSelect("ASYS_PERMISSIONID", alias) + .from("ASYS_PERMISSION") + .join("ASYS_PERMISSIONSET", "ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID = ASYS_PERMISSION.ASYS_PERMISSIONSET_ID") + .where("ASYS_PERMISSION.COND", cond, sqlHelper.cast("#", SQLTYPES.VARCHAR, cond.length) + " = ?") + .and(fieldWhereCond) + .and("ASYS_PERMISSIONSET.ROLE_ID", roleName) + .and("ASYS_PERMISSIONSET.ENTITY_ID", entity) + .cell(); } // return valid permId diff --git a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js index def0c1cc3c3e31886fcfadb14db53f5ab1a37051..c99614f12f2d1f5c9ab7a3323041a6fa425d209d 100644 --- a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js @@ -6,8 +6,8 @@ import("system.db"); import("Permission_lib"); var res = []; -var roleTitle = ""; -var entityTitle = ""; +var roleName = ""; +var entityName = ""; var sqlCond = ""; var sqlStr = ""; let alias = SqlUtils.getSystemAlias(); @@ -23,41 +23,50 @@ for each (let entityMetaData in entitiesMetaData) { } } -var sqlCondEntityUsePermFlagSet = " and ENTITY_ID in ('" + entitiesUsePermFlagSet.join("','") + "')"; +var rolesOrEntitiesSelect = new SqlBuilder(alias).where(); +var rolesOrEntities = []; if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) { - roleTitle = vars.getString("$param.RoleTitle_param"); - if (roleTitle == roleInternalEveryone) { + roleName = vars.getString("$param.RoleTitle_param"); + if (roleName == roleInternalEveryone) { var counter = 0; for each (let entityUsePermFlagSet in entitiesUsePermFlagSet) { - if (PermissionUtil.getNumberOfPermissions(entityUsePermFlagSet, roleTitle) == 0) { + 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"]); } } } - sqlCond = " where ROLE_ID = '" + roleTitle + "'"; - sqlStr = "select distinct ENTITY_ID from ASYS_PERMISSIONSET" + sqlCond + sqlCondEntityUsePermFlagSet; + 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")) { - entityTitle = vars.getString("$param.EntityTitle_param"); - if (PermissionUtil.getNumberOfPermissions(entityTitle, roleInternalEveryone) == 0) { + 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"]); } - sqlCond = " where ENTITY_ID = '" + entityTitle + "'"; - sqlStr = "select distinct ROLE_ID from ASYS_PERMISSIONSET" + sqlCond + sqlCondEntityUsePermFlagSet; + rolesOrEntitiesSelect.select("distinct ASYS_PERMISSIONSET.ROLE_ID") + .from("ASYS_PERMISSIONSET") + .and("ASYS_PERMISSIONSET.ENTITY_ID", entityName); } -var rolesOrEntities = db.array(db.COLUMN, sqlStr); +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(roleTitle, entry); + entityPermSetId = PermissionUtil.getSetRoot(roleName, entry); } else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) { - entityPermSetId = PermissionUtil.getSetRoot(entry, entityTitle); + entityPermSetId = PermissionUtil.getSetRoot(entry, entityName); } - var recordPermSetId = db.array(db.COLUMN, SqlCondition.begin().and("ASYS_PERMISSIONSET_ID = '" + entityPermSetId + "'").and("ACCESSTYPE = 'R'") - .buildSql("select ASYS_PERMISSIONSETID from ASYS_PERMISSIONSET"), alias); + 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"]; // default entity permissions