Skip to content
Snippets Groups Projects
Commit 1752d61c authored by Simon Leipold's avatar Simon Leipold
Browse files

Permissions - changed COND from varchar(255) to CLOB to save bigger conditions...

Permissions - changed COND from varchar(255) to CLOB to save bigger conditions (JSON from filter component)
parent ea3f8d51
No related branches found
No related tags found
No related merge requests found
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="s.leipold" id="746f6e0c-3eab-4424-867f-4cf4fb4c45bb">
<changeSet author="s.leipold" id="746f6e0c-3eab-4424-867f-4cf4fb4c45ba">
<createTable tableName="ASYS_PERMISSION">
<column name="ASYS_PERMISSIONID" type="CHAR(36)">
<constraints primaryKey="true" primaryKeyName="PK_ASYS_PERMISSION_ID"/>
</column>
<column name="ASYS_PERMISSIONSET_ID" type="CHAR(36)"/>
<column name="COND" type="VARCHAR(255)"/>
<column name="COND" type="CLOB"/>
<column name="CONDTYPE" type="BOOLEAN"/>
</createTable>
</changeSet>
......
......@@ -3214,25 +3214,25 @@
</auditSyncConfig>
<entityFields>
<entityFieldDb>
<name>PERMISSIONID</name>
<name>CONDTYPE</name>
<dbName></dbName>
<primaryKey v="true" />
<columnType v="1" />
<size v="36" />
<primaryKey v="false" />
<columnType v="16" />
<size v="1" />
<scale v="0" />
<notNull v="true" />
<isUnique v="true" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>PERMISSIONSET_ID</name>
<name>COND</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="1" />
<size v="36" />
<columnType v="2005" />
<size v="2147483647" />
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
......@@ -3242,25 +3242,25 @@
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>CONDTYPE</name>
<name>ASYS_PERMISSIONID</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="16" />
<size v="1" />
<primaryKey v="true" />
<columnType v="1" />
<size v="36" />
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<notNull v="true" />
<isUnique v="true" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>COND</name>
<name>ASYS_PERMISSIONSET_ID</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="12" />
<size v="255" />
<columnType v="1" />
<size v="36" />
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
......
......@@ -5,5 +5,7 @@ import("system.neon");
if(vars.get("$field.ACCESSTYPE") == "E") {
result.string(neon.COMPONENTSTATE_DISABLED);
} else {
result.string(neon.COMPONENTSTATE_EDITABLE);
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) {
result.string(neon.COMPONENTSTATE_EDITABLE);
}
}
\ No newline at end of file
......@@ -5,6 +5,5 @@ import("system.result");
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null) {
var entity = vars.get("$field.ENTITY");
logging.log("entity: " + entity);
result.string(JSON.stringify({entity: "" + entity + "", filter: {type: "group", operator: "AND", childs: []}}));
}
\ No newline at end of file
......@@ -8,7 +8,6 @@ import("system.tools");
import("Permission_lib");
import("Entity_lib");
var table, cols, vals;
var alias = "_____SYSTEMALIAS";
var sqlExt = "";
var permissionid = util.getNewUUID();
......@@ -46,7 +45,9 @@ if (checkInput([role, entity, accesstype, condtype, action])) {
var childPermissions = PermissionUtil.getAllChildPermissions(permissionsetid);
for each (var permid in childPermissions) {
if (PermissionUtil.getCondType(permid) == "false") {
PermissionUtil.deletePermission(permid);
let table = "ASYS_PERMISSION";
let cond = " ASYS_PERMISSIONID = '" + permid + "'";
db.deleteData(table, cond, alias); // delete permission with cond type = false
}
}
......@@ -58,7 +59,6 @@ if (checkInput([role, entity, accesstype, condtype, action])) {
} else {
// permission doesnt exist -> insert new permission
// new permissionid is needed to link actions to the permission in the next step
logging.log("onInsert cond: " + condition);
permissionid = PermissionUtil.insertNewPermission(permissionsetid, condition, condtype)
}
......@@ -86,7 +86,7 @@ function permExists(pRole, pEntity, pField, pAccesstype, pCondtype, pCondition)
var sqlExt = "";
if (checkInput([pCondition])) {
sqlExt += " and COND = '" + pCondition + "'";
sqlExt += " and COND like '%" + pCondition + "%'";
}
if (checkInput([pField])) {
......
......@@ -266,7 +266,7 @@ PermissionUtil.getDefaultPermission = function(pPermSetId) {
sqlStr = "select ASYS_PERMISSIONID from ASYS_PERMISSION"
+ " where ASYS_PERMISSIONSET_ID = '" + pPermSetId + "'"
+ " and (COND is null or COND = '" + noCond + "')";
+ " and (COND is null or COND like '%" + noCond + "%')";
return db.cell(sqlStr, alias);
}
......@@ -346,17 +346,6 @@ PermissionUtil.permSetIsEmpty = function(pPermSetId) {
return false;
}
/**
* Returns all PermissionSets, Permissions and PermissionActions.
*
* @result {String[]) all PermissionSets, Permissions and PermissionActions. The result can never be null.
*/
PermissionUtil.getCompleteStructure = function() {
return db.table("select ASYS_PERMISSIONSET.ENTITY_ID, ASYS_PERMISSIONSET.ROLE_ID, ASYS_PERMISSIONSET.FIELD_ID, ASYS_PERMISSIONSET.ACCESSTYPE, ASYS_PERMISSION.COND, ASYS_PERMISSION.CONDTYPE, ASYS_PERMISSIONACTION.ACTION from ASYS_PERMISSIONSET"
+ " join ASYS_PERMISSION on ASYS_PERMISSION.ASYS_PERMISSIONSET_ID = ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID"
+ " join ASYS_PERMISSIONACTION on ASYS_PERMISSIONACTION.ASYS_PERMISSION_ID = ASYS_PERMISSION.ASYS_PERMISSIONID", alias);
}
/**
* Returns all permissions of the given permission sets.
*
......@@ -390,28 +379,6 @@ PermissionUtil.getPermissionCondType = function(pPermId) {
return db.cell("select CONDTYPE from ASYS_PERMISSION where ASYS_PERMISSION.ASYS_PERMISSIONID = '" + pPermId + "'", alias);
}
/**
* Checks if the given actions are already linked to the permission.
*
* @param {String} pPermId the id of the permission
*
* @param {String} pActionNew actions which have to be checked if updated
*
* @result {String[]} returns the element which is a duplicate, otherwise null
*/
PermissionUtil.containsDuplicateActions = function(pPermId, pActionNew) {
var sqlStr = "select ACTION from ASYS_PERMISSIONACTION where ASYS_PERMISSION_ID = '" + pPermId + "'";
var actionsOld = db.array(db.COLUMN, sqlStr, alias);
var actionsNew = pActionNew.split(",");
var res = null
res = actionsOld.filter(function(val) {
return actionsNew.indexOf(val) != -1;
});
return res;
}
/**
* Inserts a new instance of a permission set into ASYS_PERMISSIONSET.
*
......@@ -487,45 +454,6 @@ PermissionUtil.getCondType = function(pPerm) {
return db.cell(sqlStr, alias);
}
/**
* Deletes a permissionset from ASYS_PERMISSIONSET.
*
* @param {String} pPermSetId The permission set id which should be deleted, mandatory
*
* @result {Integer} returns the number of deleted records
*/
PermissionUtil.deletePermissionSet = function(pPermSetId) {
var table = "ASYS_PERMISSIONSET";
var cond = " ASYS_PERMISSIONSETID = '" + pPermSetId + "'";
return db.deleteData(table, cond, alias);
}
/**
* Deletes a permission from ASYS_PERMISSION.
*
* @param {String} pPermId The permission id which should be deleted, mandatory
*
* @result {Integer} returns the number of deleted records
*/
PermissionUtil.deletePermission = function(pPermId) {
var table = "ASYS_PERMISSION";
var cond = " ASYS_PERMISSIONID = '" + pPermId + "'";
return db.deleteData(table, cond, alias);
}
/**
* Deletes a permission action from ASYS_PERMISSIONACTION.
*
* @param {String} pPermActionId The permission action id which should be deleted, mandatory
*
* @result {Integer} returns the number of deleted records
*/
PermissionUtil.deletePermissionAction = function(pPermActionId) {
var table = "ASYS_PERMISSIONACTION";
var cond = " ASYS_PERMISSIONACTIONID = '" + pPermActionId + "'";
return db.deleteData(table, cond, alias);
}
// arrDiff calculates different elements of two arrays and returns them as array, otherwise empty array
function arrDiff (arr1, arr2) {
var helperArr = [], diff = [];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment