@@ -99,14 +99,24 @@ public Flux<Order> subscribeToOrders(@RSocketAuthUser RSocketUser rSocketUser,
99
99
100
100
final Set <String > authorities = grantedAuthorities .stream ().map (GrantedAuthority ::getAuthority ).collect (Collectors .toSet ());
101
101
102
- return Flux .from (orderSink .asFlux ().filter (order ->
103
- // 'admin' gets requested no matter what
104
- (authorities .contains (SecurityConstants .ADMIN_ROLE ) && order .getKind ().equals (requestedOrderKind )) ||
105
- // 'frodo' gets only LOTR orders
106
- (requestedOrderKind .equals (OrderKind .LOTR ) && authorities .contains (SecurityConstants .LOTR_ROLE ) && order .getKind ().equals (requestedOrderKind )) ||
107
- // 'john' gets only GOT order
108
- (requestedOrderKind .equals (OrderKind .GOT ) && authorities .contains (SecurityConstants .GOT_ROLE ) && order .getKind ().equals (requestedOrderKind ))
109
- ));
102
+ return Flux .from (orderSink .asFlux ().filter (order -> filterRequestedOrdersForAuthorities (order , requestedOrderKind , authorities )));
103
+ }
104
+
105
+ private boolean filterRequestedOrdersForAuthorities (Order order , OrderKind requestedOrderKind , Set <String > authorities ) {
106
+
107
+ // 'admin' gets requested no matter what
108
+ if (authorities .contains (SecurityConstants .ADMIN_ROLE )) {
109
+ if (requestedOrderKind .equals (OrderKind .ALL ))
110
+ return true ;
111
+ return order .getKind ().equals (requestedOrderKind );
112
+ }
113
+ // @formatter:off
114
+ return
115
+ // 'frodo' gets only LOTR orders
116
+ (requestedOrderKind .equals (OrderKind .LOTR ) && authorities .contains (SecurityConstants .LOTR_ROLE ) && order .getKind ().equals (requestedOrderKind )) ||
117
+ // 'john' gets only GOT order
118
+ (requestedOrderKind .equals (OrderKind .GOT ) && authorities .contains (SecurityConstants .GOT_ROLE ) && order .getKind ().equals (requestedOrderKind ));
119
+ // @formatter:on
110
120
}
111
121
112
122
@ SuppressWarnings ("unused" )
0 commit comments