remove remaining old permissions code and update api docs for roles and permissions
This commit is contained in:
@@ -11,7 +11,7 @@ import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import org.mifosng.platform.api.data.PermissionData;
|
||||
import org.mifosng.platform.api.data.PermissionUsageData;
|
||||
import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService;
|
||||
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
|
||||
import org.mifosng.platform.security.PlatformSecurityContext;
|
||||
@@ -46,7 +46,7 @@ public class PermissionsApiResource {
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
|
||||
final Collection<PermissionData> permissions = this.permissionReadPlatformService.retrieveAllPermissions();
|
||||
final Collection<PermissionUsageData> permissions = this.permissionReadPlatformService.retrieveAllPermissions();
|
||||
|
||||
return this.apiJsonSerializerService.serializePermissionDataToJson(prettyPrint, responseParameters, permissions);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@ import javax.ws.rs.core.UriInfo;
|
||||
import org.mifosng.platform.accounting.api.commands.RolePermissionCommand;
|
||||
import org.mifosng.platform.api.data.CommandSourceData;
|
||||
import org.mifosng.platform.api.data.EntityIdentifier;
|
||||
import org.mifosng.platform.api.data.PermissionData;
|
||||
import org.mifosng.platform.api.data.PermissionUsageData;
|
||||
import org.mifosng.platform.api.data.RoleData;
|
||||
import org.mifosng.platform.api.data.RolePermissionsData;
|
||||
@@ -77,24 +76,6 @@ public class RolesApiResource {
|
||||
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, roles);
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("template")
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public String retrieveRoleTemplate(@Context final UriInfo uriInfo) {
|
||||
|
||||
context.authenticatedUser().validateHasReadPermission(resourceNameForPermissions);
|
||||
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
|
||||
final Collection<PermissionData> allPermissions = this.permissionReadPlatformService.retrieveAllPermissions();
|
||||
|
||||
final RoleData role = new RoleData(allPermissions, new ArrayList<PermissionData>());
|
||||
|
||||
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, role);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
@@ -123,16 +104,10 @@ public class RolesApiResource {
|
||||
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
||||
|
||||
final Long commandId = ApiParameterHelper.commandId(uriInfo.getQueryParameters());
|
||||
|
||||
RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
|
||||
if (template) {
|
||||
final Collection<PermissionData> availablePermissions = this.permissionReadPlatformService.retrieveAllPermissions();
|
||||
availablePermissions.removeAll(role.selectedPermissions());
|
||||
|
||||
role = new RoleData(role, availablePermissions);
|
||||
}
|
||||
if (commandId != null) {
|
||||
// currentChanges = handleRequestToIntegrateProposedChangesFromCommand(roleId, commandId);
|
||||
}
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
/**
|
||||
* Immutable data object for permission data.
|
||||
*/
|
||||
public class PermissionData {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private final Long id;
|
||||
@SuppressWarnings("unused")
|
||||
private final String name;
|
||||
@SuppressWarnings("unused")
|
||||
private final String description;
|
||||
private final String code;
|
||||
|
||||
public PermissionData(final Long id, final String name, final String description, final String code) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
PermissionData data = (PermissionData) obj;
|
||||
return this.code.equalsIgnoreCase(data.code);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.code.hashCode();
|
||||
}
|
||||
}
|
||||
+23
-19
@@ -5,27 +5,31 @@ package org.mifosng.platform.api.data;
|
||||
*/
|
||||
public class PermissionUsageData {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private final String grouping;
|
||||
@SuppressWarnings("unused")
|
||||
private final String code;
|
||||
@SuppressWarnings("unused")
|
||||
private final String entityName;
|
||||
@SuppressWarnings("unused")
|
||||
private final String actionName;
|
||||
@SuppressWarnings("unused")
|
||||
private final Boolean selected;
|
||||
@SuppressWarnings("unused")
|
||||
private final String grouping;
|
||||
@SuppressWarnings("unused")
|
||||
private final String code;
|
||||
@SuppressWarnings("unused")
|
||||
private final String entityName;
|
||||
@SuppressWarnings("unused")
|
||||
private final String actionName;
|
||||
@SuppressWarnings("unused")
|
||||
private final Boolean selected;
|
||||
@SuppressWarnings("unused")
|
||||
private final Boolean isMakerChecker;
|
||||
|
||||
public static PermissionUsageData from(final String permissionCode, final boolean isSelected) {
|
||||
return new PermissionUsageData(null, permissionCode, null, null, 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) {
|
||||
this.grouping = grouping;
|
||||
this.code = code;
|
||||
this.entityName = entityName;
|
||||
this.actionName = actionName;
|
||||
this.selected = selected;
|
||||
}
|
||||
public PermissionUsageData(final String grouping, final String code,
|
||||
final String entityName, final String actionName,
|
||||
final Boolean selected, final Boolean isMakerChecker) {
|
||||
this.grouping = grouping;
|
||||
this.code = code;
|
||||
this.entityName = entityName;
|
||||
this.actionName = actionName;
|
||||
this.selected = selected;
|
||||
this.isMakerChecker = isMakerChecker;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
@@ -11,10 +10,6 @@ public class RoleData {
|
||||
private final Long id;
|
||||
private final String name;
|
||||
private final String description;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private final Collection<PermissionData> availablePermissions;
|
||||
private final Collection<PermissionData> selectedPermissions;
|
||||
|
||||
// @SuppressWarnings("unused")
|
||||
// private final Collection<RoleData> currentChanges;
|
||||
@@ -23,32 +18,18 @@ public class RoleData {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.availablePermissions = null;
|
||||
this.selectedPermissions = null;
|
||||
}
|
||||
|
||||
public RoleData(final Long id, final String name, final String description, final Collection<PermissionData> selectedPermissions) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.availablePermissions = null;
|
||||
this.selectedPermissions = selectedPermissions;
|
||||
}
|
||||
|
||||
public RoleData(final Collection<PermissionData> availablePermissions, final Collection<PermissionData> selectedPermissions) {
|
||||
public RoleData() {
|
||||
this.id = null;
|
||||
this.name = null;
|
||||
this.description = null;
|
||||
this.availablePermissions = new ArrayList<PermissionData>(availablePermissions);
|
||||
this.selectedPermissions = new ArrayList<PermissionData>(selectedPermissions);
|
||||
}
|
||||
|
||||
public RoleData(final RoleData role, final Collection<PermissionData> availablePermissions) {
|
||||
public RoleData(final RoleData role) {
|
||||
this.id = role.id;
|
||||
this.name = role.name;
|
||||
this.description = role.description;
|
||||
this.availablePermissions = availablePermissions;
|
||||
this.selectedPermissions = role.selectedPermissions;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -62,10 +43,6 @@ public class RoleData {
|
||||
return this.id.hashCode();
|
||||
}
|
||||
|
||||
public Collection<PermissionData> selectedPermissions() {
|
||||
return this.selectedPermissions;
|
||||
}
|
||||
|
||||
public RolePermissionsData toRolePermissionData(final Collection<PermissionUsageData> permissionUsageData,
|
||||
final Collection<PermissionUsageData> currentChanges,
|
||||
final Collection<Collection<PermissionUsageData>> allChanges) {
|
||||
|
||||
+5
-5
@@ -14,6 +14,7 @@ import org.mifosng.platform.api.data.ClientAccountSummaryCollectionData;
|
||||
import org.mifosng.platform.api.data.ClientData;
|
||||
import org.mifosng.platform.api.data.ClientIdentifierData;
|
||||
import org.mifosng.platform.api.data.CodeData;
|
||||
import org.mifosng.platform.api.data.CommandSourceData;
|
||||
import org.mifosng.platform.api.data.ConfigurationData;
|
||||
import org.mifosng.platform.api.data.DatatableData;
|
||||
import org.mifosng.platform.api.data.DepositAccountData;
|
||||
@@ -31,11 +32,10 @@ import org.mifosng.platform.api.data.LoanProductData;
|
||||
import org.mifosng.platform.api.data.LoanReassignmentData;
|
||||
import org.mifosng.platform.api.data.LoanScheduleData;
|
||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.CommandSourceData;
|
||||
import org.mifosng.platform.api.data.NoteData;
|
||||
import org.mifosng.platform.api.data.OfficeData;
|
||||
import org.mifosng.platform.api.data.OfficeTransactionData;
|
||||
import org.mifosng.platform.api.data.PermissionData;
|
||||
import org.mifosng.platform.api.data.PermissionUsageData;
|
||||
import org.mifosng.platform.api.data.RoleData;
|
||||
import org.mifosng.platform.api.data.RolePermissionsData;
|
||||
import org.mifosng.platform.api.data.SavingAccountData;
|
||||
@@ -54,7 +54,7 @@ import com.google.gson.Gson;
|
||||
@Service
|
||||
public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApiJsonSerializerService {
|
||||
|
||||
private static final Set<String> PERMISSION_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "name", "description", "code"));
|
||||
private static final Set<String> PERMISSION_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("grouping", "code", "entityName", "actionName", "selected", "isMakerChecker"));
|
||||
private static final Set<String> ROLE_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "name", "description",
|
||||
"availablePermissions", "selectedPermissions"));
|
||||
private static final Set<String> ROLE_PERMISSION_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "name", "description",
|
||||
@@ -203,10 +203,10 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi
|
||||
|
||||
@Override
|
||||
public String serializePermissionDataToJson(final boolean prettyPrint, final Set<String> responseParameters,
|
||||
final Collection<PermissionData> permissions) {
|
||||
final Collection<PermissionUsageData> permissions) {
|
||||
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(PERMISSION_DATA_PARAMETERS,
|
||||
prettyPrint, responseParameters);
|
||||
return helper.serializedJsonFrom(gsonDeserializer, permissions.toArray(new PermissionData[permissions.size()]));
|
||||
return helper.serializedJsonFrom(gsonDeserializer, permissions.toArray(new PermissionUsageData[permissions.size()]));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -33,7 +33,7 @@ import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.NoteData;
|
||||
import org.mifosng.platform.api.data.OfficeData;
|
||||
import org.mifosng.platform.api.data.OfficeTransactionData;
|
||||
import org.mifosng.platform.api.data.PermissionData;
|
||||
import org.mifosng.platform.api.data.PermissionUsageData;
|
||||
import org.mifosng.platform.api.data.RoleData;
|
||||
import org.mifosng.platform.api.data.RolePermissionsData;
|
||||
import org.mifosng.platform.api.data.SavingAccountData;
|
||||
@@ -48,7 +48,7 @@ public interface PortfolioApiJsonSerializerService {
|
||||
|
||||
String serializeDatatableDataToJson(boolean prettyPrint, Collection<DatatableData> result);
|
||||
|
||||
String serializePermissionDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<PermissionData> permissions);
|
||||
String serializePermissionDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<PermissionUsageData> permissions);
|
||||
|
||||
String serializeRoleDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<RoleData> roles);
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.mifosng.platform.api.data.PermissionData;
|
||||
import org.springframework.data.jpa.domain.AbstractPersistable;
|
||||
|
||||
@Entity
|
||||
@@ -18,12 +17,6 @@ public class Permission extends AbstractPersistable<Long> {
|
||||
@Column(name = "code", nullable = false, length = 100)
|
||||
private final String code;
|
||||
|
||||
@Column(name = "default_name", nullable = false, length = 100)
|
||||
private final String defaultName;
|
||||
|
||||
@Column(name = "default_description", nullable = false, length = 500)
|
||||
private final String defaultDescription;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Column(name = "entity_name", nullable = true, length = 100)
|
||||
private final String entityName;
|
||||
@@ -31,12 +24,15 @@ public class Permission extends AbstractPersistable<Long> {
|
||||
@SuppressWarnings("unused")
|
||||
@Column(name = "action_name", nullable = true, length = 100)
|
||||
private final String actionName;
|
||||
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Column(name = "is_maker_checker", nullable = false)
|
||||
private Boolean isMakerChecker;
|
||||
|
||||
|
||||
protected Permission() {
|
||||
this.grouping = null;
|
||||
this.code = null;
|
||||
this.defaultDescription = null;
|
||||
this.defaultName = null;
|
||||
this.entityName = null;
|
||||
this.actionName = null;
|
||||
}
|
||||
@@ -49,7 +45,4 @@ public class Permission extends AbstractPersistable<Long> {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public PermissionData toData() {
|
||||
return new PermissionData(this.getId(), this.defaultName, this.defaultDescription, this.code);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package org.mifosng.platform.user.domain;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -14,7 +13,6 @@ import javax.persistence.ManyToMany;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.mifosng.platform.api.commands.RoleCommand;
|
||||
import org.mifosng.platform.api.data.PermissionData;
|
||||
import org.mifosng.platform.api.data.RoleData;
|
||||
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
|
||||
|
||||
@@ -75,13 +73,6 @@ public class Role extends AbstractAuditableCustom<AppUser, Long> {
|
||||
}
|
||||
|
||||
public RoleData toData() {
|
||||
|
||||
final Collection<PermissionData> rolePermissions = new ArrayList<PermissionData>(this.permissions.size());
|
||||
for (Permission permission : this.permissions) {
|
||||
PermissionData permissionData = permission.toData();
|
||||
rolePermissions.add(permissionData);
|
||||
}
|
||||
|
||||
return new RoleData(this.getId(), this.name, this.description, rolePermissions);
|
||||
return new RoleData(this.getId(), this.name, this.description);
|
||||
}
|
||||
}
|
||||
+2
-3
@@ -2,12 +2,11 @@ package org.mifosng.platform.user.service;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.mifosng.platform.api.data.PermissionData;
|
||||
import org.mifosng.platform.api.data.PermissionUsageData;
|
||||
|
||||
public interface PermissionReadPlatformService {
|
||||
|
||||
Collection<PermissionData> retrieveAllPermissions();
|
||||
Collection<PermissionUsageData> retrieveAllPermissions();
|
||||
|
||||
Collection<PermissionUsageData> retrieveAllRolePermissions(Long roleId);
|
||||
Collection<PermissionUsageData> retrieveAllRolePermissions(Long roleId);
|
||||
}
|
||||
+19
-30
@@ -4,9 +4,7 @@ import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.mifosng.platform.api.data.PermissionData;
|
||||
import org.mifosng.platform.api.data.PermissionUsageData;
|
||||
import org.mifosng.platform.infrastructure.JdbcSupport;
|
||||
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
|
||||
import org.mifosng.platform.security.PlatformSecurityContext;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -27,39 +25,22 @@ public class PermissionReadPlatformServiceImpl implements PermissionReadPlatform
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<PermissionData> retrieveAllPermissions() {
|
||||
public Collection<PermissionUsageData> retrieveAllPermissions() {
|
||||
|
||||
context.authenticatedUser();
|
||||
|
||||
final PermissionMapper mapper = new PermissionMapper();
|
||||
final String sql = "select " + mapper.schema() + " order by p.id";
|
||||
|
||||
final PermissionUsageDataMapper mapper = new PermissionUsageDataMapper();
|
||||
final String sql = mapper.permissionSchema();
|
||||
|
||||
return this.jdbcTemplate.query(sql, mapper, new Object[] {});
|
||||
}
|
||||
|
||||
private static final class PermissionMapper implements RowMapper<PermissionData> {
|
||||
|
||||
@Override
|
||||
public PermissionData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
|
||||
|
||||
final Long id = JdbcSupport.getLong(rs, "id");
|
||||
final String name = rs.getString("name");
|
||||
final String description = rs.getString("description");
|
||||
final String code = rs.getString("code");
|
||||
|
||||
return new PermissionData(id, name, description, code);
|
||||
}
|
||||
|
||||
public String schema() {
|
||||
return " p.id as id, p.default_name as name, p.default_description as description, p.code as code from m_permission p ";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<PermissionUsageData> retrieveAllRolePermissions(final Long roleId) {
|
||||
|
||||
final PermissionUsageDataMapper mapper = new PermissionUsageDataMapper();
|
||||
final String sql = mapper.schema();
|
||||
final String sql = mapper.rolePermissionSchema();
|
||||
|
||||
return this.jdbcTemplate.query(sql, mapper, new Object[] { roleId });
|
||||
}
|
||||
@@ -74,15 +55,23 @@ 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");
|
||||
|
||||
return new PermissionUsageData(grouping, code, entityName, actionName, selected);
|
||||
return new PermissionUsageData(grouping, code, entityName, actionName, selected, isMakerChecker);
|
||||
}
|
||||
|
||||
public String schema() {
|
||||
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 "
|
||||
+ "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";
|
||||
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"
|
||||
+ " 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 "
|
||||
+ " 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";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user