Bug 5047: Simplified the various map and filter methods in

SecurityService by removing the redundant HasPermissions parameter. This
can now be obtained from the given WithQualifiedObjectIdentifier values.
This commit is contained in:
Steffen Schaefer committed 2019-05-29 10:00:53 +02:00
1 parent 2c9cb5cbaa
commit b330981b40
4 files changed
+30 -32

No files matched your search

@@ -1082,7 +1082,7 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
@Override
public Iterable<RoleDefinition> getRoleDefinitions() {
Collection<RoleDefinition> result = new ArrayList<>();
filterObjectsWithPermissionForCurrentUser(SecuredSecurityTypes.ROLE_DEFINITION, DefaultActions.READ,
filterObjectsWithPermissionForCurrentUser(DefaultActions.READ,
store.getRoleDefinitions(), t -> result.add(t));
return result;
}
@@ -1822,26 +1822,26 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
}
@Override
public <T extends WithQualifiedObjectIdentifier> void filterObjectsWithPermissionForCurrentUser(HasPermissions permittedObject,
public <T extends WithQualifiedObjectIdentifier> void filterObjectsWithPermissionForCurrentUser(
HasPermissions.Action action, Iterable<T> objectsToFilter,
Consumer<T> filteredObjectsConsumer) {
objectsToFilter.forEach(objectToCheck -> {
if (SecurityUtils.getSubject().isPermitted(
permittedObject.getStringPermissionForObject(action, objectToCheck))) {
objectToCheck.getIdentifier().getStringPermission(action))) {
filteredObjectsConsumer.accept(objectToCheck);
}
});
}
@Override
public <T extends WithQualifiedObjectIdentifier> void filterObjectsWithPermissionForCurrentUser(HasPermissions permittedObject,
public <T extends WithQualifiedObjectIdentifier> void filterObjectsWithPermissionForCurrentUser(
HasPermissions.Action[] actions, Iterable<T> objectsToFilter,
Consumer<T> filteredObjectsConsumer) {
objectsToFilter.forEach(objectToCheck -> {
boolean isPermitted = actions.length > 0;
for (int i = 0; i < actions.length; i++) {
isPermitted &= SecurityUtils.getSubject().isPermitted(
permittedObject.getStringPermissionForObject(actions[i], objectToCheck));
objectToCheck.getIdentifier().getStringPermission(actions[i]));
}
if (isPermitted) {
filteredObjectsConsumer.accept(objectToCheck);
@@ -1852,13 +1852,13 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
/** Filters the objects with any of the given permissions for the current user */
@Override
public <T extends WithQualifiedObjectIdentifier> void filterObjectsWithAnyPermissionForCurrentUser(
HasPermissions permittedObject, HasPermissions.Action[] actions, Iterable<T> objectsToFilter,
HasPermissions.Action[] actions, Iterable<T> objectsToFilter,
Consumer<T> filteredObjectsConsumer) {
objectsToFilter.forEach(objectToCheck -> {
boolean isPermitted = false;
for (int i = 0; i < actions.length; i++) {
if (SecurityUtils.getSubject()
.isPermitted(permittedObject.getStringPermissionForObject(actions[i], objectToCheck))) {
.isPermitted(objectToCheck.getIdentifier().getStringPermission(actions[i]))) {
isPermitted = true;
break;
}
@@ -1870,20 +1870,20 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
}
@Override
public <T extends WithQualifiedObjectIdentifier, R> List<R> mapAndFilterByReadPermissionForCurrentUser(HasPermissions permittedObject,
public <T extends WithQualifiedObjectIdentifier, R> List<R> mapAndFilterByReadPermissionForCurrentUser(
Iterable<T> objectsToFilter, Function<T, R> filteredObjectsMapper) {
final List<R> result = new ArrayList<>();
filterObjectsWithPermissionForCurrentUser(permittedObject, DefaultActions.READ, objectsToFilter,
filterObjectsWithPermissionForCurrentUser(DefaultActions.READ, objectsToFilter,
filteredObject -> result.add(filteredObjectsMapper.apply(filteredObject)));
return result;
}
@Override
public <T extends WithQualifiedObjectIdentifier, R> List<R> mapAndFilterByExplicitPermissionForCurrentUser(HasPermissions permittedObject,
public <T extends WithQualifiedObjectIdentifier, R> List<R> mapAndFilterByExplicitPermissionForCurrentUser(
HasPermissions.Action[] actions, Iterable<T> objectsToFilter,
Function<T, R> filteredObjectsMapper) {
final List<R> result = new ArrayList<>();
filterObjectsWithPermissionForCurrentUser(permittedObject, actions, objectsToFilter,
filterObjectsWithPermissionForCurrentUser(actions, objectsToFilter,
filteredObject -> result.add(filteredObjectsMapper.apply(filteredObject)));
return result;
}
@@ -1893,7 +1893,7 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
HasPermissions permittedObject, HasPermissions.Action[] actions, Iterable<T> objectsToFilter,
Function<T, R> filteredObjectsMapper) {
final List<R> result = new ArrayList<>();
filterObjectsWithAnyPermissionForCurrentUser(permittedObject, actions, objectsToFilter,
filterObjectsWithAnyPermissionForCurrentUser(actions, objectsToFilter,
filteredObject -> result.add(filteredObjectsMapper.apply(filteredObject)));
return result;
}