update permissions work to reflect checker permissions (for maker-checker)

This commit is contained in:
John Woodlock
2012-11-26 14:31:25 +00:00
parent e4e285d943
commit 092eabc0a0
5 changed files with 55 additions and 15 deletions
@@ -0,0 +1,19 @@
ALTER TABLE m_permission
CHANGE COLUMN `is_maker_checker` `can_maker_checker` TINYINT(1) NOT NULL DEFAULT '1' ;
/*
add all checker permissions
*/
insert into m_permission(grouping, code, entity_name, action_name, can_maker_checker)
select grouping, concat(code, '_CHECKER'), entity_name, action_name, false
from m_permission
where code not like 'READ_%'
and grouping != 'special';
/* 5k not enough for command json */
ALTER TABLE m_portfolio_command_source
CHANGE COLUMN `command_as_json` `command_as_json` TEXT NOT NULL ;
@@ -16,19 +16,19 @@ public class PermissionUsageData {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Boolean selected; private final Boolean selected;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Boolean isMakerChecker; private final Boolean canMakerChecker;
public static PermissionUsageData from(final String permissionCode, final boolean isSelected) { public static PermissionUsageData from(final String permissionCode, final boolean isSelected) {
return new PermissionUsageData(null, permissionCode, null, null, isSelected, null); return new PermissionUsageData(null, permissionCode, null, null, isSelected, null);
} }
public PermissionUsageData(final String grouping, final String code, final String entityName, final String actionName, public PermissionUsageData(final String grouping, final String code, final String entityName, final String actionName,
final Boolean selected, final Boolean isMakerChecker) { final Boolean selected, final Boolean canMakerChecker) {
this.grouping = grouping; this.grouping = grouping;
this.code = code; this.code = code;
this.entityName = entityName; this.entityName = entityName;
this.actionName = actionName; this.actionName = actionName;
this.selected = selected; this.selected = selected;
this.isMakerChecker = isMakerChecker; this.canMakerChecker = canMakerChecker;
} }
} }
@@ -105,22 +105,33 @@ public class ReadWriteNonCoreDataServiceImpl implements
validateAppTable(appTable); validateAppTable(appTable);
String createPermission = "'CREATE_" + datatable + "'"; String createPermission = "'CREATE_" + datatable + "'";
String createPermissionChecker = "'CREATE_" + datatable + "_CHECKER'";
String readPermission = "'READ_" + datatable + "'"; String readPermission = "'READ_" + datatable + "'";
String updatePermission = "'UPDATE_" + datatable + "'"; String updatePermission = "'UPDATE_" + datatable + "'";
String updatePermissionChecker = "'UPDATE_" + datatable + "_CHECKER'";
String deletePermission = "'DELETE_" + datatable + "'"; String deletePermission = "'DELETE_" + datatable + "'";
String deletePermissionChecker = "'DELETE_" + datatable + "_CHECKER'";
// TODO - put in batch command later // TODO - put in batch command later
String sql = "insert into x_registered_table (registered_table_name, application_table_name) values ('" String sql = "insert into x_registered_table (registered_table_name, application_table_name) values ('"
+ datatable + "', '" + appTable + "')"; + datatable + "', '" + appTable + "')";
genericDataService.updateSQL(sql, "SQL: " + sql); genericDataService.updateSQL(sql, "SQL: " + sql);
/*
sql = "insert into m_permission (grouping, code, action_name, entity_name, is_maker_checker) values " * add all permissions, including checker permissions for maintenance
* tasks
*/
sql = "insert into m_permission (grouping, code, action_name, entity_name, can_maker_checker) values "
+ "('datatable', " + "('datatable', "
+ createPermission + createPermission
+ ", 'CREATE', '" + ", 'CREATE', '"
+ datatable + datatable
+ "', true)," + "', true),"
+ "('datatable', " + "('datatable', "
+ createPermissionChecker
+ ", 'CREATE', '"
+ datatable
+ "', false),"
+ "('datatable', "
+ readPermission + readPermission
+ ", 'READ', '" + ", 'READ', '"
+ datatable + datatable
@@ -131,9 +142,19 @@ public class ReadWriteNonCoreDataServiceImpl implements
+ datatable + datatable
+ "', true)," + "', true),"
+ "('datatable', " + "('datatable', "
+ updatePermissionChecker
+ ", 'UPDATE', '"
+ datatable
+ "', false),"
+ "('datatable', "
+ deletePermission + deletePermission
+ ", 'DELETE', '" + ", 'DELETE', '"
+ datatable + "', true)"; + datatable
+ "', true),"
+ "('datatable', "
+ deletePermissionChecker
+ ", 'DELETE', '"
+ datatable + "', false)";
genericDataService.updateSQL(sql, "SQL: " + sql); genericDataService.updateSQL(sql, "SQL: " + sql);
@@ -149,9 +170,9 @@ public class ReadWriteNonCoreDataServiceImpl implements
// TODO - put in batch command later // TODO - put in batch command later
String permissionList = "('CREATE_" + datatable + "', 'READ_" String permissionList = "('CREATE_" + datatable + "', 'CREATE_"
+ datatable + "', 'UPDATE_" + datatable + "', 'DELETE_" + datatable + "_CHECKER', 'READ_" + datatable + "', 'UPDATE_"
+ datatable + "')"; + datatable + "', 'UPDATE_" + datatable + "_CHECKER', 'DELETE_" + datatable + "', 'DELETE_" + datatable + "_CHECKER')";
String sql = "delete from m_role_permission where m_role_permission.permission_id in (select id from m_permission where code in " String sql = "delete from m_role_permission where m_role_permission.permission_id in (select id from m_permission where code in "
+ permissionList + ")"; + permissionList + ")";
@@ -26,8 +26,8 @@ public class Permission extends AbstractPersistable<Long> {
private final String actionName; private final String actionName;
@SuppressWarnings("unused") @SuppressWarnings("unused")
@Column(name = "is_maker_checker", nullable = false) @Column(name = "can_maker_checker", nullable = false)
private Boolean isMakerChecker; private Boolean canMakerChecker;
protected Permission() { protected Permission() {
this.grouping = null; this.grouping = null;
@@ -54,19 +54,19 @@ public class PermissionReadPlatformServiceImpl implements PermissionReadPlatform
final String entityName = rs.getString("entityName"); final String entityName = rs.getString("entityName");
final String actionName = rs.getString("actionName"); final String actionName = rs.getString("actionName");
final Boolean selected = rs.getBoolean("selected"); final Boolean selected = rs.getBoolean("selected");
final Boolean isMakerChecker = rs.getBoolean("isMakerChecker"); final Boolean canMakerChecker = rs.getBoolean("canMakerChecker");
return new PermissionUsageData(grouping, code, entityName, actionName, selected, isMakerChecker); return new PermissionUsageData(grouping, code, entityName, actionName, selected, canMakerChecker);
} }
public String permissionSchema() { public String permissionSchema() {
return "select p.grouping, p.code, p.entity_name as entityName, p.action_name as actionName, true as selected, p.is_maker_checker as isMakerChecker" return "select p.grouping, p.code, p.entity_name as entityName, p.action_name as actionName, true as selected, p.can_maker_checker as canMakerChecker"
+ " from m_permission p " + " order by p.grouping, ifnull(entity_name, ''), p.code"; + " from m_permission p " + " order by p.grouping, ifnull(entity_name, ''), p.code";
} }
public String rolePermissionSchema() { public String rolePermissionSchema() {
return "select p.grouping, p.code, p.entity_name as entityName, p.action_name as actionName, if(isnull(rp.role_id), false, true) as selected, " return "select p.grouping, p.code, p.entity_name as entityName, p.action_name as actionName, if(isnull(rp.role_id), false, true) as selected, "
+ " if(isnull(rp.role_id), false, p.is_maker_checker) as isMakerChecker " + " if(isnull(rp.role_id), false, p.can_maker_checker) as canMakerChecker "
+ " from m_permission p " + " from m_permission p "
+ " left join m_role_permission rp on rp.permission_id = p.id and rp.role_id = ? " + " left join m_role_permission rp on rp.permission_id = p.id and rp.role_id = ? "
+ " order by p.grouping, ifnull(entity_name, ''), p.code"; + " order by p.grouping, ifnull(entity_name, ''), p.code";