Newer
Older
S.Leipold
committed
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")
{
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();
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);
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"]]);
S.Leipold
committed
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);
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();