@@ -97,8 +97,8 @@ public EventsSearchResult search(EventsSearchParameters parameters, Subject subj
9797 }).collect (Collectors .toList ());
9898
9999 final EventsSearchResult .Context context = EventsSearchResult .Context .create (
100- lookupEventDefinitions (eventDefinitionIdsBuilder .build ()),
101- lookupStreams (streamIdsBuilder .build ())
100+ lookupEventDefinitions (eventDefinitionIdsBuilder .build (), subject ),
101+ lookupStreams (streamIdsBuilder .build (), subject )
102102 );
103103
104104 return EventsSearchResult .builder ()
@@ -157,14 +157,18 @@ private Set<String> forbiddenSourceStreams(Subject subject) {
157157 .collect (Collectors .toSet ());
158158 }
159159
160- private Map <String , EventsSearchResult .ContextEntity > lookupStreams (Set <String > streams ) {
161- return streamService .loadByIds (streams )
160+ private Map <String , EventsSearchResult .ContextEntity > lookupStreams (Set <String > streams , final Subject subject ) {
161+ final var allowedStreams = streams .stream ().filter (streamId -> subject .isPermitted (String .join (":" , RestPermissions .STREAMS_READ , streamId ))).collect (Collectors .toSet ());
162+
163+ return streamService .loadByIds (allowedStreams )
162164 .stream ()
163165 .collect (Collectors .toMap (Persisted ::getId , s -> EventsSearchResult .ContextEntity .create (s .getId (), s .getTitle (), s .getDescription ())));
164166 }
165167
166- private Map <String , EventsSearchResult .ContextEntity > lookupEventDefinitions (Set <String > eventDefinitions ) {
167- return eventDefinitionService .getByIds (eventDefinitions )
168+ private Map <String , EventsSearchResult .ContextEntity > lookupEventDefinitions (Set <String > eventDefinitions , final Subject subject ) {
169+ final var allowedEventDefinitions = eventDefinitions .stream ().filter (eventDefinitionId -> subject .isPermitted (String .join (":" , RestPermissions .EVENT_DEFINITIONS_READ , eventDefinitionId ))).collect (Collectors .toSet ());
170+
171+ return eventDefinitionService .getByIds (allowedEventDefinitions )
168172 .stream ()
169173 .collect (Collectors .toMap (EventDefinitionDto ::id ,
170174 d -> EventsSearchResult .ContextEntity .create (d .id (), d .title (), d .description (), d .remediationSteps ())));
0 commit comments