Skip to content
Snippets Groups Projects
contentProcess.js 5.08 KiB
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;
}