example of roles api for john.
This commit is contained in:
+22
@@ -0,0 +1,22 @@
|
|||||||
|
package org.mifosng.platform.accounting.api.commands;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class RolePermissionCommand {
|
||||||
|
|
||||||
|
private final Long roleId;
|
||||||
|
private final Map<String, Boolean> permissions;
|
||||||
|
|
||||||
|
public RolePermissionCommand(final Long roleId, final Map<String, Boolean> permissionsMap) {
|
||||||
|
this.roleId = roleId;
|
||||||
|
this.permissions = permissionsMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Boolean> getPermissions() {
|
||||||
|
return this.permissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getRoleId() {
|
||||||
|
return this.roleId;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,12 +15,13 @@ import javax.ws.rs.core.Context;
|
|||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.UriInfo;
|
import javax.ws.rs.core.UriInfo;
|
||||||
|
|
||||||
|
import org.mifosng.platform.accounting.api.commands.RolePermissionCommand;
|
||||||
import org.mifosng.platform.api.commands.RoleCommand;
|
import org.mifosng.platform.api.commands.RoleCommand;
|
||||||
import org.mifosng.platform.api.data.EntityIdentifier;
|
import org.mifosng.platform.api.data.EntityIdentifier;
|
||||||
import org.mifosng.platform.api.data.PermissionData;
|
import org.mifosng.platform.api.data.PermissionData;
|
||||||
import org.mifosng.platform.api.data.PermissionUsageData;
|
import org.mifosng.platform.api.data.PermissionUsageData;
|
||||||
import org.mifosng.platform.api.data.RoleData;
|
import org.mifosng.platform.api.data.RoleData;
|
||||||
import org.mifosng.platform.api.data.RolePermissionData;
|
import org.mifosng.platform.api.data.RolePermissionsData;
|
||||||
import org.mifosng.platform.api.infrastructure.PortfolioApiDataConversionService;
|
import org.mifosng.platform.api.infrastructure.PortfolioApiDataConversionService;
|
||||||
import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService;
|
import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService;
|
||||||
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
|
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
|
||||||
@@ -37,143 +38,144 @@ import org.springframework.stereotype.Component;
|
|||||||
@Scope("singleton")
|
@Scope("singleton")
|
||||||
public class RolesApiResource {
|
public class RolesApiResource {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RoleReadPlatformService roleReadPlatformService;
|
private RoleReadPlatformService roleReadPlatformService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PermissionReadPlatformService permissionReadPlatformService;
|
private PermissionReadPlatformService permissionReadPlatformService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RoleWritePlatformService roleWritePlatformService;
|
private RoleWritePlatformService roleWritePlatformService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PortfolioApiDataConversionService apiDataConversionService;
|
private PortfolioApiDataConversionService apiDataConversionService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PortfolioApiJsonSerializerService apiJsonSerializerService;
|
private PortfolioApiJsonSerializerService apiJsonSerializerService;
|
||||||
|
|
||||||
private final String entityType = "ROLE";
|
private final String entityType = "ROLE";
|
||||||
@Autowired
|
@Autowired
|
||||||
private PlatformSecurityContext context;
|
private PlatformSecurityContext context;
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
public String retrieveAllRoles(@Context final UriInfo uriInfo) {
|
public String retrieveAllRoles(@Context final UriInfo uriInfo) {
|
||||||
|
|
||||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||||
|
|
||||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||||
|
|
||||||
final Collection<RoleData> roles = this.roleReadPlatformService.retrieveAllRoles();
|
final Collection<RoleData> roles = this.roleReadPlatformService.retrieveAllRoles();
|
||||||
|
|
||||||
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, roles);
|
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, roles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("template")
|
@Path("template")
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
public String retrieveNewRoleDetails(@Context final UriInfo uriInfo) {
|
public String retrieveNewRoleDetails(@Context final UriInfo uriInfo) {
|
||||||
|
|
||||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||||
|
|
||||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||||
|
|
||||||
final Collection<PermissionData> allPermissions = this.permissionReadPlatformService.retrieveAllPermissions();
|
final Collection<PermissionData> allPermissions = this.permissionReadPlatformService.retrieveAllPermissions();
|
||||||
|
|
||||||
final RoleData role = new RoleData(allPermissions, new ArrayList<PermissionData>());
|
final RoleData role = new RoleData(allPermissions, new ArrayList<PermissionData>());
|
||||||
|
|
||||||
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, role);
|
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, role);
|
||||||
}
|
}
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
public String createRole(final String jsonRequestBody) {
|
public String createRole(final String jsonRequestBody) {
|
||||||
|
|
||||||
final RoleCommand command = this.apiDataConversionService.convertJsonToRoleCommand(null, jsonRequestBody);
|
final RoleCommand command = this.apiDataConversionService.convertJsonToRoleCommand(null, jsonRequestBody);
|
||||||
|
|
||||||
final Long roleId = this.roleWritePlatformService.createRole(command);
|
final Long roleId = this.roleWritePlatformService.createRole(command);
|
||||||
|
|
||||||
return this.apiJsonSerializerService.serializeEntityIdentifier(new EntityIdentifier(roleId));
|
return this.apiJsonSerializerService.serializeEntityIdentifier(new EntityIdentifier(roleId));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO - General thing to fix about REST API is if use partial response approach of fields=id,name,selectedPermissions
|
// TODO - General thing to fix about REST API is if use partial response
|
||||||
// It will return just id,name parameters of RoleData and ignore description, however as PermissionData used in selectedPermissions collection
|
// approach of fields=id,name,selectedPermissions
|
||||||
// also has a field called description it gets ignored also. This is because of the implementation of ParameterListExclusionStrategy which doesnt take
|
// It will return just id,name parameters of RoleData and ignore
|
||||||
// into account the Object its looking at.
|
// description, however as PermissionData used in selectedPermissions
|
||||||
@GET
|
// collection
|
||||||
@Path("{roleId}")
|
// also has a field called description it gets ignored also. This is because
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
// of the implementation of ParameterListExclusionStrategy which doesnt take
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
// into account the Object its looking at.
|
||||||
public String retrieveRole(@PathParam("roleId") final Long roleId, @Context final UriInfo uriInfo) {
|
@GET
|
||||||
|
@Path("{roleId}")
|
||||||
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
|
public String retrieveRole(@PathParam("roleId") final Long roleId, @Context final UriInfo uriInfo) {
|
||||||
|
|
||||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||||
|
|
||||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||||
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
||||||
|
|
||||||
RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
|
RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
|
||||||
|
|
||||||
if (template) {
|
if (template) {
|
||||||
final Collection<PermissionData> availablePermissions = this.permissionReadPlatformService.retrieveAllPermissions();
|
final Collection<PermissionData> availablePermissions = this.permissionReadPlatformService.retrieveAllPermissions();
|
||||||
availablePermissions.removeAll(role.selectedPermissions());
|
availablePermissions.removeAll(role.selectedPermissions());
|
||||||
|
|
||||||
role = new RoleData(role, availablePermissions);
|
role = new RoleData(role, availablePermissions);
|
||||||
}
|
}
|
||||||
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, role);
|
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, role);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Path("{roleId}")
|
@Path("{roleId}")
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
public String updateRole(@PathParam("roleId") final Long roleId, final String jsonRequestBody) {
|
public String updateRole(@PathParam("roleId") final Long roleId, final String jsonRequestBody) {
|
||||||
|
|
||||||
final RoleCommand command = this.apiDataConversionService.convertJsonToRoleCommand(roleId, jsonRequestBody);
|
final RoleCommand command = this.apiDataConversionService.convertJsonToRoleCommand(roleId, jsonRequestBody);
|
||||||
|
|
||||||
this.roleWritePlatformService.updateRole(command);
|
this.roleWritePlatformService.updateRole(command);
|
||||||
|
|
||||||
return this.apiJsonSerializerService.serializeEntityIdentifier(new EntityIdentifier(roleId));
|
return this.apiJsonSerializerService.serializeEntityIdentifier(new EntityIdentifier(roleId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("{roleId}/permissions")
|
@Path("{roleId}/permissions")
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
public String retrieveRolePermissions(@PathParam("roleId") final Long roleId, @Context final UriInfo uriInfo) {
|
public String retrieveRolePermissions(@PathParam("roleId") final Long roleId, @Context final UriInfo uriInfo) {
|
||||||
|
|
||||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||||
|
|
||||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||||
|
|
||||||
RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
|
RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
|
||||||
Collection<PermissionUsageData> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId);
|
Collection<PermissionUsageData> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId);
|
||||||
RolePermissionData rolePermissionData = new RolePermissionData(role.getId(), role.getName(), role.getDescription(), permissionUsageData);
|
RolePermissionsData permissionsData = new RolePermissionsData(role.getId(), role.getName(), role.getDescription(),
|
||||||
|
permissionUsageData);
|
||||||
|
|
||||||
return this.apiJsonSerializerService.serializeRolePermissionDataToJson(prettyPrint, responseParameters, rolePermissionData);
|
return this.apiJsonSerializerService.serializeRolePermissionDataToJson(prettyPrint, responseParameters, permissionsData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PUT
|
|
||||||
@Path("{roleId}/permissions")
|
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
|
||||||
public String updateRolePermissions(@PathParam("roleId") final Long roleId, @Context final UriInfo uriInfo) {
|
|
||||||
return "{}";
|
|
||||||
/*
|
|
||||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
|
||||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
|
||||||
|
|
||||||
RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
|
@PUT
|
||||||
Collection<PermissionUsageData> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId);
|
@Path("{roleId}/permissions")
|
||||||
RolePermissionData rolePermissionData = new RolePermissionData(role.getId(), role.getName(), role.getDescription(), permissionUsageData);
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
|
public String updateRolePermissions(@PathParam("roleId") final Long roleId, final String jsonRequestBody) {
|
||||||
|
|
||||||
return this.apiJsonSerializerService.serializeRolePermissionDataToJson(prettyPrint, responseParameters, rolePermissionData);*/
|
final RolePermissionCommand command = this.apiDataConversionService.convertJsonToRolePermissionCommand(roleId, jsonRequestBody);
|
||||||
}
|
|
||||||
|
|
||||||
|
this.roleWritePlatformService.updateRolePermissions(command);
|
||||||
|
|
||||||
|
return this.apiJsonSerializerService.serializeEntityIdentifier(new EntityIdentifier(roleId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+28
-29
@@ -2,40 +2,39 @@ package org.mifosng.platform.api.data;
|
|||||||
|
|
||||||
public class PermissionUsageData {
|
public class PermissionUsageData {
|
||||||
|
|
||||||
private final String grouping;
|
private final String grouping;
|
||||||
private final String code;
|
private final String code;
|
||||||
private final String entityName;
|
private final String entityName;
|
||||||
private final String actionName;
|
private final String actionName;
|
||||||
private final Boolean selected;
|
private final Boolean selected;
|
||||||
|
|
||||||
public PermissionUsageData(final String grouping, final String code,
|
public PermissionUsageData(final String grouping, final String code, final String entityName, final String actionName,
|
||||||
final String entityName, final String actionName,
|
final Boolean selected) {
|
||||||
final Boolean selected) {
|
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;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getGrouping() {
|
public String getGrouping() {
|
||||||
return grouping;
|
return grouping;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCode() {
|
public String getCode() {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getEntityName() {
|
public String getEntityName() {
|
||||||
return entityName;
|
return entityName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getActionName() {
|
public String getActionName() {
|
||||||
return actionName;
|
return actionName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getSelected() {
|
public Boolean getSelected() {
|
||||||
return selected;
|
return selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
package org.mifosng.platform.api.data;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
public class RolePermissionData {
|
|
||||||
|
|
||||||
private final Long id;
|
|
||||||
private final String name;
|
|
||||||
private final String description;
|
|
||||||
|
|
||||||
private final Collection<PermissionUsageData> permissionUsageData;
|
|
||||||
|
|
||||||
public RolePermissionData(final Long id, final String name,
|
|
||||||
final String description,
|
|
||||||
final Collection<PermissionUsageData> permissionUsageData) {
|
|
||||||
this.id = id;
|
|
||||||
this.name = name;
|
|
||||||
this.description = description;
|
|
||||||
this.permissionUsageData = permissionUsageData;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection<PermissionUsageData> getPermissionUsageData() {
|
|
||||||
return permissionUsageData;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package org.mifosng.platform.api.data;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
public class RolePermissionsData {
|
||||||
|
|
||||||
|
private final Long id;
|
||||||
|
private final String name;
|
||||||
|
private final String description;
|
||||||
|
|
||||||
|
private final Collection<PermissionUsageData> permissionUsageData;
|
||||||
|
|
||||||
|
public RolePermissionsData(final Long id, final String name, final String description,
|
||||||
|
final Collection<PermissionUsageData> permissionUsageData) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.description = description;
|
||||||
|
this.permissionUsageData = permissionUsageData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<PermissionUsageData> getPermissionUsageData() {
|
||||||
|
return permissionUsageData;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+2
-2
@@ -38,7 +38,7 @@ import org.mifosng.platform.api.data.OfficeData;
|
|||||||
import org.mifosng.platform.api.data.OfficeTransactionData;
|
import org.mifosng.platform.api.data.OfficeTransactionData;
|
||||||
import org.mifosng.platform.api.data.PermissionData;
|
import org.mifosng.platform.api.data.PermissionData;
|
||||||
import org.mifosng.platform.api.data.RoleData;
|
import org.mifosng.platform.api.data.RoleData;
|
||||||
import org.mifosng.platform.api.data.RolePermissionData;
|
import org.mifosng.platform.api.data.RolePermissionsData;
|
||||||
import org.mifosng.platform.api.data.SavingAccountData;
|
import org.mifosng.platform.api.data.SavingAccountData;
|
||||||
import org.mifosng.platform.api.data.SavingProductData;
|
import org.mifosng.platform.api.data.SavingProductData;
|
||||||
import org.mifosng.platform.api.data.StaffData;
|
import org.mifosng.platform.api.data.StaffData;
|
||||||
@@ -232,7 +232,7 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String serializeRolePermissionDataToJson(final boolean prettyPrint, final Set<String> responseParameters,
|
public String serializeRolePermissionDataToJson(final boolean prettyPrint, final Set<String> responseParameters,
|
||||||
final RolePermissionData rolePermissionData) {
|
final RolePermissionsData rolePermissionData) {
|
||||||
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(ROLE_PERMISSION_DATA_PARAMETERS,
|
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(ROLE_PERMISSION_DATA_PARAMETERS,
|
||||||
prettyPrint, responseParameters);
|
prettyPrint, responseParameters);
|
||||||
return helper.serializedJsonFrom(gsonDeserializer, rolePermissionData);
|
return helper.serializedJsonFrom(gsonDeserializer, rolePermissionData);
|
||||||
|
|||||||
+3
@@ -1,5 +1,6 @@
|
|||||||
package org.mifosng.platform.api.infrastructure;
|
package org.mifosng.platform.api.infrastructure;
|
||||||
|
|
||||||
|
import org.mifosng.platform.accounting.api.commands.RolePermissionCommand;
|
||||||
import org.mifosng.platform.api.commands.AdjustLoanTransactionCommand;
|
import org.mifosng.platform.api.commands.AdjustLoanTransactionCommand;
|
||||||
import org.mifosng.platform.api.commands.BranchMoneyTransferCommand;
|
import org.mifosng.platform.api.commands.BranchMoneyTransferCommand;
|
||||||
import org.mifosng.platform.api.commands.LoanReassignmentCommand;
|
import org.mifosng.platform.api.commands.LoanReassignmentCommand;
|
||||||
@@ -41,6 +42,8 @@ public interface PortfolioApiDataConversionService {
|
|||||||
|
|
||||||
RoleCommand convertJsonToRoleCommand(Long resourceIdentifier, String json);
|
RoleCommand convertJsonToRoleCommand(Long resourceIdentifier, String json);
|
||||||
|
|
||||||
|
RolePermissionCommand convertJsonToRolePermissionCommand(Long roleId, String jsonRequestBody);
|
||||||
|
|
||||||
UserCommand convertJsonToUserCommand(Long resourceIdentifier, String json);
|
UserCommand convertJsonToUserCommand(Long resourceIdentifier, String json);
|
||||||
|
|
||||||
BranchMoneyTransferCommand convertJsonToBranchMoneyTransferCommand(String json);
|
BranchMoneyTransferCommand convertJsonToBranchMoneyTransferCommand(String json);
|
||||||
|
|||||||
+12
@@ -17,6 +17,7 @@ import java.util.Set;
|
|||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.joda.time.LocalDate;
|
import org.joda.time.LocalDate;
|
||||||
import org.joda.time.format.DateTimeFormat;
|
import org.joda.time.format.DateTimeFormat;
|
||||||
|
import org.mifosng.platform.accounting.api.commands.RolePermissionCommand;
|
||||||
import org.mifosng.platform.api.commands.AdjustLoanTransactionCommand;
|
import org.mifosng.platform.api.commands.AdjustLoanTransactionCommand;
|
||||||
import org.mifosng.platform.api.commands.BranchMoneyTransferCommand;
|
import org.mifosng.platform.api.commands.BranchMoneyTransferCommand;
|
||||||
import org.mifosng.platform.api.commands.ChargeCommand;
|
import org.mifosng.platform.api.commands.ChargeCommand;
|
||||||
@@ -264,6 +265,17 @@ public class PortfolioApiDataConversionServiceImpl implements PortfolioApiDataCo
|
|||||||
return new RoleCommand(modifiedParameters, resourceIdentifier, name, description, permissionIds);
|
return new RoleCommand(modifiedParameters, resourceIdentifier, name, description, permissionIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RolePermissionCommand convertJsonToRolePermissionCommand(final Long roleId, final String json) {
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); }
|
||||||
|
|
||||||
|
final Type typeOfMap = new TypeToken<Map<String, Boolean>>() {}.getType();
|
||||||
|
final Map<String, Boolean> permissionsMap = gsonConverter.fromJson(json, typeOfMap);
|
||||||
|
|
||||||
|
return new RolePermissionCommand(roleId, permissionsMap);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserCommand convertJsonToUserCommand(final Long resourceIdentifier, final String json) {
|
public UserCommand convertJsonToUserCommand(final Long resourceIdentifier, final String json) {
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -36,7 +36,7 @@ import org.mifosng.platform.api.data.OfficeData;
|
|||||||
import org.mifosng.platform.api.data.OfficeTransactionData;
|
import org.mifosng.platform.api.data.OfficeTransactionData;
|
||||||
import org.mifosng.platform.api.data.PermissionData;
|
import org.mifosng.platform.api.data.PermissionData;
|
||||||
import org.mifosng.platform.api.data.RoleData;
|
import org.mifosng.platform.api.data.RoleData;
|
||||||
import org.mifosng.platform.api.data.RolePermissionData;
|
import org.mifosng.platform.api.data.RolePermissionsData;
|
||||||
import org.mifosng.platform.api.data.SavingAccountData;
|
import org.mifosng.platform.api.data.SavingAccountData;
|
||||||
import org.mifosng.platform.api.data.SavingProductData;
|
import org.mifosng.platform.api.data.SavingProductData;
|
||||||
import org.mifosng.platform.api.data.StaffData;
|
import org.mifosng.platform.api.data.StaffData;
|
||||||
@@ -57,7 +57,7 @@ public interface PortfolioApiJsonSerializerService {
|
|||||||
|
|
||||||
String serializeRoleDataToJson(boolean prettyPrint, Set<String> responseParameters, RoleData role);
|
String serializeRoleDataToJson(boolean prettyPrint, Set<String> responseParameters, RoleData role);
|
||||||
|
|
||||||
String serializeRolePermissionDataToJson(boolean prettyPrint, Set<String> responseParameters, RolePermissionData rolePermissionData);
|
String serializeRolePermissionDataToJson(boolean prettyPrint, Set<String> responseParameters, RolePermissionsData rolePermissionData);
|
||||||
|
|
||||||
String serializeAppUserDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<AppUserData> users);
|
String serializeAppUserDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<AppUserData> users);
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -1,13 +1,17 @@
|
|||||||
package org.mifosng.platform.user.service;
|
package org.mifosng.platform.user.service;
|
||||||
|
|
||||||
|
import org.mifosng.platform.accounting.api.commands.RolePermissionCommand;
|
||||||
import org.mifosng.platform.api.commands.RoleCommand;
|
import org.mifosng.platform.api.commands.RoleCommand;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
|
||||||
public interface RoleWritePlatformService {
|
public interface RoleWritePlatformService {
|
||||||
|
|
||||||
@PreAuthorize(value = "hasAnyRole('ALL_FUNCTIONS', 'USER_ADMINISTRATION_SUPER_USER', 'CREATE_ROLE')")
|
@PreAuthorize(value = "hasAnyRole('ALL_FUNCTIONS', 'USER_ADMINISTRATION_SUPER_USER', 'CREATE_ROLE')")
|
||||||
Long createRole(RoleCommand command);
|
Long createRole(RoleCommand command);
|
||||||
|
|
||||||
@PreAuthorize(value = "hasAnyRole('ALL_FUNCTIONS', 'USER_ADMINISTRATION_SUPER_USER', 'UPDATE_ROLE')")
|
@PreAuthorize(value = "hasAnyRole('ALL_FUNCTIONS', 'USER_ADMINISTRATION_SUPER_USER', 'UPDATE_ROLE')")
|
||||||
Long updateRole(RoleCommand command);
|
Long updateRole(RoleCommand command);
|
||||||
|
|
||||||
|
@PreAuthorize(value = "hasAnyRole('ALL_FUNCTIONS', 'USER_ADMINISTRATION_SUPER_USER', 'PERMISSIONS_ROLE')")
|
||||||
|
Long updateRolePermissions(RolePermissionCommand command);
|
||||||
}
|
}
|
||||||
+80
-51
@@ -3,7 +3,9 @@ package org.mifosng.platform.user.service;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.mifosng.platform.accounting.api.commands.RolePermissionCommand;
|
||||||
import org.mifosng.platform.api.commands.RoleCommand;
|
import org.mifosng.platform.api.commands.RoleCommand;
|
||||||
import org.mifosng.platform.exceptions.RoleNotFoundException;
|
import org.mifosng.platform.exceptions.RoleNotFoundException;
|
||||||
import org.mifosng.platform.security.PlatformSecurityContext;
|
import org.mifosng.platform.security.PlatformSecurityContext;
|
||||||
@@ -19,74 +21,101 @@ import org.springframework.util.ObjectUtils;
|
|||||||
@Service
|
@Service
|
||||||
public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatformService {
|
public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatformService {
|
||||||
|
|
||||||
private final PlatformSecurityContext context;
|
private final PlatformSecurityContext context;
|
||||||
private final RoleRepository roleRepository;
|
private final RoleRepository roleRepository;
|
||||||
|
|
||||||
private final PermissionRepository permissionRepository;
|
private final PermissionRepository permissionRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public RoleWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final RoleRepository roleRepository, final PermissionRepository permissionRepository) {
|
public RoleWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final RoleRepository roleRepository,
|
||||||
this.context = context;
|
final PermissionRepository permissionRepository) {
|
||||||
this.roleRepository = roleRepository;
|
this.context = context;
|
||||||
this.permissionRepository = permissionRepository;
|
this.roleRepository = roleRepository;
|
||||||
}
|
this.permissionRepository = permissionRepository;
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public Long createRole(final RoleCommand command) {
|
public Long createRole(final RoleCommand command) {
|
||||||
|
|
||||||
context.authenticatedUser();
|
context.authenticatedUser();
|
||||||
|
|
||||||
RoleCommandValidator validator = new RoleCommandValidator(command);
|
RoleCommandValidator validator = new RoleCommandValidator(command);
|
||||||
validator.validateForCreate();
|
validator.validateForCreate();
|
||||||
|
|
||||||
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions());
|
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions());
|
||||||
|
|
||||||
Role entity = new Role(command.getName(), command.getDescription(), selectedPermissions);
|
Role entity = new Role(command.getName(), command.getDescription(), selectedPermissions);
|
||||||
|
|
||||||
this.roleRepository.save(entity);
|
this.roleRepository.save(entity);
|
||||||
|
|
||||||
return entity.getId();
|
return entity.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public Long updateRole(RoleCommand command) {
|
public Long updateRole(RoleCommand command) {
|
||||||
|
|
||||||
context.authenticatedUser();
|
context.authenticatedUser();
|
||||||
|
|
||||||
RoleCommandValidator validator = new RoleCommandValidator(command);
|
RoleCommandValidator validator = new RoleCommandValidator(command);
|
||||||
validator.validateForUpdate();
|
validator.validateForUpdate();
|
||||||
|
|
||||||
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions());
|
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions());
|
||||||
|
|
||||||
Role role = this.roleRepository.findOne(command.getId());
|
Role role = this.roleRepository.findOne(command.getId());
|
||||||
if (role == null) {
|
if (role == null) { throw new RoleNotFoundException(command.getId()); }
|
||||||
throw new RoleNotFoundException(command.getId());
|
role.update(command, selectedPermissions);
|
||||||
}
|
|
||||||
role.update(command, selectedPermissions);
|
|
||||||
|
|
||||||
this.roleRepository.save(role);
|
this.roleRepository.save(role);
|
||||||
|
|
||||||
return role.getId();
|
return role.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Permission> assembleListOfSelectedPermissions(final String[] selectedPermissionsArray) {
|
@Transactional
|
||||||
List<Long> selectedPermissionIds = new ArrayList<Long>();
|
@Override
|
||||||
List<Permission> selectedPermissions = new ArrayList<Permission>();
|
public Long updateRolePermissions(final RolePermissionCommand command) {
|
||||||
|
context.authenticatedUser();
|
||||||
|
|
||||||
if (!ObjectUtils.isEmpty(selectedPermissionsArray)) {
|
// RoleCommandValidator validator = new RoleCommandValidator(command);
|
||||||
for (String selectedId : selectedPermissionsArray) {
|
// validator.validateForUpdate();
|
||||||
selectedPermissionIds.add(Long.valueOf(selectedId));
|
|
||||||
}
|
|
||||||
|
|
||||||
Collection<Permission> allPermissions = this.permissionRepository.findAll();
|
final Role role = this.roleRepository.findOne(command.getRoleId());
|
||||||
for (Permission permission : allPermissions) {
|
if (role == null) {
|
||||||
if (selectedPermissionIds.contains(permission.getId())) {
|
throw new RoleNotFoundException(command.getRoleId());
|
||||||
selectedPermissions.add(permission);
|
}
|
||||||
}
|
|
||||||
}
|
Map<String, Boolean> permissions = command.getPermissions();
|
||||||
}
|
for (String permissionCode : permissions.keySet()) {
|
||||||
return selectedPermissions;
|
Boolean selected = permissions.get(permissionCode);
|
||||||
}
|
if (selected.booleanValue()) {
|
||||||
|
// this.permissionRepository.findOne(id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// role.update(command, selectedPermissions);
|
||||||
|
|
||||||
|
this.roleRepository.save(role);
|
||||||
|
|
||||||
|
return role.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Permission> assembleListOfSelectedPermissions(final String[] selectedPermissionsArray) {
|
||||||
|
List<Long> selectedPermissionIds = new ArrayList<Long>();
|
||||||
|
List<Permission> selectedPermissions = new ArrayList<Permission>();
|
||||||
|
|
||||||
|
if (!ObjectUtils.isEmpty(selectedPermissionsArray)) {
|
||||||
|
for (String selectedId : selectedPermissionsArray) {
|
||||||
|
selectedPermissionIds.add(Long.valueOf(selectedId));
|
||||||
|
}
|
||||||
|
|
||||||
|
Collection<Permission> allPermissions = this.permissionRepository.findAll();
|
||||||
|
for (Permission permission : allPermissions) {
|
||||||
|
if (selectedPermissionIds.contains(permission.getId())) {
|
||||||
|
selectedPermissions.add(permission);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return selectedPermissions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user