2727import java .util .function .Predicate ;
2828import java .util .stream .Collectors ;
2929import javax .annotation .Nullable ;
30+ import lombok .Getter ;
3031import lombok .RequiredArgsConstructor ;
3132import lombok .extern .slf4j .Slf4j ;
3233import org .apache .commons .collections .CollectionUtils ;
@@ -54,7 +55,9 @@ public class AccessControlService {
5455 private final RoleBasedAccessControlProperties properties ;
5556 private final Environment environment ;
5657
58+ @ Getter
5759 private boolean rbacEnabled = false ;
60+ @ Getter
5861 private Set <ProviderAuthorityExtractor > oauthExtractors = Collections .emptySet ();
5962
6063 @ PostConstruct
@@ -107,12 +110,14 @@ private boolean isAccessible(AuthenticatedUser user, AccessContext context) {
107110 if (context .cluster () != null && !isClusterAccessible (context .cluster (), user )) {
108111 return false ;
109112 }
110- return context .isAccessible (getUserPermissions (user ));
113+ return context .isAccessible (getUserPermissions (user , context . cluster () ));
111114 }
112115
113- private List <Permission > getUserPermissions (AuthenticatedUser user ) {
114- return properties .getRoles ().stream ()
116+ private List <Permission > getUserPermissions (AuthenticatedUser user , String clusterName ) {
117+ return properties .getRoles ()
118+ .stream ()
115119 .filter (filterRole (user ))
120+ .filter (role -> role .getClusters ().stream ().anyMatch (clusterName ::equalsIgnoreCase ))
116121 .flatMap (role -> role .getPermissions ().stream ())
117122 .toList ();
118123 }
@@ -188,10 +193,6 @@ public Mono<Boolean> isConnectAccessible(String connectName, String clusterName)
188193 );
189194 }
190195
191- public Set <ProviderAuthorityExtractor > getOauthExtractors () {
192- return oauthExtractors ;
193- }
194-
195196 public List <Role > getRoles () {
196197 if (!rbacEnabled ) {
197198 return Collections .emptyList ();
@@ -203,7 +204,4 @@ private Predicate<Role> filterRole(AuthenticatedUser user) {
203204 return role -> user .groups ().contains (role .getName ());
204205 }
205206
206- public boolean isRbacEnabled () {
207- return rbacEnabled ;
208- }
209207}
0 commit comments