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.UriInfo;
|
||||
|
||||
import org.mifosng.platform.accounting.api.commands.RolePermissionCommand;
|
||||
import org.mifosng.platform.api.commands.RoleCommand;
|
||||
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.RolePermissionData;
|
||||
import org.mifosng.platform.api.data.RolePermissionsData;
|
||||
import org.mifosng.platform.api.infrastructure.PortfolioApiDataConversionService;
|
||||
import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService;
|
||||
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
|
||||
@@ -37,143 +38,144 @@ import org.springframework.stereotype.Component;
|
||||
@Scope("singleton")
|
||||
public class RolesApiResource {
|
||||
|
||||
@Autowired
|
||||
private RoleReadPlatformService roleReadPlatformService;
|
||||
@Autowired
|
||||
private RoleReadPlatformService roleReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
private PermissionReadPlatformService permissionReadPlatformService;
|
||||
@Autowired
|
||||
private PermissionReadPlatformService permissionReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
private RoleWritePlatformService roleWritePlatformService;
|
||||
@Autowired
|
||||
private RoleWritePlatformService roleWritePlatformService;
|
||||
|
||||
@Autowired
|
||||
private PortfolioApiDataConversionService apiDataConversionService;
|
||||
|
||||
@Autowired
|
||||
private PortfolioApiJsonSerializerService apiJsonSerializerService;
|
||||
@Autowired
|
||||
private PortfolioApiDataConversionService apiDataConversionService;
|
||||
|
||||
private final String entityType = "ROLE";
|
||||
@Autowired
|
||||
private PortfolioApiJsonSerializerService apiJsonSerializerService;
|
||||
|
||||
private final String entityType = "ROLE";
|
||||
@Autowired
|
||||
private PlatformSecurityContext context;
|
||||
|
||||
@GET
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveAllRoles(@Context final UriInfo uriInfo) {
|
||||
|
||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
|
||||
final Collection<RoleData> roles = this.roleReadPlatformService.retrieveAllRoles();
|
||||
|
||||
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, roles);
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("template")
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveNewRoleDetails(@Context final UriInfo uriInfo) {
|
||||
|
||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||
|
||||
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 })
|
||||
public String createRole(final String jsonRequestBody) {
|
||||
|
||||
final RoleCommand command = this.apiDataConversionService.convertJsonToRoleCommand(null, jsonRequestBody);
|
||||
|
||||
final Long roleId = this.roleWritePlatformService.createRole(command);
|
||||
|
||||
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
|
||||
// It will return just id,name parameters of RoleData and ignore
|
||||
// description, however as PermissionData used in selectedPermissions
|
||||
// collection
|
||||
// also has a field called description it gets ignored also. This is because
|
||||
// of the implementation of ParameterListExclusionStrategy which doesnt take
|
||||
// into account the Object its looking at.
|
||||
@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);
|
||||
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
final boolean template = ApiParameterHelper.template(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);
|
||||
}
|
||||
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, role);
|
||||
}
|
||||
|
||||
@PUT
|
||||
@Path("{roleId}")
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String updateRole(@PathParam("roleId") final Long roleId, final String jsonRequestBody) {
|
||||
|
||||
final RoleCommand command = this.apiDataConversionService.convertJsonToRoleCommand(roleId, jsonRequestBody);
|
||||
|
||||
this.roleWritePlatformService.updateRole(command);
|
||||
|
||||
return this.apiJsonSerializerService.serializeEntityIdentifier(new EntityIdentifier(roleId));
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("{roleId}/permissions")
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveRolePermissions(@PathParam("roleId") final Long roleId, @Context final UriInfo uriInfo) {
|
||||
|
||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
|
||||
RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
|
||||
Collection<PermissionUsageData> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId);
|
||||
RolePermissionsData permissionsData = new RolePermissionsData(role.getId(), role.getName(), role.getDescription(),
|
||||
permissionUsageData);
|
||||
|
||||
return this.apiJsonSerializerService.serializeRolePermissionDataToJson(prettyPrint, responseParameters, permissionsData);
|
||||
}
|
||||
|
||||
|
||||
@GET
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public String retrieveAllRoles(@Context final UriInfo uriInfo) {
|
||||
@PUT
|
||||
@Path("{roleId}/permissions")
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String updateRolePermissions(@PathParam("roleId") final Long roleId, final String jsonRequestBody) {
|
||||
|
||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
final RolePermissionCommand command = this.apiDataConversionService.convertJsonToRolePermissionCommand(roleId, jsonRequestBody);
|
||||
|
||||
final Collection<RoleData> roles = this.roleReadPlatformService.retrieveAllRoles();
|
||||
|
||||
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, roles);
|
||||
}
|
||||
this.roleWritePlatformService.updateRolePermissions(command);
|
||||
|
||||
@GET
|
||||
@Path("template")
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public String retrieveNewRoleDetails(@Context final UriInfo uriInfo) {
|
||||
|
||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||
|
||||
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})
|
||||
public String createRole(final String jsonRequestBody) {
|
||||
|
||||
final RoleCommand command = this.apiDataConversionService.convertJsonToRoleCommand(null, jsonRequestBody);
|
||||
|
||||
final Long roleId = this.roleWritePlatformService.createRole(command);
|
||||
|
||||
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
|
||||
// It will return just id,name parameters of RoleData and ignore description, however as PermissionData used in selectedPermissions collection
|
||||
// also has a field called description it gets ignored also. This is because of the implementation of ParameterListExclusionStrategy which doesnt take
|
||||
// into account the Object its looking at.
|
||||
@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);
|
||||
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
final boolean template = ApiParameterHelper.template(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);
|
||||
}
|
||||
return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, role);
|
||||
}
|
||||
|
||||
@PUT
|
||||
@Path("{roleId}")
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public String updateRole(@PathParam("roleId") final Long roleId, final String jsonRequestBody) {
|
||||
|
||||
final RoleCommand command = this.apiDataConversionService.convertJsonToRoleCommand(roleId, jsonRequestBody);
|
||||
|
||||
this.roleWritePlatformService.updateRole(command);
|
||||
|
||||
return this.apiJsonSerializerService.serializeEntityIdentifier(new EntityIdentifier(roleId));
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("{roleId}/permissions")
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public String retrieveRolePermissions(@PathParam("roleId") final Long roleId, @Context final UriInfo uriInfo) {
|
||||
|
||||
context.authenticatedUser().validateHasReadPermission(entityType);
|
||||
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
|
||||
RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
|
||||
Collection<PermissionUsageData> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId);
|
||||
RolePermissionData rolePermissionData = new RolePermissionData(role.getId(), role.getName(), role.getDescription(), permissionUsageData);
|
||||
|
||||
return this.apiJsonSerializerService.serializeRolePermissionDataToJson(prettyPrint, responseParameters, rolePermissionData);
|
||||
}
|
||||
|
||||
@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);
|
||||
Collection<PermissionUsageData> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId);
|
||||
RolePermissionData rolePermissionData = new RolePermissionData(role.getId(), role.getName(), role.getDescription(), permissionUsageData);
|
||||
|
||||
return this.apiJsonSerializerService.serializeRolePermissionDataToJson(prettyPrint, responseParameters, rolePermissionData);*/
|
||||
}
|
||||
|
||||
return this.apiJsonSerializerService.serializeEntityIdentifier(new EntityIdentifier(roleId));
|
||||
}
|
||||
}
|
||||
+28
-29
@@ -2,40 +2,39 @@ package org.mifosng.platform.api.data;
|
||||
|
||||
public class PermissionUsageData {
|
||||
|
||||
private final String grouping;
|
||||
private final String code;
|
||||
private final String entityName;
|
||||
private final String actionName;
|
||||
private final Boolean selected;
|
||||
private final String grouping;
|
||||
private final String code;
|
||||
private final String entityName;
|
||||
private final String actionName;
|
||||
private final Boolean selected;
|
||||
|
||||
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) {
|
||||
this.grouping = grouping;
|
||||
this.code = code;
|
||||
this.entityName = entityName;
|
||||
this.actionName = actionName;
|
||||
this.selected = selected;
|
||||
}
|
||||
|
||||
public String getGrouping() {
|
||||
return grouping;
|
||||
}
|
||||
public String getGrouping() {
|
||||
return grouping;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getEntityName() {
|
||||
return entityName;
|
||||
}
|
||||
public String getEntityName() {
|
||||
return entityName;
|
||||
}
|
||||
|
||||
public String getActionName() {
|
||||
return actionName;
|
||||
}
|
||||
public String getActionName() {
|
||||
return actionName;
|
||||
}
|
||||
|
||||
public Boolean getSelected() {
|
||||
return selected;
|
||||
}
|
||||
public Boolean getSelected() {
|
||||
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.PermissionData;
|
||||
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.SavingProductData;
|
||||
import org.mifosng.platform.api.data.StaffData;
|
||||
@@ -232,7 +232,7 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi
|
||||
|
||||
@Override
|
||||
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,
|
||||
prettyPrint, responseParameters);
|
||||
return helper.serializedJsonFrom(gsonDeserializer, rolePermissionData);
|
||||
|
||||
+3
@@ -1,5 +1,6 @@
|
||||
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.BranchMoneyTransferCommand;
|
||||
import org.mifosng.platform.api.commands.LoanReassignmentCommand;
|
||||
@@ -40,6 +41,8 @@ public interface PortfolioApiDataConversionService {
|
||||
OfficeCommand convertJsonToOfficeCommand(Long resourceIdentifier, String json);
|
||||
|
||||
RoleCommand convertJsonToRoleCommand(Long resourceIdentifier, String json);
|
||||
|
||||
RolePermissionCommand convertJsonToRolePermissionCommand(Long roleId, String jsonRequestBody);
|
||||
|
||||
UserCommand convertJsonToUserCommand(Long resourceIdentifier, String json);
|
||||
|
||||
|
||||
+12
@@ -17,6 +17,7 @@ import java.util.Set;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.joda.time.LocalDate;
|
||||
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.BranchMoneyTransferCommand;
|
||||
import org.mifosng.platform.api.commands.ChargeCommand;
|
||||
@@ -263,6 +264,17 @@ public class PortfolioApiDataConversionServiceImpl implements PortfolioApiDataCo
|
||||
|
||||
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
|
||||
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.PermissionData;
|
||||
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.SavingProductData;
|
||||
import org.mifosng.platform.api.data.StaffData;
|
||||
@@ -57,7 +57,7 @@ public interface PortfolioApiJsonSerializerService {
|
||||
|
||||
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);
|
||||
|
||||
|
||||
+7
-3
@@ -1,13 +1,17 @@
|
||||
package org.mifosng.platform.user.service;
|
||||
|
||||
import org.mifosng.platform.accounting.api.commands.RolePermissionCommand;
|
||||
import org.mifosng.platform.api.commands.RoleCommand;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
|
||||
public interface RoleWritePlatformService {
|
||||
|
||||
|
||||
@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')")
|
||||
Long updateRole(RoleCommand command);
|
||||
Long updateRole(RoleCommand command);
|
||||
|
||||
@PreAuthorize(value = "hasAnyRole('ALL_FUNCTIONS', 'USER_ADMINISTRATION_SUPER_USER', 'PERMISSIONS_ROLE')")
|
||||
Long updateRolePermissions(RolePermissionCommand command);
|
||||
}
|
||||
+93
-64
@@ -3,7 +3,9 @@ package org.mifosng.platform.user.service;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
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.exceptions.RoleNotFoundException;
|
||||
import org.mifosng.platform.security.PlatformSecurityContext;
|
||||
@@ -19,74 +21,101 @@ import org.springframework.util.ObjectUtils;
|
||||
@Service
|
||||
public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatformService {
|
||||
|
||||
private final PlatformSecurityContext context;
|
||||
private final RoleRepository roleRepository;
|
||||
private final PlatformSecurityContext context;
|
||||
private final RoleRepository roleRepository;
|
||||
|
||||
private final PermissionRepository permissionRepository;
|
||||
|
||||
@Autowired
|
||||
public RoleWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final RoleRepository roleRepository, final PermissionRepository permissionRepository) {
|
||||
this.context = context;
|
||||
this.roleRepository = roleRepository;
|
||||
this.permissionRepository = permissionRepository;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Long createRole(final RoleCommand command) {
|
||||
|
||||
context.authenticatedUser();
|
||||
|
||||
RoleCommandValidator validator = new RoleCommandValidator(command);
|
||||
validator.validateForCreate();
|
||||
private final PermissionRepository permissionRepository;
|
||||
|
||||
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions());
|
||||
@Autowired
|
||||
public RoleWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final RoleRepository roleRepository,
|
||||
final PermissionRepository permissionRepository) {
|
||||
this.context = context;
|
||||
this.roleRepository = roleRepository;
|
||||
this.permissionRepository = permissionRepository;
|
||||
}
|
||||
|
||||
Role entity = new Role(command.getName(), command.getDescription(), selectedPermissions);
|
||||
|
||||
this.roleRepository.save(entity);
|
||||
@Transactional
|
||||
@Override
|
||||
public Long createRole(final RoleCommand command) {
|
||||
|
||||
return entity.getId();
|
||||
}
|
||||
context.authenticatedUser();
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Long updateRole(RoleCommand command) {
|
||||
|
||||
context.authenticatedUser();
|
||||
|
||||
RoleCommandValidator validator = new RoleCommandValidator(command);
|
||||
validator.validateForUpdate();
|
||||
RoleCommandValidator validator = new RoleCommandValidator(command);
|
||||
validator.validateForCreate();
|
||||
|
||||
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions());
|
||||
|
||||
Role role = this.roleRepository.findOne(command.getId());
|
||||
if (role == null) {
|
||||
throw new RoleNotFoundException(command.getId());
|
||||
}
|
||||
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;
|
||||
}
|
||||
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions());
|
||||
|
||||
Role entity = new Role(command.getName(), command.getDescription(), selectedPermissions);
|
||||
|
||||
this.roleRepository.save(entity);
|
||||
|
||||
return entity.getId();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Long updateRole(RoleCommand command) {
|
||||
|
||||
context.authenticatedUser();
|
||||
|
||||
RoleCommandValidator validator = new RoleCommandValidator(command);
|
||||
validator.validateForUpdate();
|
||||
|
||||
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions());
|
||||
|
||||
Role role = this.roleRepository.findOne(command.getId());
|
||||
if (role == null) { throw new RoleNotFoundException(command.getId()); }
|
||||
role.update(command, selectedPermissions);
|
||||
|
||||
this.roleRepository.save(role);
|
||||
|
||||
return role.getId();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Long updateRolePermissions(final RolePermissionCommand command) {
|
||||
context.authenticatedUser();
|
||||
|
||||
// RoleCommandValidator validator = new RoleCommandValidator(command);
|
||||
// validator.validateForUpdate();
|
||||
|
||||
final Role role = this.roleRepository.findOne(command.getRoleId());
|
||||
if (role == null) {
|
||||
throw new RoleNotFoundException(command.getRoleId());
|
||||
}
|
||||
|
||||
Map<String, Boolean> permissions = command.getPermissions();
|
||||
for (String permissionCode : permissions.keySet()) {
|
||||
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