Accept already assigned permissions even when they are not available

This commit is contained in:
René Pfeuffer
2019-01-21 10:01:29 +01:00
parent 760a37409b
commit cda8c59c2d
2 changed files with 11 additions and 4 deletions

View File

@@ -68,15 +68,15 @@ public class PermissionAssigner {
Collection<PermissionDescriptor> availablePermissions = this.getAvailablePermissions();
permissions.stream()
.filter(permissionExists(availablePermissions))
.filter(permissionExists(availablePermissions, existingPermissions))
.map(p -> new AssignedPermission(id, groupPermission, p))
.filter(p -> !existingPermissions.contains(p))
.forEach(securitySystem::addPermission);
}
private Predicate<PermissionDescriptor> permissionExists(Collection<PermissionDescriptor> availablePermissions) {
private Predicate<PermissionDescriptor> permissionExists(Collection<PermissionDescriptor> availablePermissions, Collection<AssignedPermission> existingPermissions) {
return p -> {
if (!availablePermissions.contains(p)) {
if (!availablePermissions.contains(p) && existingPermissions.stream().map(AssignedPermission::getPermission).noneMatch(e -> e.equals(p))) {
throw NotFoundException.notFound(ContextEntry.ContextBuilder.entity("permission", p.getValue()));
}
return true;