MIFOSX-97: initial integration of changes into roles and permissions for maker checker purposes.

This commit is contained in:
Keith Woodlock
2013-01-07 17:18:50 +00:00
parent ff6eae40d3
commit 239d60bc02
4 changed files with 50 additions and 33 deletions
@@ -55,18 +55,23 @@ public class CommandWrapperBuilder {
public CommandWrapperBuilder createRole() { public CommandWrapperBuilder createRole() {
this.actionName = "CREATE"; this.actionName = "CREATE";
this.entityName = "ROLE"; this.entityName = "ROLE";
this.href = "/roles/template";
return this; return this;
} }
public CommandWrapperBuilder updateRole() { public CommandWrapperBuilder updateRole(final Long roleId) {
this.actionName = "UPDATE"; this.actionName = "UPDATE";
this.entityName = "ROLE"; this.entityName = "ROLE";
this.entityId = roleId;
this.href = "/roles/" + roleId;
return this; return this;
} }
public CommandWrapperBuilder updateRolePermissions() { public CommandWrapperBuilder updateRolePermissions(final Long roleId) {
this.actionName = "PERMISSIONS"; this.actionName = "PERMISSIONS";
this.entityName = "ROLE"; this.entityName = "ROLE";
this.entityId = roleId;
this.href = "/roles/" + roleId + "/permissions";
return this; return this;
} }
@@ -15,7 +15,7 @@ public class ConfigurationDomainServiceJpa implements ConfigurationDomainService
/* /*
* hard code to false to disable maker checker across the board. * hard code to false to disable maker checker across the board.
*/ */
private final boolean makerCheckerGloablConfigurationEnabled = true; private final boolean makerCheckerGloablConfigurationEnabled = false;
@Autowired @Autowired
public ConfigurationDomainServiceJpa(final PermissionRepository permissionRepository) { public ConfigurationDomainServiceJpa(final PermissionRepository permissionRepository) {
@@ -1,5 +1,6 @@
package org.mifosplatform.useradministration.api; package org.mifosplatform.useradministration.api;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
@@ -27,10 +28,12 @@ import org.mifosplatform.infrastructure.core.data.CommandProcessingResult;
import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
import org.mifosplatform.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.mifosplatform.infrastructure.core.serialization.DefaultToApiJsonSerializer;
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext; import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
import org.mifosplatform.useradministration.command.PermissionsCommand;
import org.mifosplatform.useradministration.command.RoleCommand; import org.mifosplatform.useradministration.command.RoleCommand;
import org.mifosplatform.useradministration.data.PermissionUsageData; import org.mifosplatform.useradministration.data.PermissionUsageData;
import org.mifosplatform.useradministration.data.RoleData; import org.mifosplatform.useradministration.data.RoleData;
import org.mifosplatform.useradministration.data.RolePermissionsData; import org.mifosplatform.useradministration.data.RolePermissionsData;
import org.mifosplatform.useradministration.serialization.PermissionsCommandFromApiJsonDeserializer;
import org.mifosplatform.useradministration.serialization.RoleCommandFromApiJsonDeserializer; import org.mifosplatform.useradministration.serialization.RoleCommandFromApiJsonDeserializer;
import org.mifosplatform.useradministration.service.PermissionReadPlatformService; import org.mifosplatform.useradministration.service.PermissionReadPlatformService;
import org.mifosplatform.useradministration.service.RoleReadPlatformService; import org.mifosplatform.useradministration.service.RoleReadPlatformService;
@@ -61,6 +64,7 @@ public class RolesApiResource {
private final RoleReadPlatformService roleReadPlatformService; private final RoleReadPlatformService roleReadPlatformService;
private final PermissionReadPlatformService permissionReadPlatformService; private final PermissionReadPlatformService permissionReadPlatformService;
private final RoleCommandFromApiJsonDeserializer fromApiJsonDeserializer; private final RoleCommandFromApiJsonDeserializer fromApiJsonDeserializer;
private final PermissionsCommandFromApiJsonDeserializer permissionsFromApiJsonDeserializer;
private final DefaultToApiJsonSerializer<RoleData> toApiJsonSerializer; private final DefaultToApiJsonSerializer<RoleData> toApiJsonSerializer;
private final DefaultToApiJsonSerializer<RolePermissionsData> permissionsToApiJsonSerializer; private final DefaultToApiJsonSerializer<RolePermissionsData> permissionsToApiJsonSerializer;
private final ApiRequestParameterHelper apiRequestParameterHelper; private final ApiRequestParameterHelper apiRequestParameterHelper;
@@ -71,6 +75,7 @@ public class RolesApiResource {
public RolesApiResource(final PlatformSecurityContext context, final RoleReadPlatformService readPlatformService, public RolesApiResource(final PlatformSecurityContext context, final RoleReadPlatformService readPlatformService,
final PermissionReadPlatformService permissionReadPlatformService, final PermissionReadPlatformService permissionReadPlatformService,
final RoleCommandFromApiJsonDeserializer fromApiJsonDeserializer, final RoleCommandFromApiJsonDeserializer fromApiJsonDeserializer,
final PermissionsCommandFromApiJsonDeserializer permissionsFromApiJsonDeserializer,
final DefaultToApiJsonSerializer<RoleData> toApiJsonSerializer, final DefaultToApiJsonSerializer<RoleData> toApiJsonSerializer,
final DefaultToApiJsonSerializer<RolePermissionsData> permissionsToApiJsonSerializer, final DefaultToApiJsonSerializer<RolePermissionsData> permissionsToApiJsonSerializer,
final ApiRequestParameterHelper apiRequestParameterHelper, final ApiRequestParameterHelper apiRequestParameterHelper,
@@ -80,6 +85,7 @@ public class RolesApiResource {
this.roleReadPlatformService = readPlatformService; this.roleReadPlatformService = readPlatformService;
this.permissionReadPlatformService = permissionReadPlatformService; this.permissionReadPlatformService = permissionReadPlatformService;
this.fromApiJsonDeserializer = fromApiJsonDeserializer; this.fromApiJsonDeserializer = fromApiJsonDeserializer;
this.permissionsFromApiJsonDeserializer = permissionsFromApiJsonDeserializer;
this.toApiJsonSerializer = toApiJsonSerializer; this.toApiJsonSerializer = toApiJsonSerializer;
this.permissionsToApiJsonSerializer = permissionsToApiJsonSerializer; this.permissionsToApiJsonSerializer = permissionsToApiJsonSerializer;
this.apiRequestParameterHelper = apiRequestParameterHelper; this.apiRequestParameterHelper = apiRequestParameterHelper;
@@ -105,7 +111,9 @@ public class RolesApiResource {
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
public String createRole(final String apiRequestBodyAsJson) { public String createRole(final String apiRequestBodyAsJson) {
final CommandWrapper commandRequest = new CommandWrapperBuilder().createRole().withUrl("/roles").withJson(apiRequestBodyAsJson) final CommandWrapper commandRequest = new CommandWrapperBuilder() //
.createRole() //
.withJson(apiRequestBodyAsJson) //
.build(); .build();
final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
@@ -125,32 +133,25 @@ public class RolesApiResource {
RoleData role = this.roleReadPlatformService.retrieveRole(roleId); RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
if (settings.isCommandIdPassed()) { if (settings.isCommandIdPassed()) {
RoleData currentChanges = handleRequestToIntegrateProposedChangesFromRoleCommand(settings.getCommandId()); final CommandSourceData entry = this.commandSourceReadPlatformService.retrieveById(settings.getCommandId());
final RoleCommand changesOnly = this.fromApiJsonDeserializer.commandFromApiJson(entry.json());
RoleData currentChanges = RoleData.changes(changesOnly.getName(), changesOnly.getDescription());
role = RoleData.integrateChanges(role, currentChanges); role = RoleData.integrateChanges(role, currentChanges);
} }
return this.toApiJsonSerializer.serialize(settings, role, RESPONSE_DATA_PARAMETERS); return this.toApiJsonSerializer.serialize(settings, role, RESPONSE_DATA_PARAMETERS);
} }
private RoleData handleRequestToIntegrateProposedChangesFromRoleCommand(final Long commandId) {
final CommandSourceData entry = this.commandSourceReadPlatformService.retrieveById(commandId);
return assembleRoleChanges(entry);
}
private RoleData assembleRoleChanges(final CommandSourceData entry) {
final RoleCommand changesOnly = this.fromApiJsonDeserializer.commandFromApiJson(entry.json());
return RoleData.changes(changesOnly.getName(), changesOnly.getDescription());
}
@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 apiRequestBodyAsJson) { public String updateRole(@PathParam("roleId") final Long roleId, final String apiRequestBodyAsJson) {
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateRole().withUrl("/roles").withJson(apiRequestBodyAsJson) final CommandWrapper commandRequest = new CommandWrapperBuilder() //
.withEntityId(roleId).build(); .updateRole(roleId) //
.withJson(apiRequestBodyAsJson) //
.build();
final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
@@ -171,6 +172,15 @@ public class RolesApiResource {
final Collection<PermissionUsageData> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId); final Collection<PermissionUsageData> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId);
Collection<PermissionUsageData> currentChanges = null; Collection<PermissionUsageData> currentChanges = null;
if (settings.isCommandIdPassed()) {
final CommandSourceData entry = this.commandSourceReadPlatformService.retrieveById(settings.getCommandId());
PermissionsCommand command = permissionsFromApiJsonDeserializer.commandFromApiJson(entry.json());
currentChanges = new ArrayList<PermissionUsageData>();
for (String key : command.getPermissions().keySet()) {
currentChanges.add(PermissionUsageData.from(key, command.getPermissions().get(key)));
}
}
final RolePermissionsData permissionsData = role.toRolePermissionData(permissionUsageData, currentChanges); final RolePermissionsData permissionsData = role.toRolePermissionData(permissionUsageData, currentChanges);
return this.permissionsToApiJsonSerializer.serialize(settings, permissionsData, PERMISSIONS_RESPONSE_DATA_PARAMETERS); return this.permissionsToApiJsonSerializer.serialize(settings, permissionsData, PERMISSIONS_RESPONSE_DATA_PARAMETERS);
} }
@@ -181,8 +191,10 @@ public class RolesApiResource {
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
public String updateRolePermissions(@PathParam("roleId") final Long roleId, final String apiRequestBodyAsJson) { public String updateRolePermissions(@PathParam("roleId") final Long roleId, final String apiRequestBodyAsJson) {
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateRolePermissions().withUrl("/roles/" + roleId + "/permissions").withJson(apiRequestBodyAsJson) final CommandWrapper commandRequest = new CommandWrapperBuilder() //
.withEntityId(roleId).build(); .updateRolePermissions(roleId) //
.withJson(apiRequestBodyAsJson) //
.build();
final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
@@ -5,20 +5,20 @@ package org.mifosplatform.useradministration.data;
*/ */
public class AppUserLookup { public class AppUserLookup {
private final Long id; private final Long id;
private final String username; private final String username;
public AppUserLookup(final Long id, final String username) { public AppUserLookup(final Long id, final String username) {
this.id = id; this.id = id;
this.username = username; this.username = username;
} }
public Long getId() { public Long getId() {
return this.id; return this.id;
} }
public String getUsername() { public String getUsername() {
return this.username; return this.username;
} }
} }