CCM NG/ccm-core: Bugfixes for RoleManagement of users
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4802 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
2cefc0c1d2
commit
339507295d
|
|
@ -21,6 +21,7 @@ package com.arsdigita.ui.admin.usersgroupsroles.users;
|
||||||
import org.libreccm.security.Group;
|
import org.libreccm.security.Group;
|
||||||
import org.libreccm.security.GroupMembership;
|
import org.libreccm.security.GroupMembership;
|
||||||
import org.libreccm.security.Party;
|
import org.libreccm.security.Party;
|
||||||
|
import org.libreccm.security.PermissionChecker;
|
||||||
import org.libreccm.security.Role;
|
import org.libreccm.security.Role;
|
||||||
import org.libreccm.security.RoleManager;
|
import org.libreccm.security.RoleManager;
|
||||||
import org.libreccm.security.RoleMembership;
|
import org.libreccm.security.RoleMembership;
|
||||||
|
|
@ -54,6 +55,9 @@ class UsersController {
|
||||||
@Inject
|
@Inject
|
||||||
private RoleManager roleManager;
|
private RoleManager roleManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private PermissionChecker permissionChecker;
|
||||||
|
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected List<Group> getAssignedGroups(final User user) {
|
protected List<Group> getAssignedGroups(final User user) {
|
||||||
|
|
||||||
|
|
@ -166,8 +170,6 @@ class UsersController {
|
||||||
.collect(Collectors.joining(", "));
|
.collect(Collectors.joining(", "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected void updateAssignedRoles(final User user,
|
protected void updateAssignedRoles(final User user,
|
||||||
final List<Role> selectedRoles) {
|
final List<Role> selectedRoles) {
|
||||||
|
|
@ -179,17 +181,24 @@ class UsersController {
|
||||||
user.getPartyId())));
|
user.getPartyId())));
|
||||||
|
|
||||||
final List<Role> assignedRoles = getAssignedRoles(user);
|
final List<Role> assignedRoles = getAssignedRoles(user);
|
||||||
|
final List<Long> assignedRolesIds = getAssignedRoles(user)
|
||||||
|
.stream()
|
||||||
|
.map(Role::getRoleId)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
final List<Long> selectedRolesIds = selectedRoles
|
||||||
|
.stream()
|
||||||
|
.map(Role::getRoleId)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
//First check for newly added role
|
//First check for newly added role
|
||||||
selectedRoles
|
selectedRoles
|
||||||
.stream()
|
.stream()
|
||||||
.filter(role -> !assignedRoles.contains(role))
|
.filter(role -> !assignedRolesIds.contains(role.getRoleId()))
|
||||||
.forEach(role -> assignRoleToParty(role, theUser));
|
.forEach(role -> assignRoleToParty(role, theUser));
|
||||||
|
|
||||||
//Than check for removed roles
|
|
||||||
assignedRoles
|
assignedRoles
|
||||||
.stream()
|
.stream()
|
||||||
.filter(role -> !selectedRoles.contains(role))
|
.filter(role -> !selectedRolesIds.contains(role.getRoleId()))
|
||||||
.forEach(role -> removeRoleFromParty(role, theUser));
|
.forEach(role -> removeRoleFromParty(role, theUser));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,9 @@ public class RoleManager {
|
||||||
@Inject
|
@Inject
|
||||||
private EntityManager entityManager;
|
private EntityManager entityManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private PermissionChecker permissionChecker;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assigns a role to a party and saves the changed {@code Role} and
|
* Assigns a role to a party and saves the changed {@code Role} and
|
||||||
* {@code Party} entities. If the provided {@code role} has already been
|
* {@code Party} entities. If the provided {@code role} has already been
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue