Something went wrong on our end
-
Simon Leipold authoredSimon Leipold authored
valueProcess.js 1.70 KiB
import("system.SQLTYPES");
import("Sql_lib");
import("system.db");
import("system.vars");
import("system.result");
import("Permission_lib");
var alias = SqlUtils.getSystemAlias();
var rootPermId = "";
var entity = vars.get("$field.ENTITY");
var roleName = vars.get("$field.ROLE");
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(roleName, entity, accesstype, field);
var fieldWhereCond = "ASYS_PERMISSIONSET.FIELD_ID is null";
if (field != "") {
fieldWhereCond = newWhere("ASYS_PERMISSIONSET.FIELD_ID", field, null, null, alias);
}
if (permSetId != "") {
// default permission
if (cond == "" || cond == emptyCond) {
rootPermId = PermissionUtil.getPermissionWithoutCond(permSetId);
} else { // conditional permission
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
if (rootPermId != "") {
result.string(rootPermId);
} else {
result.string(vars.get("$field.UID"));
}
} else {
result.string(vars.get("$field.UID"));
}