diff --git a/mifosng-db/patches/patch-02-permissions-maker-checker-related.sql b/mifosng-db/patches/patch-02-permissions-maker-checker-related.sql new file mode 100644 index 000000000..9a461456a --- /dev/null +++ b/mifosng-db/patches/patch-02-permissions-maker-checker-related.sql @@ -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 ; + + diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionUsageData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionUsageData.java index 8b2481c90..c8e522119 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionUsageData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionUsageData.java @@ -16,19 +16,19 @@ public class PermissionUsageData { @SuppressWarnings("unused") private final Boolean selected; @SuppressWarnings("unused") - private final Boolean isMakerChecker; + private final Boolean canMakerChecker; public static PermissionUsageData from(final String permissionCode, final boolean isSelected) { return new PermissionUsageData(null, permissionCode, null, null, isSelected, null); } 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.code = code; this.entityName = entityName; this.actionName = actionName; this.selected = selected; - this.isMakerChecker = isMakerChecker; + this.canMakerChecker = canMakerChecker; } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java index eeaf204c9..38329d6ea 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java @@ -105,22 +105,33 @@ public class ReadWriteNonCoreDataServiceImpl implements validateAppTable(appTable); String createPermission = "'CREATE_" + datatable + "'"; + String createPermissionChecker = "'CREATE_" + datatable + "_CHECKER'"; String readPermission = "'READ_" + datatable + "'"; String updatePermission = "'UPDATE_" + datatable + "'"; + String updatePermissionChecker = "'UPDATE_" + datatable + "_CHECKER'"; String deletePermission = "'DELETE_" + datatable + "'"; + String deletePermissionChecker = "'DELETE_" + datatable + "_CHECKER'"; // TODO - put in batch command later String sql = "insert into x_registered_table (registered_table_name, application_table_name) values ('" + datatable + "', '" + appTable + "')"; 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', " + createPermission + ", 'CREATE', '" + datatable + "', true)," + "('datatable', " + + createPermissionChecker + + ", 'CREATE', '" + + datatable + + "', false)," + + "('datatable', " + readPermission + ", 'READ', '" + datatable @@ -131,9 +142,19 @@ public class ReadWriteNonCoreDataServiceImpl implements + datatable + "', true)," + "('datatable', " + + updatePermissionChecker + + ", 'UPDATE', '" + + datatable + + "', false)," + + "('datatable', " + deletePermission + ", 'DELETE', '" - + datatable + "', true)"; + + datatable + + "', true)," + + "('datatable', " + + deletePermissionChecker + + ", 'DELETE', '" + + datatable + "', false)"; genericDataService.updateSQL(sql, "SQL: " + sql); @@ -149,9 +170,9 @@ public class ReadWriteNonCoreDataServiceImpl implements // TODO - put in batch command later - String permissionList = "('CREATE_" + datatable + "', 'READ_" - + datatable + "', 'UPDATE_" + datatable + "', 'DELETE_" - + datatable + "')"; + String permissionList = "('CREATE_" + datatable + "', 'CREATE_" + + datatable + "_CHECKER', 'READ_" + datatable + "', 'UPDATE_" + + 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 " + permissionList + ")"; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Permission.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Permission.java index 4a1d3a068..41c5288dd 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Permission.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Permission.java @@ -26,8 +26,8 @@ public class Permission extends AbstractPersistable { private final String actionName; @SuppressWarnings("unused") - @Column(name = "is_maker_checker", nullable = false) - private Boolean isMakerChecker; + @Column(name = "can_maker_checker", nullable = false) + private Boolean canMakerChecker; protected Permission() { this.grouping = null; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java index a4d19133b..8c43088be 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java @@ -54,19 +54,19 @@ public class PermissionReadPlatformServiceImpl implements PermissionReadPlatform final String entityName = rs.getString("entityName"); final String actionName = rs.getString("actionName"); 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() { - 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"; } 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, " - + " 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 " + " 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";