MIFOSX-97: redo permissions for maker-checker and roles. api expects json map of permissions labelled by parameter name 'permissions'
This commit is contained in:
+27
-13
@@ -6,28 +6,35 @@ import java.util.List;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.mifosplatform.commands.domain.CommandSource;
|
||||
import org.mifosplatform.commands.exception.UnsupportedCommandException;
|
||||
import org.mifosplatform.infrastructure.core.api.JsonCommand;
|
||||
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
|
||||
import org.mifosplatform.infrastructure.core.serialization.ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromJsonHelper;
|
||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.mifosplatform.portfolio.client.service.RollbackTransactionAsCommandIsNotApprovedByCheckerException;
|
||||
import org.mifosplatform.useradministration.command.PermissionsCommand;
|
||||
import org.mifosplatform.useradministration.domain.AppUser;
|
||||
import org.mifosplatform.useradministration.serialization.PermissionsCommandFromCommandJsonDeserializer;
|
||||
import org.mifosplatform.useradministration.service.PermissionWritePlatformService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
|
||||
@Service
|
||||
public class PermissionsCommandHandler implements CommandSourceHandler {
|
||||
|
||||
private final PlatformSecurityContext context;
|
||||
private final PermissionsCommandFromCommandJsonDeserializer commandFromCommandJsonDeserializer;
|
||||
private final FromJsonHelper fromApiJsonHelper;
|
||||
private final ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson toApiJsonSerializer;
|
||||
private final PermissionWritePlatformService permissionWritePlatformService;
|
||||
|
||||
@Autowired
|
||||
public PermissionsCommandHandler(final PlatformSecurityContext context,
|
||||
final PermissionsCommandFromCommandJsonDeserializer commandFromCommandJsonDeserializer,
|
||||
final FromJsonHelper fromApiJsonHelper,
|
||||
final ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson toApiJsonSerializer,
|
||||
final PermissionWritePlatformService permissionWritePlatformService) {
|
||||
this.context = context;
|
||||
this.commandFromCommandJsonDeserializer = commandFromCommandJsonDeserializer;
|
||||
this.fromApiJsonHelper = fromApiJsonHelper;
|
||||
this.toApiJsonSerializer = toApiJsonSerializer;
|
||||
this.permissionWritePlatformService = permissionWritePlatformService;
|
||||
}
|
||||
|
||||
@@ -37,15 +44,18 @@ public class PermissionsCommandHandler implements CommandSourceHandler {
|
||||
final AppUser maker = context.authenticatedUser();
|
||||
final LocalDate asToday = new LocalDate();
|
||||
|
||||
final JsonElement parsedCommand = this.fromApiJsonHelper.parse(commandSource.json());
|
||||
final JsonCommand command = JsonCommand.from(commandSource.json(), parsedCommand, this.fromApiJsonHelper);
|
||||
|
||||
CommandSource commandSourceResult = commandSource.copy();
|
||||
|
||||
if (commandSource.isUpdate()) {
|
||||
try {
|
||||
final PermissionsCommand command = this.commandFromCommandJsonDeserializer.commandFromCommandJson(
|
||||
commandSource.resourceId(), commandSource.json());
|
||||
|
||||
this.permissionWritePlatformService.updateMakerCheckerPermissions(command);
|
||||
EntityIdentifier result = this.permissionWritePlatformService.updateMakerCheckerPermissions(command);
|
||||
|
||||
final String jsonOfChangesOnly = toApiJsonSerializer.serialize(result.getChanges());
|
||||
commandSourceResult.updateJsonTo(jsonOfChangesOnly);
|
||||
|
||||
commandSourceResult.markAsChecked(maker, asToday);
|
||||
} catch (RollbackTransactionAsCommandIsNotApprovedByCheckerException e) {
|
||||
// swallow this rollback transaction by design
|
||||
@@ -62,15 +72,19 @@ public class PermissionsCommandHandler implements CommandSourceHandler {
|
||||
|
||||
final AppUser checker = context.authenticatedUser();
|
||||
|
||||
final JsonElement parsedCommand = this.fromApiJsonHelper.parse(commandSourceResult.json());
|
||||
final JsonCommand command = JsonCommand.withMakerCheckerApproval(commandSourceResult.json(), parsedCommand, this.fromApiJsonHelper);
|
||||
|
||||
if (commandSourceResult.isUpdate()) {
|
||||
final List<String> allowedPermissions = Arrays.asList("ALL_FUNCTIONS", "USER_ADMINISTRATION_SUPER_USER",
|
||||
"UPDATE_PERMISSION_CHECKER");
|
||||
context.authenticatedUser().validateHasPermissionTo("UPDATE_PERMISSION_CHECKER", allowedPermissions);
|
||||
|
||||
final PermissionsCommand command = this.commandFromCommandJsonDeserializer.commandFromCommandJson(
|
||||
commandSourceResult.resourceId(), commandSourceResult.json(), true);
|
||||
|
||||
this.permissionWritePlatformService.updateMakerCheckerPermissions(command);
|
||||
EntityIdentifier result = this.permissionWritePlatformService.updateMakerCheckerPermissions(command);
|
||||
|
||||
final String jsonOfChangesOnly = toApiJsonSerializer.serialize(result.getChanges());
|
||||
commandSourceResult.updateJsonTo(jsonOfChangesOnly);
|
||||
|
||||
commandSourceResult.markAsChecked(checker, new LocalDate());
|
||||
} else {
|
||||
throw new UnsupportedCommandException(commandSourceResult.commandName());
|
||||
|
||||
+29
-14
@@ -6,33 +6,40 @@ import java.util.List;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.mifosplatform.commands.domain.CommandSource;
|
||||
import org.mifosplatform.commands.exception.UnsupportedCommandException;
|
||||
import org.mifosplatform.infrastructure.core.api.JsonCommand;
|
||||
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
|
||||
import org.mifosplatform.infrastructure.core.serialization.ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromJsonHelper;
|
||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.mifosplatform.portfolio.client.service.RollbackTransactionAsCommandIsNotApprovedByCheckerException;
|
||||
import org.mifosplatform.useradministration.command.RoleCommand;
|
||||
import org.mifosplatform.useradministration.command.RolePermissionCommand;
|
||||
import org.mifosplatform.useradministration.domain.AppUser;
|
||||
import org.mifosplatform.useradministration.serialization.RoleCommandFromCommandJsonDeserializer;
|
||||
import org.mifosplatform.useradministration.serialization.RolePermissionsCommandFromCommandJsonDeserializer;
|
||||
import org.mifosplatform.useradministration.service.RoleWritePlatformService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
|
||||
@Service
|
||||
public class RoleCommandHandler implements CommandSourceHandler {
|
||||
|
||||
private final PlatformSecurityContext context;
|
||||
private final RoleWritePlatformService writePlatformService;
|
||||
private final RoleCommandFromCommandJsonDeserializer commandFromCommandJsonDeserializer;
|
||||
private final RolePermissionsCommandFromCommandJsonDeserializer permissionsCommandFromCommandJsonDeserializer;
|
||||
|
||||
private final FromJsonHelper fromApiJsonHelper;
|
||||
private final ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson toApiJsonSerializer;
|
||||
|
||||
@Autowired
|
||||
public RoleCommandHandler(final PlatformSecurityContext context,
|
||||
final RoleCommandFromCommandJsonDeserializer commandFromCommandJsonDeserializer,
|
||||
final RolePermissionsCommandFromCommandJsonDeserializer permissionsCommandFromCommandJsonDeserializer,
|
||||
final FromJsonHelper fromApiJsonHelper,
|
||||
final ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson toApiJsonSerializer,
|
||||
final RoleWritePlatformService writePlatformService) {
|
||||
this.context = context;
|
||||
this.commandFromCommandJsonDeserializer = commandFromCommandJsonDeserializer;
|
||||
this.permissionsCommandFromCommandJsonDeserializer = permissionsCommandFromCommandJsonDeserializer;
|
||||
this.fromApiJsonHelper = fromApiJsonHelper;
|
||||
this.toApiJsonSerializer = toApiJsonSerializer;
|
||||
this.writePlatformService = writePlatformService;
|
||||
}
|
||||
|
||||
@@ -72,10 +79,14 @@ public class RoleCommandHandler implements CommandSourceHandler {
|
||||
}
|
||||
} else if (commandSource.isUpdateRolePermissions()) {
|
||||
try {
|
||||
final RolePermissionCommand command = this.permissionsCommandFromCommandJsonDeserializer.commandFromCommandJson(
|
||||
resourceId, commandSource.json());
|
||||
|
||||
newResourceId = this.writePlatformService.updateRolePermissions(command);
|
||||
|
||||
final JsonElement parsedCommand = this.fromApiJsonHelper.parse(commandSource.json());
|
||||
final JsonCommand command = JsonCommand.from(commandSource.json(), parsedCommand, this.fromApiJsonHelper);
|
||||
|
||||
EntityIdentifier result = this.writePlatformService.updateRolePermissions(resourceId, command);
|
||||
|
||||
final String jsonOfChangesOnly = toApiJsonSerializer.serialize(result.getChanges());
|
||||
commandSourceResult.updateJsonTo(jsonOfChangesOnly);
|
||||
|
||||
commandSourceResult.markAsChecked(maker, asToday);
|
||||
} catch (RollbackTransactionAsCommandIsNotApprovedByCheckerException e) {
|
||||
@@ -117,10 +128,14 @@ public class RoleCommandHandler implements CommandSourceHandler {
|
||||
"PERMISSIONS_ROLE_CHECKER");
|
||||
context.authenticatedUser().validateHasPermissionTo("PERMISSIONS_ROLE_CHECKER", allowedPermissions);
|
||||
|
||||
final RolePermissionCommand command = this.permissionsCommandFromCommandJsonDeserializer.commandFromCommandJson(resourceId,
|
||||
commandSourceResult.json());
|
||||
|
||||
resourceId = this.writePlatformService.updateRolePermissions(command);
|
||||
final JsonElement parsedCommand = this.fromApiJsonHelper.parse(commandSourceResult.json());
|
||||
final JsonCommand command = JsonCommand.from(commandSourceResult.json(), parsedCommand, this.fromApiJsonHelper);
|
||||
|
||||
EntityIdentifier result = this.writePlatformService.updateRolePermissions(resourceId, command);
|
||||
|
||||
final String jsonOfChangesOnly = toApiJsonSerializer.serialize(result.getChanges());
|
||||
commandSourceResult.updateJsonTo(jsonOfChangesOnly);
|
||||
|
||||
commandSourceResult.markAsChecked(checker, new LocalDate());
|
||||
} else if (commandSourceResult.isDelete()) { throw new UnsupportedCommandException(commandSourceResult.commandName()); }
|
||||
|
||||
|
||||
+14
@@ -1,10 +1,14 @@
|
||||
package org.mifosplatform.infrastructure.core.api;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromJsonHelper;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
/**
|
||||
* Immutable representation of a command.
|
||||
@@ -91,6 +95,16 @@ public final class JsonCommand {
|
||||
public String locale() {
|
||||
return stringValueOfParameterNamed("locale");
|
||||
}
|
||||
|
||||
public Map<String, Boolean> mapValueOfParameterNamed(final String parameterName) {
|
||||
final Type typeOfMap = new TypeToken<Map<String, Boolean>>() {}.getType();
|
||||
|
||||
if (parsedCommand.getAsJsonObject().has(parameterName)) {
|
||||
parsedCommand.getAsJsonObject().get(parameterName);
|
||||
}
|
||||
|
||||
return this.fromApiJsonHelper.extractMap(typeOfMap, jsonCommand);
|
||||
}
|
||||
|
||||
public boolean isChangeInLongParameterNamed(final String parameterName, final Long existingValue) {
|
||||
boolean isChanged = false;
|
||||
|
||||
+2
-2
@@ -24,8 +24,8 @@ public class EntityIdentifier {
|
||||
return new EntityIdentifier(resourceId, makerCheckerId, null);
|
||||
}
|
||||
|
||||
public static EntityIdentifier withChanges(final Long resourceId, final Map<String, Object> changesOnly) {
|
||||
return new EntityIdentifier(resourceId, null, changesOnly);
|
||||
public static EntityIdentifier withChanges(final Long resourceId, final Map<String, Object> changes) {
|
||||
return new EntityIdentifier(resourceId, null, changes);
|
||||
}
|
||||
|
||||
public EntityIdentifier() {
|
||||
|
||||
+1
-7
@@ -22,7 +22,6 @@ import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSeriali
|
||||
import org.mifosplatform.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.mifosplatform.useradministration.data.PermissionUsageData;
|
||||
import org.mifosplatform.useradministration.serialization.PermissionsCommandFromApiJsonDeserializer;
|
||||
import org.mifosplatform.useradministration.service.PermissionReadPlatformService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
@@ -39,20 +38,17 @@ public class PermissionsApiResource {
|
||||
|
||||
private final PlatformSecurityContext context;
|
||||
private final PermissionReadPlatformService permissionReadPlatformService;
|
||||
private final PermissionsCommandFromApiJsonDeserializer fromApiJsonDeserializer;
|
||||
private final DefaultToApiJsonSerializer<PermissionUsageData> toApiJsonSerializer;
|
||||
private final ApiRequestParameterHelper apiRequestParameterHelper;
|
||||
private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService;
|
||||
|
||||
@Autowired
|
||||
public PermissionsApiResource(final PlatformSecurityContext context, final PermissionReadPlatformService readPlatformService,
|
||||
final PermissionsCommandFromApiJsonDeserializer fromApiJsonDeserializer,
|
||||
final DefaultToApiJsonSerializer<PermissionUsageData> toApiJsonSerializer,
|
||||
final ApiRequestParameterHelper apiRequestParameterHelper,
|
||||
final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) {
|
||||
this.context = context;
|
||||
this.permissionReadPlatformService = readPlatformService;
|
||||
this.fromApiJsonDeserializer = fromApiJsonDeserializer;
|
||||
this.toApiJsonSerializer = toApiJsonSerializer;
|
||||
this.apiRequestParameterHelper = apiRequestParameterHelper;
|
||||
this.commandsSourceWritePlatformService = commandsSourceWritePlatformService;
|
||||
@@ -85,10 +81,8 @@ public class PermissionsApiResource {
|
||||
final List<String> allowedPermissions = Arrays.asList("ALL_FUNCTIONS", "USER_ADMINISTRATION_SUPER_USER", "UPDATE_PERMISSION");
|
||||
context.authenticatedUser().validateHasPermissionTo("UPDATE_PERMISSION", allowedPermissions);
|
||||
|
||||
final String commandSerializedAsJson = this.fromApiJsonDeserializer.serializedCommandJsonFromApiJson(apiRequestBodyAsJson);
|
||||
|
||||
final EntityIdentifier result = this.commandsSourceWritePlatformService.logCommandSource("UPDATE", "permissions", null,
|
||||
commandSerializedAsJson);
|
||||
apiRequestBodyAsJson);
|
||||
|
||||
return this.toApiJsonSerializer.serialize(result);
|
||||
}
|
||||
|
||||
+1
-35
@@ -1,6 +1,5 @@
|
||||
package org.mifosplatform.useradministration.api;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
@@ -28,12 +27,10 @@ import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSeriali
|
||||
import org.mifosplatform.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.mifosplatform.useradministration.command.RoleCommand;
|
||||
import org.mifosplatform.useradministration.command.RolePermissionCommand;
|
||||
import org.mifosplatform.useradministration.data.PermissionUsageData;
|
||||
import org.mifosplatform.useradministration.data.RoleData;
|
||||
import org.mifosplatform.useradministration.data.RolePermissionsData;
|
||||
import org.mifosplatform.useradministration.serialization.RoleCommandFromApiJsonDeserializer;
|
||||
import org.mifosplatform.useradministration.serialization.RolePermissionsCommandFromApiJsonDeserializer;
|
||||
import org.mifosplatform.useradministration.service.PermissionReadPlatformService;
|
||||
import org.mifosplatform.useradministration.service.RoleReadPlatformService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -62,10 +59,8 @@ public class RolesApiResource {
|
||||
private final PlatformSecurityContext context;
|
||||
private final RoleReadPlatformService roleReadPlatformService;
|
||||
private final PermissionReadPlatformService permissionReadPlatformService;
|
||||
|
||||
private final RoleCommandFromApiJsonDeserializer fromApiJsonDeserializer;
|
||||
private final DefaultToApiJsonSerializer<RoleData> toApiJsonSerializer;
|
||||
private final RolePermissionsCommandFromApiJsonDeserializer permissionsfromApiJsonDeserializer;
|
||||
private final DefaultToApiJsonSerializer<RolePermissionsData> permissionsToApiJsonSerializer;
|
||||
private final ApiRequestParameterHelper apiRequestParameterHelper;
|
||||
private final PortfolioCommandsReadPlatformService commandSourceReadPlatformService;
|
||||
@@ -75,7 +70,6 @@ public class RolesApiResource {
|
||||
public RolesApiResource(final PlatformSecurityContext context, final RoleReadPlatformService readPlatformService,
|
||||
final PermissionReadPlatformService permissionReadPlatformService,
|
||||
final RoleCommandFromApiJsonDeserializer fromApiJsonDeserializer,
|
||||
final RolePermissionsCommandFromApiJsonDeserializer permissionsfromApiJsonDeserializer,
|
||||
final DefaultToApiJsonSerializer<RoleData> toApiJsonSerializer,
|
||||
final DefaultToApiJsonSerializer<RolePermissionsData> permissionsToApiJsonSerializer,
|
||||
final ApiRequestParameterHelper apiRequestParameterHelper,
|
||||
@@ -85,7 +79,6 @@ public class RolesApiResource {
|
||||
this.roleReadPlatformService = readPlatformService;
|
||||
this.permissionReadPlatformService = permissionReadPlatformService;
|
||||
this.fromApiJsonDeserializer = fromApiJsonDeserializer;
|
||||
this.permissionsfromApiJsonDeserializer = permissionsfromApiJsonDeserializer;
|
||||
this.toApiJsonSerializer = toApiJsonSerializer;
|
||||
this.permissionsToApiJsonSerializer = permissionsToApiJsonSerializer;
|
||||
this.apiRequestParameterHelper = apiRequestParameterHelper;
|
||||
@@ -182,35 +175,11 @@ public class RolesApiResource {
|
||||
final RoleData role = this.roleReadPlatformService.retrieveRole(roleId);
|
||||
final Collection<PermissionUsageData> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId);
|
||||
Collection<PermissionUsageData> currentChanges = null;
|
||||
if (settings.isCommandIdPassed()) {
|
||||
currentChanges = handleRequestToIntegrateProposedChangesFromCommand(roleId, settings.getCommandId());
|
||||
}
|
||||
|
||||
final RolePermissionsData permissionsData = role.toRolePermissionData(permissionUsageData, currentChanges);
|
||||
return this.permissionsToApiJsonSerializer.serialize(settings, permissionsData, PERMISSIONS_RESPONSE_DATA_PARAMETERS);
|
||||
}
|
||||
|
||||
private Collection<PermissionUsageData> handleRequestToIntegrateProposedChangesFromCommand(final Long roleId, final Long commandId) {
|
||||
final CommandSourceData entry = this.commandSourceReadPlatformService.retrieveById(commandId);
|
||||
return assemblePermissionChanges(roleId, entry);
|
||||
}
|
||||
|
||||
private Collection<PermissionUsageData> assemblePermissionChanges(final Long roleId, final CommandSourceData entry) {
|
||||
|
||||
final RolePermissionCommand changesOnly = this.permissionsfromApiJsonDeserializer.commandFromApiJson(roleId, entry.json());
|
||||
|
||||
// assemble map of string/booleans into PermissionUsageData
|
||||
Collection<PermissionUsageData> proposedChanges = new ArrayList<PermissionUsageData>();
|
||||
for (final String permissionCode : changesOnly.getPermissions().keySet()) {
|
||||
final boolean isSelected = changesOnly.getPermissions().get(permissionCode).booleanValue();
|
||||
final PermissionUsageData item = PermissionUsageData.from(permissionCode, isSelected);
|
||||
|
||||
proposedChanges.add(item);
|
||||
}
|
||||
|
||||
return proposedChanges;
|
||||
}
|
||||
|
||||
@PUT
|
||||
@Path("{roleId}/permissions")
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@@ -220,11 +189,8 @@ public class RolesApiResource {
|
||||
final List<String> allowedPermissions = Arrays.asList("ALL_FUNCTIONS", "USER_ADMINISTRATION_SUPER_USER", "PERMISSIONS_ROLE");
|
||||
context.authenticatedUser().validateHasPermissionTo("PERMISSIONS_ROLE", allowedPermissions);
|
||||
|
||||
final String commandSerializedAsJson = this.permissionsfromApiJsonDeserializer
|
||||
.serializedCommandJsonFromApiJson(apiRequestBodyAsJson);
|
||||
|
||||
final EntityIdentifier result = this.commandsSourceWritePlatformService.logCommandSource("UPDATEPERMISSIONS", "roles", roleId,
|
||||
commandSerializedAsJson);
|
||||
apiRequestBodyAsJson);
|
||||
|
||||
return this.toApiJsonSerializer.serialize(result);
|
||||
}
|
||||
|
||||
+1
-7
@@ -8,18 +8,12 @@ import java.util.Map;
|
||||
public class PermissionsCommand {
|
||||
|
||||
private final Map<String, Boolean> permissions;
|
||||
private final transient boolean makerCheckerApproval;
|
||||
|
||||
public PermissionsCommand(final Map<String, Boolean> permissionsMap, final boolean makerCheckerApproval) {
|
||||
public PermissionsCommand(final Map<String, Boolean> permissionsMap) {
|
||||
this.permissions = permissionsMap;
|
||||
this.makerCheckerApproval = makerCheckerApproval;
|
||||
}
|
||||
|
||||
public Map<String, Boolean> getPermissions() {
|
||||
return this.permissions;
|
||||
}
|
||||
|
||||
public boolean isApprovedByChecker() {
|
||||
return this.makerCheckerApproval;
|
||||
}
|
||||
}
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
package org.mifosplatform.useradministration.command;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Immutable command for updating permissions against a role.
|
||||
*/
|
||||
public class RolePermissionCommand {
|
||||
|
||||
private final transient Long roleId;
|
||||
private final Map<String, Boolean> permissions;
|
||||
|
||||
private final transient boolean makerCheckerApproval;
|
||||
|
||||
public RolePermissionCommand(final Long roleId, final Map<String, Boolean> permissionsMap, final boolean makerCheckerApproval) {
|
||||
this.roleId = roleId;
|
||||
this.permissions = permissionsMap;
|
||||
this.makerCheckerApproval = makerCheckerApproval;
|
||||
}
|
||||
|
||||
public Map<String, Boolean> getPermissions() {
|
||||
return this.permissions;
|
||||
}
|
||||
|
||||
public Long getRoleId() {
|
||||
return this.roleId;
|
||||
}
|
||||
|
||||
public boolean isApprovedByChecker() {
|
||||
return this.makerCheckerApproval;
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -51,7 +51,10 @@ public class Permission extends AbstractPersistable<Long> {
|
||||
return this.grouping;
|
||||
}
|
||||
|
||||
public void enableMakerChecker(final boolean canMakerChecker) {
|
||||
public boolean enableMakerChecker(final boolean canMakerChecker) {
|
||||
final boolean isUpdatedValueSame = (this.canMakerChecker == canMakerChecker);
|
||||
this.canMakerChecker = canMakerChecker;
|
||||
|
||||
return !isUpdatedValueSame;
|
||||
}
|
||||
}
|
||||
+14
-3
@@ -38,7 +38,7 @@ public class Role extends AbstractAuditableCustom<AppUser, Long> {
|
||||
this.name = name.trim();
|
||||
this.description = description.trim();
|
||||
}
|
||||
|
||||
|
||||
public void update(final RoleCommand command) {
|
||||
if (command.isNameChanged()) {
|
||||
this.name = command.getName();
|
||||
@@ -48,11 +48,11 @@ public class Role extends AbstractAuditableCustom<AppUser, Long> {
|
||||
this.description = command.getDescription();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean addPermission(final Permission permission) {
|
||||
return this.permissions.add(permission);
|
||||
}
|
||||
|
||||
|
||||
public boolean removePermission(final Permission permission) {
|
||||
return this.permissions.remove(permission);
|
||||
}
|
||||
@@ -75,4 +75,15 @@ public class Role extends AbstractAuditableCustom<AppUser, Long> {
|
||||
public RoleData toData() {
|
||||
return new RoleData(this.getId(), this.name, this.description, null);
|
||||
}
|
||||
|
||||
public boolean updatePermission(final Permission permission, final boolean isSelected) {
|
||||
boolean changed = false;
|
||||
if (isSelected) {
|
||||
changed = addPermission(permission);
|
||||
} else {
|
||||
changed = removePermission(permission);
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
}
|
||||
+19
-25
@@ -1,8 +1,14 @@
|
||||
package org.mifosplatform.useradministration.serialization;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.mifosplatform.infrastructure.core.exception.InvalidJsonException;
|
||||
import org.mifosplatform.infrastructure.core.serialization.AbstractFromApiJsonDeserializer;
|
||||
import org.mifosplatform.infrastructure.core.serialization.CommandSerializer;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromApiJsonDeserializer;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromJsonHelper;
|
||||
@@ -17,41 +23,29 @@ import com.google.gson.reflect.TypeToken;
|
||||
* {@link PermissionsCommand}'s.
|
||||
*/
|
||||
@Component
|
||||
public final class PermissionsCommandFromApiJsonDeserializer implements FromApiJsonDeserializer<PermissionsCommand> {
|
||||
public final class PermissionsCommandFromApiJsonDeserializer extends AbstractFromApiJsonDeserializer<PermissionsCommand> {
|
||||
|
||||
/**
|
||||
* The parameters supported for this command.
|
||||
*/
|
||||
private final Set<String> supportedParameters = new HashSet<String>(Arrays.asList("permissions"));
|
||||
private final FromJsonHelper fromApiJsonHelper;
|
||||
private final CommandSerializer commandSerializerService;
|
||||
|
||||
@Autowired
|
||||
public PermissionsCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper,
|
||||
final CommandSerializer commandSerializerService) {
|
||||
super(commandSerializerService);
|
||||
this.fromApiJsonHelper = fromApiJsonHelper;
|
||||
this.commandSerializerService = commandSerializerService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionsCommand commandFromApiJson(final String json) {
|
||||
return commandFromApiJson(null, json);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionsCommand commandFromApiJson(@SuppressWarnings("unused") final Long resourceId, final String json) {
|
||||
|
||||
final Type typeOfMap = new TypeToken<Map<String, Boolean>>() {}.getType();
|
||||
final Map<String, Boolean> permissionsMap = fromApiJsonHelper.extractMap(typeOfMap, json);
|
||||
|
||||
return new PermissionsCommand(permissionsMap, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serializedCommandJsonFromApiJson(final String json) {
|
||||
final PermissionsCommand command = commandFromApiJson(json);
|
||||
return this.commandSerializerService.serializeCommandToJson(command);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serializedCommandJsonFromApiJson(final Long roleId, final String json) {
|
||||
final PermissionsCommand command = commandFromApiJson(roleId, json);
|
||||
return this.commandSerializerService.serializeCommandToJson(command);
|
||||
|
||||
if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); }
|
||||
|
||||
final Type typeOfMap = new TypeToken<Map<String, Object>>() {}.getType();
|
||||
fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json, supportedParameters);
|
||||
|
||||
return fromApiJsonHelper.fromJson(json, PermissionsCommand.class);
|
||||
}
|
||||
}
|
||||
-43
@@ -1,43 +0,0 @@
|
||||
package org.mifosplatform.useradministration.serialization;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.mifosplatform.infrastructure.core.exception.InvalidJsonException;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromCommandJsonDeserializer;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromJsonHelper;
|
||||
import org.mifosplatform.useradministration.command.PermissionsCommand;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Component
|
||||
public final class PermissionsCommandFromCommandJsonDeserializer implements FromCommandJsonDeserializer<PermissionsCommand> {
|
||||
|
||||
private final FromJsonHelper fromJsonHelper;
|
||||
|
||||
@Autowired
|
||||
public PermissionsCommandFromCommandJsonDeserializer(final FromJsonHelper fromApiJsonHelper) {
|
||||
this.fromJsonHelper = fromApiJsonHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionsCommand commandFromCommandJson(final String commandAsJson) {
|
||||
return commandFromCommandJson(null, commandAsJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionsCommand commandFromCommandJson(final Long roleId, final String commandAsJson) {
|
||||
return commandFromCommandJson(roleId, commandAsJson, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionsCommand commandFromCommandJson(@SuppressWarnings("unused") final Long resourceId, final String commandAsJson,
|
||||
final boolean makerCheckerApproval) {
|
||||
if (StringUtils.isBlank(commandAsJson)) { throw new InvalidJsonException(); }
|
||||
|
||||
final PermissionsCommand command = fromJsonHelper.fromJson(commandAsJson, PermissionsCommand.class);
|
||||
|
||||
return new PermissionsCommand(command.getPermissions(), makerCheckerApproval);
|
||||
}
|
||||
}
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
package org.mifosplatform.useradministration.serialization;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
|
||||
import org.mifosplatform.infrastructure.core.serialization.CommandSerializer;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromApiJsonDeserializer;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromJsonHelper;
|
||||
import org.mifosplatform.useradministration.command.RoleCommand;
|
||||
import org.mifosplatform.useradministration.command.RolePermissionCommand;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
/**
|
||||
* Implementation of {@link FromApiJsonDeserializer} for {@link RoleCommand}'s.
|
||||
*/
|
||||
@Component
|
||||
public final class RolePermissionsCommandFromApiJsonDeserializer implements FromApiJsonDeserializer<RolePermissionCommand> {
|
||||
|
||||
private final FromJsonHelper fromApiJsonHelper;
|
||||
private final CommandSerializer commandSerializerService;
|
||||
|
||||
@Autowired
|
||||
public RolePermissionsCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper,
|
||||
final CommandSerializer commandSerializerService) {
|
||||
this.fromApiJsonHelper = fromApiJsonHelper;
|
||||
this.commandSerializerService = commandSerializerService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RolePermissionCommand commandFromApiJson(final String json) {
|
||||
return commandFromApiJson(null, json);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RolePermissionCommand commandFromApiJson(final Long roleId, final String json) {
|
||||
|
||||
final Type typeOfMap = new TypeToken<Map<String, Boolean>>() {}.getType();
|
||||
|
||||
final Map<String, Boolean> permissionsMap = fromApiJsonHelper.extractMap(typeOfMap, json);
|
||||
|
||||
return new RolePermissionCommand(roleId, permissionsMap, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serializedCommandJsonFromApiJson(final String json) {
|
||||
final RolePermissionCommand command = commandFromApiJson(json);
|
||||
return this.commandSerializerService.serializeCommandToJson(command);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serializedCommandJsonFromApiJson(final Long roleId, final String json) {
|
||||
final RolePermissionCommand command = commandFromApiJson(roleId, json);
|
||||
return this.commandSerializerService.serializeCommandToJson(command);
|
||||
}
|
||||
}
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
package org.mifosplatform.useradministration.serialization;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.mifosplatform.infrastructure.core.exception.InvalidJsonException;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromCommandJsonDeserializer;
|
||||
import org.mifosplatform.infrastructure.core.serialization.FromJsonHelper;
|
||||
import org.mifosplatform.useradministration.command.RolePermissionCommand;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Component
|
||||
public final class RolePermissionsCommandFromCommandJsonDeserializer implements FromCommandJsonDeserializer<RolePermissionCommand> {
|
||||
|
||||
private final FromJsonHelper fromJsonHelper;
|
||||
|
||||
@Autowired
|
||||
public RolePermissionsCommandFromCommandJsonDeserializer(final FromJsonHelper fromApiJsonHelper) {
|
||||
this.fromJsonHelper = fromApiJsonHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RolePermissionCommand commandFromCommandJson(final String commandAsJson) {
|
||||
return commandFromCommandJson(null, commandAsJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RolePermissionCommand commandFromCommandJson(final Long roleId, final String commandAsJson) {
|
||||
return commandFromCommandJson(roleId, commandAsJson, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RolePermissionCommand commandFromCommandJson(final Long roleId, final String commandAsJson, final boolean makerCheckerApproval) {
|
||||
if (StringUtils.isBlank(commandAsJson)) { throw new InvalidJsonException(); }
|
||||
|
||||
final RolePermissionCommand command = fromJsonHelper.fromJson(commandAsJson, RolePermissionCommand.class);
|
||||
|
||||
return new RolePermissionCommand(roleId, command.getPermissions(), makerCheckerApproval);
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
package org.mifosplatform.useradministration.service;
|
||||
|
||||
import org.mifosplatform.useradministration.command.PermissionsCommand;
|
||||
import org.mifosplatform.infrastructure.core.api.JsonCommand;
|
||||
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
|
||||
|
||||
public interface PermissionWritePlatformService {
|
||||
|
||||
void updateMakerCheckerPermissions(PermissionsCommand command);
|
||||
EntityIdentifier updateMakerCheckerPermissions(JsonCommand command);
|
||||
}
|
||||
+27
-10
@@ -1,13 +1,17 @@
|
||||
package org.mifosplatform.useradministration.service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.mifosplatform.infrastructure.core.api.JsonCommand;
|
||||
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
|
||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.mifosplatform.useradministration.command.PermissionsCommand;
|
||||
import org.mifosplatform.useradministration.domain.Permission;
|
||||
import org.mifosplatform.useradministration.domain.PermissionRepository;
|
||||
import org.mifosplatform.useradministration.exception.PermissionNotFoundException;
|
||||
import org.mifosplatform.useradministration.serialization.PermissionsCommandFromApiJsonDeserializer;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -17,39 +21,52 @@ public class PermissionWritePlatformServiceJpaRepositoryImpl implements Permissi
|
||||
|
||||
private final PlatformSecurityContext context;
|
||||
private final PermissionRepository permissionRepository;
|
||||
private final PermissionsCommandFromApiJsonDeserializer fromApiJsonDeserializer;
|
||||
|
||||
@Autowired
|
||||
public PermissionWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context,
|
||||
final PermissionRepository permissionRepository) {
|
||||
final PermissionRepository permissionRepository,
|
||||
final PermissionsCommandFromApiJsonDeserializer fromApiJsonDeserializer) {
|
||||
this.context = context;
|
||||
this.permissionRepository = permissionRepository;
|
||||
this.fromApiJsonDeserializer = fromApiJsonDeserializer;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void updateMakerCheckerPermissions(final PermissionsCommand command) {
|
||||
public EntityIdentifier updateMakerCheckerPermissions(final JsonCommand command) {
|
||||
context.authenticatedUser();
|
||||
|
||||
final Collection<Permission> allPermissions = this.permissionRepository.findAll();
|
||||
|
||||
final PermissionsCommand permissionsCommand = this.fromApiJsonDeserializer.commandFromApiJson(command.json());
|
||||
|
||||
final Map<String, Boolean> commandPermissions = command.getPermissions();
|
||||
final Map<String, Boolean> commandPermissions = permissionsCommand.getPermissions();
|
||||
final Map<String, Object> changes = new HashMap<String, Object>();
|
||||
final Map<String, Boolean> changedPermissions = new HashMap<String, Boolean>();
|
||||
for (final String permissionCode : commandPermissions.keySet()) {
|
||||
|
||||
final Permission permission = findPermissionByCode(allPermissions, permissionCode);
|
||||
final Permission permission = findPermissionInCollectionByCode(allPermissions, permissionCode);
|
||||
|
||||
if (permission.getCode().endsWith("_CHECKER") || permission.getCode().startsWith("READ_")
|
||||
|| permission.getGrouping().equalsIgnoreCase("special")) { throw new PermissionNotFoundException(permissionCode); }
|
||||
|
||||
final boolean isSelected = commandPermissions.get(permissionCode).booleanValue();
|
||||
permission.enableMakerChecker(isSelected);
|
||||
|
||||
this.permissionRepository.save(permission);
|
||||
|
||||
// Typical rollback if maker-checker enabled not here - does it make sense to have a maker checker task for enabling maker-checker for other tasks?
|
||||
boolean changed = permission.enableMakerChecker(isSelected);
|
||||
if (changed) {
|
||||
changedPermissions.put(permissionCode, isSelected);
|
||||
this.permissionRepository.save(permission);
|
||||
}
|
||||
}
|
||||
|
||||
if (!changedPermissions.isEmpty()) {
|
||||
changes.put("permissions", changedPermissions);
|
||||
}
|
||||
|
||||
return EntityIdentifier.withChanges(null, changes);
|
||||
}
|
||||
|
||||
private Permission findPermissionByCode(Collection<Permission> allPermissions, String permissionCode) {
|
||||
private Permission findPermissionInCollectionByCode(final Collection<Permission> allPermissions, final String permissionCode) {
|
||||
|
||||
if (allPermissions != null) {
|
||||
for (Permission permission : allPermissions) {
|
||||
|
||||
+3
-2
@@ -1,7 +1,8 @@
|
||||
package org.mifosplatform.useradministration.service;
|
||||
|
||||
import org.mifosplatform.infrastructure.core.api.JsonCommand;
|
||||
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
|
||||
import org.mifosplatform.useradministration.command.RoleCommand;
|
||||
import org.mifosplatform.useradministration.command.RolePermissionCommand;
|
||||
|
||||
public interface RoleWritePlatformService {
|
||||
|
||||
@@ -9,5 +10,5 @@ public interface RoleWritePlatformService {
|
||||
|
||||
Long updateRole(RoleCommand command);
|
||||
|
||||
Long updateRolePermissions(RolePermissionCommand command);
|
||||
EntityIdentifier updateRolePermissions(Long roleId, JsonCommand command);
|
||||
}
|
||||
+25
-12
@@ -1,19 +1,23 @@
|
||||
package org.mifosplatform.useradministration.service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.mifosplatform.infrastructure.core.api.JsonCommand;
|
||||
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
|
||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.mifosplatform.organisation.monetary.service.ConfigurationDomainService;
|
||||
import org.mifosplatform.portfolio.client.service.RollbackTransactionAsCommandIsNotApprovedByCheckerException;
|
||||
import org.mifosplatform.useradministration.command.PermissionsCommand;
|
||||
import org.mifosplatform.useradministration.command.RoleCommand;
|
||||
import org.mifosplatform.useradministration.command.RolePermissionCommand;
|
||||
import org.mifosplatform.useradministration.domain.Permission;
|
||||
import org.mifosplatform.useradministration.domain.PermissionRepository;
|
||||
import org.mifosplatform.useradministration.domain.Role;
|
||||
import org.mifosplatform.useradministration.domain.RoleRepository;
|
||||
import org.mifosplatform.useradministration.exception.PermissionNotFoundException;
|
||||
import org.mifosplatform.useradministration.exception.RoleNotFoundException;
|
||||
import org.mifosplatform.useradministration.serialization.PermissionsCommandFromApiJsonDeserializer;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -25,15 +29,18 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf
|
||||
private final RoleRepository roleRepository;
|
||||
private final PermissionRepository permissionRepository;
|
||||
private final ConfigurationDomainService configurationDomainService;
|
||||
private final PermissionsCommandFromApiJsonDeserializer fromApiJsonDeserializer;
|
||||
|
||||
@Autowired
|
||||
public RoleWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final RoleRepository roleRepository,
|
||||
final PermissionRepository permissionRepository,
|
||||
final ConfigurationDomainService configurationDomainService) {
|
||||
final ConfigurationDomainService configurationDomainService,
|
||||
final PermissionsCommandFromApiJsonDeserializer fromApiJsonDeserializer) {
|
||||
this.context = context;
|
||||
this.roleRepository = roleRepository;
|
||||
this.permissionRepository = permissionRepository;
|
||||
this.configurationDomainService = configurationDomainService;
|
||||
this.fromApiJsonDeserializer = fromApiJsonDeserializer;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@@ -72,31 +79,37 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Long updateRolePermissions(final RolePermissionCommand command) {
|
||||
public EntityIdentifier updateRolePermissions(final Long roleId, final JsonCommand command) {
|
||||
context.authenticatedUser();
|
||||
|
||||
final Role role = this.roleRepository.findOne(command.getRoleId());
|
||||
if (role == null) { throw new RoleNotFoundException(command.getRoleId()); }
|
||||
final Role role = this.roleRepository.findOne(roleId);
|
||||
if (role == null) { throw new RoleNotFoundException(roleId); }
|
||||
|
||||
final Collection<Permission> allPermissions = this.permissionRepository.findAll();
|
||||
|
||||
final Map<String, Boolean> commandPermissions = command.getPermissions();
|
||||
final PermissionsCommand permissionsCommand = this.fromApiJsonDeserializer.commandFromApiJson(command.json());
|
||||
|
||||
final Map<String, Boolean> commandPermissions = permissionsCommand.getPermissions();
|
||||
final Map<String, Object> changes = new HashMap<String, Object>();
|
||||
final Map<String, Boolean> changedPermissions = new HashMap<String, Boolean>();
|
||||
for (final String permissionCode : commandPermissions.keySet()) {
|
||||
final boolean isSelected = commandPermissions.get(permissionCode).booleanValue();
|
||||
|
||||
final Permission permission = findPermissionByCode(allPermissions, permissionCode);
|
||||
if (isSelected) {
|
||||
role.addPermission(permission);
|
||||
} else {
|
||||
role.removePermission(permission);
|
||||
boolean changed = role.updatePermission(permission, isSelected);
|
||||
if (changed) {
|
||||
changedPermissions.put(permissionCode, isSelected);
|
||||
}
|
||||
}
|
||||
|
||||
this.roleRepository.save(role);
|
||||
if (!changedPermissions.isEmpty()) {
|
||||
changes.put("permissions", changedPermissions);
|
||||
this.roleRepository.save(role);
|
||||
}
|
||||
|
||||
if (this.configurationDomainService.isMakerCheckerEnabledForTask("PERMISSIONS_ROLE") && !command.isApprovedByChecker()) { throw new RollbackTransactionAsCommandIsNotApprovedByCheckerException(); }
|
||||
|
||||
return role.getId();
|
||||
return EntityIdentifier.withChanges(role.getId(), changes);
|
||||
}
|
||||
|
||||
private Permission findPermissionByCode(Collection<Permission> allPermissions, String permissionCode) {
|
||||
|
||||
Reference in New Issue
Block a user