Something went wrong on our end
-
Simon Leipold authoredSimon Leipold authored
contentProcess.js 6.73 KiB
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;
}