@@ -108,7 +108,8 @@ && isConsumerGroupAccessible(context, user)
108
108
&& isConnectAccessible (context , user )
109
109
&& isConnectorAccessible (context , user ) // TODO connector selectors
110
110
&& isSchemaAccessible (context , user )
111
- && isKsqlAccessible (context , user );
111
+ && isKsqlAccessible (context , user )
112
+ && isAclAccessible (context , user );
112
113
113
114
if (!accessGranted ) {
114
115
throw new AccessDeniedException ("Access denied" );
@@ -364,6 +365,23 @@ private boolean isKsqlAccessible(AccessContext context, AuthenticatedUser user)
364
365
return isAccessible (Resource .KSQL , null , user , context , requiredActions );
365
366
}
366
367
368
+ private boolean isAclAccessible (AccessContext context , AuthenticatedUser user ) {
369
+ if (!rbacEnabled ) {
370
+ return true ;
371
+ }
372
+
373
+ if (context .getAclActions ().isEmpty ()) {
374
+ return true ;
375
+ }
376
+
377
+ Set <String > requiredActions = context .getAclActions ()
378
+ .stream ()
379
+ .map (a -> a .toString ().toUpperCase ())
380
+ .collect (Collectors .toSet ());
381
+
382
+ return isAccessible (Resource .ACL , null , user , context , requiredActions );
383
+ }
384
+
367
385
public Set <ProviderAuthorityExtractor > getOauthExtractors () {
368
386
return oauthExtractors ;
369
387
}
0 commit comments