mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-15 14:56:41 +00:00
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:
1 parent
2c9cb5cbaa
commit
b330981b40
4 files changed
+30
-32
No files matched your search
+12
-13
@@ -1024,13 +1024,13 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
|
||||
@Override
|
||||
public List<RegattaDTO> getRegattas() {
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(SecuredDomainType.REGATTA,
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(
|
||||
getService().getAllRegattas(), this::convertToRegattaDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RegattaDTO> getRegattasWithUpdatePermission() {
|
||||
return getSecurityService().mapAndFilterByExplicitPermissionForCurrentUser(SecuredDomainType.REGATTA,
|
||||
return getSecurityService().mapAndFilterByExplicitPermissionForCurrentUser(
|
||||
new HasPermissions.Action[] { DefaultActions.READ, DefaultActions.UPDATE },
|
||||
getService().getAllRegattas(), this::convertToRegattaDTO);
|
||||
}
|
||||
@@ -1413,7 +1413,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
@Override
|
||||
public List<TracTracConfigurationWithSecurityDTO> getPreviousTracTracConfigurations() throws Exception {
|
||||
final Iterable<TracTracConfiguration> configs = tractracDomainObjectFactory.getTracTracConfigurations();
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(SecuredDomainType.TRACTRAC_ACCOUNT,
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(
|
||||
configs,
|
||||
ttConfig -> {
|
||||
TracTracConfigurationWithSecurityDTO config = new TracTracConfigurationWithSecurityDTO(
|
||||
@@ -2712,7 +2712,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
|
||||
private ArrayList<String> getLeaderboardNamesFilteredForCurrentUser() {
|
||||
final ArrayList<String> result = new ArrayList<>();
|
||||
getSecurityService().filterObjectsWithPermissionForCurrentUser(SecuredDomainType.LEADERBOARD,
|
||||
getSecurityService().filterObjectsWithPermissionForCurrentUser(
|
||||
DefaultActions.READ, getService().getLeaderboards().values(), l -> result.add(l.getName()));
|
||||
return result;
|
||||
}
|
||||
@@ -2782,7 +2782,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
@Override
|
||||
public List<StrippedLeaderboardDTOWithSecurity> getLeaderboardsWithSecurity() {
|
||||
final Map<String, Leaderboard> leaderboards = getService().getLeaderboards();
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(SecuredDomainType.LEADERBOARD,
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(
|
||||
leaderboards.values(),
|
||||
leaderboard -> createStrippedLeaderboardDTOWithSecurity(leaderboard, false, false));
|
||||
}
|
||||
@@ -3241,7 +3241,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
@Override
|
||||
public List<SwissTimingConfigurationWithSecurityDTO> getPreviousSwissTimingConfigurations() {
|
||||
Iterable<SwissTimingConfiguration> configs = swissTimingAdapterPersistence.getSwissTimingConfigurations();
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(SecuredDomainType.SWISS_TIMING_ACCOUNT, configs,
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(configs,
|
||||
stConfig -> {
|
||||
final SwissTimingConfigurationWithSecurityDTO config = new SwissTimingConfigurationWithSecurityDTO(
|
||||
stConfig.getName(), stConfig.getJsonURL(),
|
||||
@@ -4179,7 +4179,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
@Override
|
||||
public List<LeaderboardGroupDTO> getLeaderboardGroups(boolean withGeoLocationData) {
|
||||
final Map<String, LeaderboardGroup> leaderboardGroups = getService().getLeaderboardGroups();
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(SecuredDomainType.LEADERBOARD_GROUP,
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(
|
||||
leaderboardGroups.values(),
|
||||
leaderboardGroup -> convertToLeaderboardGroupDTO(leaderboardGroup, withGeoLocationData, false));
|
||||
}
|
||||
@@ -4349,7 +4349,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
|
||||
@Override
|
||||
public List<EventDTO> getEvents() throws MalformedURLException {
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(SecuredDomainType.EVENT,
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(
|
||||
getService().getAllEvents(), event -> {
|
||||
EventDTO eventDTO = convertToEventDTO(event, false);
|
||||
try {
|
||||
@@ -5285,8 +5285,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
public List<SwissTimingArchiveConfigurationWithSecurityDTO> getPreviousSwissTimingArchiveConfigurations() {
|
||||
Iterable<SwissTimingArchiveConfiguration> configs = swissTimingAdapterPersistence
|
||||
.getSwissTimingArchiveConfigurations();
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(
|
||||
SecuredDomainType.SWISS_TIMING_ARCHIVE_ACCOUNT, configs,
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(configs,
|
||||
stArchiveConfig -> {
|
||||
SwissTimingArchiveConfigurationWithSecurityDTO config = new SwissTimingArchiveConfigurationWithSecurityDTO(
|
||||
stArchiveConfig.getJsonURL(), stArchiveConfig.getCreatorName());
|
||||
@@ -6059,7 +6058,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
@Override
|
||||
public Iterable<BoatDTO> getStandaloneBoats() {
|
||||
List<BoatDTO> result = new ArrayList<>();
|
||||
getSecurityService().filterObjectsWithAnyPermissionForCurrentUser(SecuredDomainType.BOAT,
|
||||
getSecurityService().filterObjectsWithAnyPermissionForCurrentUser(
|
||||
SecuredSecurityTypes.PublicReadableActions.READ_AND_READ_PUBLIC_ACTIONS,
|
||||
getService().getBaseDomainFactory().getCompetitorAndBoatStore().getStandaloneBoats(),
|
||||
filteredObject -> result.add(convertToBoatDTO(filteredObject)));
|
||||
@@ -6481,13 +6480,13 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
|
||||
@Override
|
||||
public Iterable<String> getAllIgtimiAccountEmailAddresses() {
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(SecuredDomainType.IGTIMI_ACCOUNT,
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(
|
||||
getIgtimiConnectionFactory().getAllAccounts(), acc -> acc.getUser().getEmail());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<AccountWithSecurityDTO> getAllIgtimiAccountsWithSecurity() {
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(SecuredDomainType.IGTIMI_ACCOUNT,
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(
|
||||
getIgtimiConnectionFactory().getAllAccounts(), this::toSecuredIgtimiAccountDTO);
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -284,8 +284,7 @@ public class UserManagementServiceImpl extends RemoteServiceServlet implements U
|
||||
public Collection<UserGroupDTO> getUserGroups() {
|
||||
Map<User, StrippedUserDTO> fromOriginalToStrippedDownUser = new HashMap<>();
|
||||
Map<UserGroup, StrippedUserGroupDTO> fromOriginalToStrippedDownUserGroup = new HashMap<>();
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(SecuredSecurityTypes.USER_GROUP,
|
||||
getSecurityService().getUserGroupList(),
|
||||
return getSecurityService().mapAndFilterByReadPermissionForCurrentUser(getSecurityService().getUserGroupList(),
|
||||
ug -> securityDTOFactory.createUserGroupDTOFromUserGroup(ug, fromOriginalToStrippedDownUser,
|
||||
fromOriginalToStrippedDownUserGroup, getSecurityService()));
|
||||
}
|
||||
|
||||
@@ -391,11 +391,11 @@ public interface SecurityService extends ReplicableWithObjectInputStream<Replica
|
||||
|
||||
void deleteAllDataForRemovedObject(QualifiedObjectIdentifier identifier);
|
||||
|
||||
<T extends WithQualifiedObjectIdentifier> void filterObjectsWithPermissionForCurrentUser(HasPermissions permittedObject,
|
||||
<T extends WithQualifiedObjectIdentifier> void filterObjectsWithPermissionForCurrentUser(
|
||||
com.sap.sse.security.shared.HasPermissions.Action action, Iterable<T> objectsToFilter,
|
||||
Consumer<T> filteredObjectsConsumer);
|
||||
|
||||
<T extends WithQualifiedObjectIdentifier> void filterObjectsWithPermissionForCurrentUser(HasPermissions permittedObject,
|
||||
<T extends WithQualifiedObjectIdentifier> void filterObjectsWithPermissionForCurrentUser(
|
||||
com.sap.sse.security.shared.HasPermissions.Action[] actions, Iterable<T> objectsToFilter,
|
||||
Consumer<T> filteredObjectsConsumer);
|
||||
|
||||
@@ -403,13 +403,13 @@ public interface SecurityService extends ReplicableWithObjectInputStream<Replica
|
||||
* Filters objects with any of the given permissions for the current user.
|
||||
*/
|
||||
<T extends WithQualifiedObjectIdentifier> void filterObjectsWithAnyPermissionForCurrentUser(
|
||||
HasPermissions permittedObject, com.sap.sse.security.shared.HasPermissions.Action[] actions,
|
||||
com.sap.sse.security.shared.HasPermissions.Action[] actions,
|
||||
Iterable<T> objectsToFilter, Consumer<T> filteredObjectsConsumer);
|
||||
|
||||
<T extends WithQualifiedObjectIdentifier, R> List<R> mapAndFilterByReadPermissionForCurrentUser(HasPermissions permittedObject,
|
||||
<T extends WithQualifiedObjectIdentifier, R> List<R> mapAndFilterByReadPermissionForCurrentUser(
|
||||
Iterable<T> objectsToFilter, Function<T, R> filteredObjectsMapper);
|
||||
|
||||
<T extends WithQualifiedObjectIdentifier, R> List<R> mapAndFilterByExplicitPermissionForCurrentUser(HasPermissions permittedObject,
|
||||
<T extends WithQualifiedObjectIdentifier, R> List<R> mapAndFilterByExplicitPermissionForCurrentUser(
|
||||
HasPermissions.Action[] actions, Iterable<T> objectsToFilter,
|
||||
Function<T, R> filteredObjectsMapper);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user