Skip to content

Commit e5bb2fe

Browse files
committed
BE: RBAC: remove default role clusters
1 parent daac844 commit e5bb2fe

File tree

5 files changed

+6
-21
lines changed

5 files changed

+6
-21
lines changed

api/src/main/java/io/kafbat/ui/controller/AuthorizationController.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import io.kafbat.ui.api.AuthorizationApi;
44
import io.kafbat.ui.model.ActionDTO;
55
import io.kafbat.ui.model.AuthenticationInfoDTO;
6+
import io.kafbat.ui.model.KafkaCluster;
67
import io.kafbat.ui.model.ResourceTypeDTO;
78
import io.kafbat.ui.model.UserInfoDTO;
89
import io.kafbat.ui.model.UserPermissionDTO;
910
import io.kafbat.ui.model.rbac.Permission;
11+
import io.kafbat.ui.service.ClustersStorage;
1012
import io.kafbat.ui.service.rbac.AccessControlService;
1113
import java.security.Principal;
1214
import java.util.Collection;
@@ -29,12 +31,13 @@
2931
public class AuthorizationController implements AuthorizationApi {
3032

3133
private final AccessControlService accessControlService;
34+
private final ClustersStorage clustersStorage;
3235

3336
public Mono<ResponseEntity<AuthenticationInfoDTO>> getUserAuthInfo(ServerWebExchange exchange) {
3437
List<UserPermissionDTO> defaultRolePermissions = accessControlService.getDefaultRole() != null
3538
? mapPermissions(
3639
accessControlService.getDefaultRole().getPermissions(),
37-
accessControlService.getDefaultRole().getClusters())
40+
clustersStorage.getKafkaClusters().stream().map(KafkaCluster::getName).toList())
3841
: Collections.emptyList();
3942

4043
Mono<List<UserPermissionDTO>> permissions = AccessControlService.getUser()

api/src/main/java/io/kafbat/ui/model/rbac/DefaultRole.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@
99
@Data
1010
public class DefaultRole {
1111

12-
private List<String> clusters;
1312
private List<Permission> permissions = new ArrayList<>();
1413

1514
public void validate() {
16-
checkArgument(clusters != null && !clusters.isEmpty(), "Default role clusters cannot be empty");
1715
permissions.forEach(Permission::validate);
1816
permissions.forEach(Permission::transform);
1917
}

api/src/main/java/io/kafbat/ui/service/rbac/AccessControlService.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import io.kafbat.ui.model.rbac.permission.ConsumerGroupAction;
1616
import io.kafbat.ui.model.rbac.permission.SchemaAction;
1717
import io.kafbat.ui.model.rbac.permission.TopicAction;
18-
import io.kafbat.ui.service.ClustersStorage;
1918
import io.kafbat.ui.service.rbac.extractor.CognitoAuthorityExtractor;
2019
import io.kafbat.ui.service.rbac.extractor.GithubAuthorityExtractor;
2120
import io.kafbat.ui.service.rbac.extractor.GoogleAuthorityExtractor;
@@ -55,7 +54,6 @@ public class AccessControlService {
5554
@Nullable
5655
private final InMemoryReactiveClientRegistrationRepository clientRegistrationRepository;
5756
private final RoleBasedAccessControlProperties properties;
58-
private final ClustersStorage clustersStorage;
5957
private final Environment environment;
6058

6159
@Getter
@@ -148,10 +146,7 @@ private boolean isClusterAccessible(String clusterName, AuthenticatedUser user)
148146
.filter(filterRole(user))
149147
.anyMatch(role -> role.getClusters().stream().anyMatch(clusterName::equalsIgnoreCase));
150148

151-
if (!isAccessible && properties.getDefaultRole() != null) {
152-
return properties.getDefaultRole().getClusters().stream().anyMatch(clusterName::equalsIgnoreCase);
153-
}
154-
return isAccessible;
149+
return isAccessible || properties.getDefaultRole() != null;
155150
}
156151

157152
public Mono<Boolean> isClusterAccessible(ClusterDTO cluster) {

api/src/test/java/io/kafbat/ui/service/rbac/AccessControlServiceDefaultRoleRbacEnabledTest.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,24 @@
11
package io.kafbat.ui.service.rbac;
22

33
import static io.kafbat.ui.service.rbac.MockedRbacUtils.DEFAULT_ROLE;
4-
import static io.kafbat.ui.service.rbac.MockedRbacUtils.DEV_CLUSTER;
54
import static io.kafbat.ui.service.rbac.MockedRbacUtils.PROD_CLUSTER;
65
import static io.kafbat.ui.service.rbac.MockedRbacUtils.getAccessContext;
7-
import static org.assertj.core.api.Assertions.assertThat;
86
import static org.mockito.Mockito.mock;
97
import static org.mockito.Mockito.when;
108

119
import io.kafbat.ui.AbstractIntegrationTest;
1210
import io.kafbat.ui.config.auth.RbacUser;
1311
import io.kafbat.ui.config.auth.RoleBasedAccessControlProperties;
1412
import io.kafbat.ui.model.ClusterDTO;
15-
import io.kafbat.ui.model.KafkaCluster;
1613
import io.kafbat.ui.model.rbac.AccessContext;
1714
import io.kafbat.ui.model.rbac.DefaultRole;
18-
import io.kafbat.ui.model.rbac.Role;
19-
import io.kafbat.ui.service.ClustersStorage;
2015
import java.util.List;
2116
import org.junit.jupiter.api.BeforeEach;
2217
import org.junit.jupiter.api.Test;
2318
import org.mockito.Mock;
2419
import org.mockito.MockedStatic;
2520
import org.mockito.Mockito;
2621
import org.springframework.beans.factory.annotation.Autowired;
27-
import org.springframework.security.access.AccessDeniedException;
2822
import org.springframework.security.core.Authentication;
2923
import org.springframework.security.core.context.ReactiveSecurityContextHolder;
3024
import org.springframework.security.core.context.SecurityContext;
@@ -55,9 +49,6 @@ public class AccessControlServiceDefaultRoleRbacEnabledTest extends AbstractInte
5549
@Mock
5650
DefaultRole defaultRole;
5751

58-
@Mock
59-
ClustersStorage clustersStorage;
60-
6152
@BeforeEach
6253
void setUp() {
6354

api/src/test/java/io/kafbat/ui/service/rbac/MockedRbacUtils.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,6 @@ public static Role getDevRole() {
102102
}
103103

104104
public static DefaultRole getDefaultRole() {
105-
DefaultRole role = new DefaultRole();
106-
role.setClusters(List.of(DEV_CLUSTER, PROD_CLUSTER));
107-
108105
Permission topicViewPermission = new Permission();
109106
topicViewPermission.setResource(Resource.TOPIC.name());
110107
topicViewPermission.setActions(List.of(TopicAction.VIEW.name()));
@@ -131,6 +128,7 @@ public static DefaultRole getDefaultRole() {
131128
schemaPermission,
132129
connectPermission
133130
);
131+
DefaultRole role = new DefaultRole();
134132
role.setPermissions(permissions);
135133
role.validate();
136134
return role;

0 commit comments

Comments
 (0)