mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-15 10:18:45 +00:00
Merge branch 'main' into bug6070
This commit is contained in:
@@ -10,6 +10,8 @@ Import-Package: com.sap.sailing.geocoding,
|
||||
com.sap.sailing.server.preferences,
|
||||
com.sap.sse.replication,
|
||||
com.sap.sse.security,
|
||||
org.apache.shiro;version="[1.7.0,2.0.0]",
|
||||
org.apache.shiro.subject;version="[1.7.0,2.0.0]",
|
||||
org.osgi.framework;version="1.7.0"
|
||||
Export-Package: com.sap.sailing.datamining,
|
||||
com.sap.sailing.datamining.data,
|
||||
|
||||
+11
-4
@@ -4,6 +4,9 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.data.HasRaceResultOfCompetitorContext;
|
||||
import com.sap.sailing.datamining.data.HasTrackedRaceContext;
|
||||
@@ -11,6 +14,7 @@ import com.sap.sailing.datamining.impl.data.RaceResultOfCompetitorWithContext;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class CompetitorOfRaceInLeaderboardRetrievalProcessor
|
||||
extends AbstractRetrievalProcessor<HasTrackedRaceContext, HasRaceResultOfCompetitorContext> {
|
||||
@@ -30,10 +34,13 @@ public class CompetitorOfRaceInLeaderboardRetrievalProcessor
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
HasRaceResultOfCompetitorContext raceResultOfCompetitorContext = new RaceResultOfCompetitorWithContext(
|
||||
leaderboardContext, element.getRaceColumn(), competitor,
|
||||
leaderboardContext.getLeaderboardGroupContext().getPolarDataService(), element);
|
||||
raceResultsOfCompetitor.add(raceResultOfCompetitorContext);
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(competitor.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
HasRaceResultOfCompetitorContext raceResultOfCompetitorContext = new RaceResultOfCompetitorWithContext(
|
||||
leaderboardContext, element.getRaceColumn(), competitor,
|
||||
leaderboardContext.getLeaderboardGroupContext().getPolarDataService(), element);
|
||||
raceResultsOfCompetitor.add(raceResultOfCompetitorContext);
|
||||
}
|
||||
}
|
||||
return raceResultsOfCompetitor;
|
||||
}
|
||||
|
||||
+9
-1
@@ -3,12 +3,16 @@ package com.sap.sailing.datamining.impl.components;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasCompetitorContext;
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.impl.data.CompetitorWithContext;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class CompetitorRetrievalProcessor extends AbstractRetrievalProcessor<HasLeaderboardContext, HasCompetitorContext> {
|
||||
public CompetitorRetrievalProcessor(ExecutorService executor,
|
||||
@@ -20,6 +24,10 @@ public class CompetitorRetrievalProcessor extends AbstractRetrievalProcessor<Has
|
||||
|
||||
@Override
|
||||
protected Iterable<HasCompetitorContext> retrieveData(HasLeaderboardContext element) {
|
||||
return Util.map(element.getLeaderboard().getCompetitors(), c->new CompetitorWithContext(c, element));
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
return Util.map(
|
||||
Util.filter(element.getLeaderboard().getCompetitors(),
|
||||
c->subject.isPermitted(c.getIdentifier().getStringPermission(DefaultActions.READ))),
|
||||
c->new CompetitorWithContext(c, element));
|
||||
}
|
||||
}
|
||||
|
||||
+9
-2
@@ -5,6 +5,9 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardGroupContext;
|
||||
import com.sap.sailing.datamining.impl.data.LeaderboardGroupWithContext;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
@@ -12,6 +15,7 @@ import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sailing.server.interfaces.RacingEventService;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class LeaderboardGroupRetrievalProcessor extends AbstractRetrievalProcessor<RacingEventService, HasLeaderboardGroupContext> {
|
||||
|
||||
@@ -26,11 +30,14 @@ public class LeaderboardGroupRetrievalProcessor extends AbstractRetrievalProcess
|
||||
protected Iterable<HasLeaderboardGroupContext> retrieveData(RacingEventService element) {
|
||||
Set<HasLeaderboardGroupContext> data = new HashSet<>();
|
||||
PolarDataService polarDataService = element.getPolarDataService();
|
||||
for (LeaderboardGroup leaderboardGroup : element.getLeaderboardGroups().values()) {
|
||||
for (final LeaderboardGroup leaderboardGroup : element.getLeaderboardGroups().values()) {
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
data.add(new LeaderboardGroupWithContext(leaderboardGroup, polarDataService, element.getBaseDomainFactory(), element.getSecurityService()));
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(leaderboardGroup.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
data.add(new LeaderboardGroupWithContext(leaderboardGroup, polarDataService, element.getBaseDomainFactory(), element.getSecurityService()));
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
+8
-1
@@ -4,12 +4,16 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardGroupContext;
|
||||
import com.sap.sailing.datamining.impl.data.LeaderboardWithContext;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class LeaderboardRetrievalProcessor extends AbstractRetrievalProcessor<HasLeaderboardGroupContext, HasLeaderboardContext> {
|
||||
|
||||
@@ -27,7 +31,10 @@ public class LeaderboardRetrievalProcessor extends AbstractRetrievalProcessor<Ha
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
leaderboardsWithContext.add(new LeaderboardWithContext(leaderboard, element));
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(leaderboard.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
leaderboardsWithContext.add(new LeaderboardWithContext(leaderboard, element));
|
||||
}
|
||||
}
|
||||
return leaderboardsWithContext;
|
||||
}
|
||||
|
||||
+9
-2
@@ -4,6 +4,9 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasRaceOfCompetitorContext;
|
||||
import com.sap.sailing.datamining.data.HasTrackedRaceContext;
|
||||
import com.sap.sailing.datamining.impl.data.RaceOfCompetitorWithContext;
|
||||
@@ -11,6 +14,7 @@ import com.sap.sailing.datamining.shared.TackTypeSegmentsDataMiningSettings;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class RaceOfCompetitorRetrievalProcessor extends AbstractRetrievalProcessor<HasTrackedRaceContext, HasRaceOfCompetitorContext> {
|
||||
/**
|
||||
@@ -37,8 +41,11 @@ public class RaceOfCompetitorRetrievalProcessor extends AbstractRetrievalProcess
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
HasRaceOfCompetitorContext raceOfCompetitorWithContext = new RaceOfCompetitorWithContext(element, competitor, settings);
|
||||
raceOfCompetitorsWithContext.add(raceOfCompetitorWithContext);
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(competitor.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
HasRaceOfCompetitorContext raceOfCompetitorWithContext = new RaceOfCompetitorWithContext(element, competitor, settings);
|
||||
raceOfCompetitorsWithContext.add(raceOfCompetitorWithContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
return raceOfCompetitorsWithContext;
|
||||
|
||||
+12
-5
@@ -4,6 +4,9 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.data.HasTrackedRaceContext;
|
||||
import com.sap.sailing.datamining.impl.data.TrackedRaceWithContext;
|
||||
@@ -13,6 +16,7 @@ import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class TrackedRaceRetrievalProcessor extends AbstractRetrievalProcessor<HasLeaderboardContext, HasTrackedRaceContext> {
|
||||
|
||||
@@ -36,13 +40,17 @@ public class TrackedRaceRetrievalProcessor extends AbstractRetrievalProcessor<Ha
|
||||
break;
|
||||
}
|
||||
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
|
||||
if (trackedRace != null) {
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (trackedRace != null
|
||||
&& subject.isPermitted(trackedRace.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
Regatta regatta = trackedRace.getTrackedRegatta().getRegatta();
|
||||
HasTrackedRaceContext trackedRaceWithContext = new TrackedRaceWithContext(element, regatta, raceColumn, fleet, trackedRace);
|
||||
trackedRacesWithContext.add(trackedRaceWithContext);
|
||||
if (subject.isPermitted(regatta.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
HasTrackedRaceContext trackedRaceWithContext = new TrackedRaceWithContext(element, regatta, raceColumn, fleet, trackedRace);
|
||||
trackedRacesWithContext.add(trackedRaceWithContext);
|
||||
}
|
||||
}
|
||||
else {
|
||||
//no tracked race found
|
||||
// no tracked race found
|
||||
HasTrackedRaceContext trackedRaceWithContext = new TrackedRaceWithContext(element, /* regatta */ null, raceColumn, fleet, /* trackedRace */ null);
|
||||
trackedRacesWithContext.add(trackedRaceWithContext);
|
||||
}
|
||||
@@ -50,5 +58,4 @@ public class TrackedRaceRetrievalProcessor extends AbstractRetrievalProcessor<Ha
|
||||
}
|
||||
return trackedRacesWithContext;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
-1
@@ -12,6 +12,7 @@ import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sailing.server.preferences.SailorProfilePreference;
|
||||
import com.sap.sailing.server.preferences.SailorProfilePreferences;
|
||||
import com.sap.sse.security.SecurityService;
|
||||
import com.sap.sse.security.shared.impl.User;
|
||||
|
||||
public class LeaderboardGroupWithContext implements HasLeaderboardGroupContext {
|
||||
private final LeaderboardGroup leaderboardGroup;
|
||||
@@ -54,7 +55,11 @@ public class LeaderboardGroupWithContext implements HasLeaderboardGroupContext {
|
||||
@Override
|
||||
public synchronized SailorProfiles getSailorProfiles() {
|
||||
if (sailorProfiles == null) {
|
||||
final SailorProfilePreferences sailorProfilePreferences = getSecurityService().getPreferenceObject(getSecurityService().getCurrentUser().getName(), SailorProfilePreferences.PREF_NAME);
|
||||
final User currentUser = getSecurityService().getCurrentUser();
|
||||
if (currentUser == null) {
|
||||
throw new NullPointerException("No user session in DataMining. Thread pool context problems? You may need to attach a user session to the thread.");
|
||||
}
|
||||
final SailorProfilePreferences sailorProfilePreferences = getSecurityService().getPreferenceObject(currentUser.getName(), SailorProfilePreferences.PREF_NAME);
|
||||
if (sailorProfilePreferences != null) {
|
||||
final List<SailorProfile> theSailorProfiles = new ArrayList<>();
|
||||
for (final SailorProfilePreference sailorProfilePreference : sailorProfilePreferences.getSailorProfiles()) {
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import com.sap.sailing.datamining.data.SailorProfiles;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
|
||||
public class SailorProfilesImpl implements SailorProfiles {
|
||||
final Map<Competitor, SailorProfile> profilesForCompetitor;
|
||||
private final Map<Competitor, SailorProfile> profilesForCompetitor;
|
||||
|
||||
/**
|
||||
* Constructs the mapping from {@link Competitor} to {@link SailorProfile} based on the
|
||||
|
||||
+2
@@ -28,6 +28,8 @@
|
||||
<li>Introduced a new Data Mining dimension "Sailor Profile Name." With this, if a user in their "User Details"
|
||||
creates one or more "Sailor Profiles" to group multiple occurrences of what is to be considered "the same sailor"
|
||||
into one profile, these profiles can be used for filtering and grouping in data mining.</li>
|
||||
<li>Bug fix: data mining now correctly propagates the current user session to all data retrieval processes,
|
||||
and all security checks for object readability by the current subject are now in place.</li>
|
||||
</ul>
|
||||
<h5 class="articleSubheadline">October 2024</h5>
|
||||
<ul class="bulletList">
|
||||
|
||||
@@ -25,3 +25,5 @@ Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.sap.sailing.polars.datamining.data,
|
||||
com.sap.sailing.polars.datamining.data.impl
|
||||
Automatic-Module-Name: com.sap.sailing.polars.datamining
|
||||
Import-Package: org.apache.shiro;version="[1.7.0,2.0.0]",
|
||||
org.apache.shiro.subject;version="[1.7.0,2.0.0]"
|
||||
|
||||
+8
-1
@@ -5,12 +5,16 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardGroupContext;
|
||||
import com.sap.sailing.datamining.impl.data.LeaderboardGroupWithContext;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.server.interfaces.RacingEventService;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class PolarLeaderboardGroupRetrievalProcessor extends AbstractRetrievalProcessor<RacingEventService, HasLeaderboardGroupContext> {
|
||||
public PolarLeaderboardGroupRetrievalProcessor(ExecutorService executor,
|
||||
@@ -27,7 +31,10 @@ public class PolarLeaderboardGroupRetrievalProcessor extends AbstractRetrievalPr
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
data.add(new LeaderboardGroupWithContext(leaderboardGroup, element.getPolarDataService(), element.getBaseDomainFactory(), element.getSecurityService()));
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(leaderboardGroup.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
data.add(new LeaderboardGroupWithContext(leaderboardGroup, element.getPolarDataService(), element.getBaseDomainFactory(), element.getSecurityService()));
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
+8
-1
@@ -5,12 +5,16 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardGroupContext;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext;
|
||||
import com.sap.sailing.polars.datamining.data.impl.LeaderboardWithPolarContext;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class PolarLeaderboardRetrievalProcessor extends AbstractRetrievalProcessor<HasLeaderboardGroupContext, HasLeaderboardPolarContext> {
|
||||
|
||||
@@ -28,7 +32,10 @@ public class PolarLeaderboardRetrievalProcessor extends AbstractRetrievalProcess
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
leaderboardsWithContext.add(new LeaderboardWithPolarContext(leaderboard, element));
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(leaderboard.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
leaderboardsWithContext.add(new LeaderboardWithPolarContext(leaderboard, element));
|
||||
}
|
||||
}
|
||||
return leaderboardsWithContext;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,9 @@ Bundle-SymbolicName: com.sap.sse.datamining
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||
Import-Package: org.osgi.framework;version="1.7.0"
|
||||
Import-Package: org.apache.shiro;version="[1.7.0,2.0.0]",
|
||||
org.apache.shiro.subject;version="[1.7.0,2.0.0]",
|
||||
org.osgi.framework;version="1.7.0"
|
||||
Export-Package: com.sap.sse.datamining,
|
||||
com.sap.sse.datamining.components,
|
||||
com.sap.sse.datamining.components.management,
|
||||
|
||||
+4
-1
@@ -6,6 +6,8 @@ import java.util.concurrent.RejectedExecutionException;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sse.datamining.components.AdditionalResultDataBuilder;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
@@ -46,7 +48,8 @@ public abstract class AbstractParallelProcessor<InputType, ResultType> extends A
|
||||
if (isInstructionValid(instruction)) {
|
||||
unfinishedInstructionsCounter.getAndIncrement();
|
||||
try {
|
||||
executor.execute(instruction);
|
||||
final Subject subject = SecurityUtils.getSubject(); // pass on the current subject to the instruction
|
||||
executor.execute(subject.associateWith(instruction));
|
||||
} catch (RejectedExecutionException exc) {
|
||||
LOGGER.log(Level.FINEST, "A " + RejectedExecutionException.class.getSimpleName()
|
||||
+ " appeared during the processing.");
|
||||
|
||||
+8
-1
@@ -6,12 +6,16 @@ import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.datamining.data.HasRoleOfUserGroupContext;
|
||||
import com.sap.sse.security.datamining.data.HasUserGroupContext;
|
||||
import com.sap.sse.security.datamining.data.impl.RoleOfUserGroupWithContext;
|
||||
import com.sap.sse.security.shared.RoleDefinition;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class SecurityRolesOfUserGroupRetrievalProcessor extends AbstractRetrievalProcessor<HasUserGroupContext, HasRoleOfUserGroupContext> {
|
||||
public SecurityRolesOfUserGroupRetrievalProcessor(ExecutorService executor,
|
||||
@@ -28,7 +32,10 @@ public class SecurityRolesOfUserGroupRetrievalProcessor extends AbstractRetrieva
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
data.add(new RoleOfUserGroupWithContext(element, roleDefinitionAndForAll.getKey(), roleDefinitionAndForAll.getValue()));
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(roleDefinitionAndForAll.getKey().getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
data.add(new RoleOfUserGroupWithContext(element, roleDefinitionAndForAll.getKey(), roleDefinitionAndForAll.getValue()));
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user