Skip to content

Commit 1835be4

Browse files
committed
fix: move isReadOnly check from dropdown to list items
2 parents e254bcf + 6f35c47 commit 1835be4

File tree

14 files changed

+217
-186
lines changed

14 files changed

+217
-186
lines changed

api/pom.xml

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
<dependency>
9292
<groupId>software.amazon.msk</groupId>
9393
<artifactId>aws-msk-iam-auth</artifactId>
94-
<version>2.1.0</version>
94+
<version>2.2.0</version>
9595
</dependency>
9696

9797
<dependency>
@@ -266,18 +266,6 @@
266266
<artifactId>cel</artifactId>
267267
</dependency>
268268
<!-- CVE fixes -->
269-
<dependency>
270-
<groupId>ch.qos.logback</groupId>
271-
<artifactId>logback-classic</artifactId>
272-
<version>1.4.12</version>
273-
</dependency>
274-
<!-- CVE fixes -->
275-
<dependency>
276-
<groupId>ch.qos.logback</groupId>
277-
<artifactId>logback-core</artifactId>
278-
<version>1.4.12</version>
279-
</dependency>
280-
<!-- CVE fixes -->
281269
<dependency>
282270
<groupId>com.squareup.okhttp3</groupId>
283271
<artifactId>logging-interceptor</artifactId>
@@ -289,7 +277,6 @@
289277
<artifactId>commons-compress</artifactId>
290278
<version>1.26.0</version>
291279
</dependency>
292-
293280
</dependencies>
294281

295282
<build>

api/src/main/java/io/kafbat/ui/config/ReadOnlyModeFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class ReadOnlyModeFilter implements WebFilter {
2525
Pattern.compile("/api/clusters/(?<clusterName>[^/]++)");
2626

2727
private static final Set<Pattern> SAFE_ENDPOINTS = Set.of(
28-
Pattern.compile("/api/clusters/[^/]+/topics/[^/]+/(smartfilters)$")
28+
Pattern.compile("/api/clusters/[^/]+/topics/[^/]+/(smartfilters|analysis)$")
2929
);
3030

3131
private final ClustersStorage clustersStorage;

api/src/main/java/io/kafbat/ui/model/InternalBrokerConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ public class InternalBrokerConfig {
1616
private final boolean isReadOnly;
1717
private final List<ConfigEntry.ConfigSynonym> synonyms;
1818

19-
public static InternalBrokerConfig from(ConfigEntry configEntry) {
19+
public static InternalBrokerConfig from(ConfigEntry configEntry, boolean readOnlyCluster) {
2020
InternalBrokerConfig.InternalBrokerConfigBuilder builder = InternalBrokerConfig.builder()
2121
.name(configEntry.name())
2222
.value(configEntry.value())
2323
.source(configEntry.source())
24-
.isReadOnly(configEntry.isReadOnly())
24+
.isReadOnly(readOnlyCluster || configEntry.isReadOnly())
2525
.isSensitive(configEntry.isSensitive())
2626
.synonyms(configEntry.synonyms());
2727
return builder.build();

api/src/main/java/io/kafbat/ui/service/BrokerService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ private Flux<InternalBrokerConfig> getBrokersConfig(KafkaCluster cluster, Intege
5959
}
6060
return loadBrokersConfig(cluster, brokerId)
6161
.map(list -> list.stream()
62-
.map(InternalBrokerConfig::from)
62+
.map(configEntry -> InternalBrokerConfig.from(configEntry, cluster.isReadOnly()))
6363
.collect(Collectors.toList()))
6464
.flatMapMany(Flux::fromIterable);
6565
}

api/src/main/java/io/kafbat/ui/service/acl/AclsService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public Mono<Void> createConsumerAcl(KafkaCluster cluster, CreateConsumerAclDTO r
158158
.then();
159159
}
160160

161-
//Read, Describe on topics, Read on consumerGroups
161+
//Read, Describe on topics and consumerGroups
162162
private List<AclBinding> createConsumerBindings(CreateConsumerAclDTO request) {
163163
List<AclBinding> bindings = new ArrayList<>();
164164
bindings.addAll(
@@ -172,7 +172,7 @@ private List<AclBinding> createConsumerBindings(CreateConsumerAclDTO request) {
172172
bindings.addAll(
173173
createAllowBindings(
174174
GROUP,
175-
List.of(READ),
175+
List.of(READ, DESCRIBE),
176176
request.getPrincipal(),
177177
request.getHost(),
178178
request.getConsumerGroupsPrefix(),

api/src/test/java/io/kafbat/ui/serdes/PropertyResolverImplTest.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
import java.util.List;
77
import java.util.Map;
8-
import lombok.AllArgsConstructor;
9-
import lombok.Data;
108
import org.junit.jupiter.api.Nested;
119
import org.junit.jupiter.api.Test;
1210
import org.springframework.boot.context.properties.bind.BindException;
@@ -21,11 +19,7 @@ class PropertyResolverImplTest {
2119

2220
private final MockEnvironment env = new MockEnvironment();
2321

24-
@Data
25-
@AllArgsConstructor
26-
public static class CustomPropertiesClass {
27-
private String f1;
28-
private Integer f2;
22+
public record CustomPropertiesClass(String f1, Integer f2) {
2923
}
3024

3125
@Test

api/src/test/java/io/kafbat/ui/service/acl/AclsServiceTest.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,10 @@ void createsConsumerDependantAcls() {
103103
.topics(List.of("t1", "t2"))
104104
).block();
105105

106-
//Read, Describe on topics, Read on consumerGroups
106+
//Read, Describe on topics and consumerGroups
107107
Collection<AclBinding> createdBindings = createdCaptor.getValue();
108108
assertThat(createdBindings)
109-
.hasSize(6)
109+
.hasSize(8)
110110
.contains(new AclBinding(
111111
new ResourcePattern(ResourceType.TOPIC, "t1", PatternType.LITERAL),
112112
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
@@ -122,9 +122,15 @@ void createsConsumerDependantAcls() {
122122
.contains(new AclBinding(
123123
new ResourcePattern(ResourceType.GROUP, "cg1", PatternType.LITERAL),
124124
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
125+
.contains(new AclBinding(
126+
new ResourcePattern(ResourceType.GROUP, "cg1", PatternType.LITERAL),
127+
new AccessControlEntry(principal, host, AclOperation.DESCRIBE, AclPermissionType.ALLOW)))
128+
.contains(new AclBinding(
129+
new ResourcePattern(ResourceType.GROUP, "cg2", PatternType.LITERAL),
130+
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
125131
.contains(new AclBinding(
126132
new ResourcePattern(ResourceType.GROUP, "cg2", PatternType.LITERAL),
127-
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)));
133+
new AccessControlEntry(principal, host, AclOperation.DESCRIBE, AclPermissionType.ALLOW)));
128134
}
129135

130136
@Test
@@ -145,10 +151,10 @@ void createsConsumerDependantAclsWhenTopicsAndGroupsSpecifiedByPrefix() {
145151
.topicsPrefix("topicPref")
146152
).block();
147153

148-
//Read, Describe on topics, Read on consumerGroups
154+
//Read, Describe on topics and consumerGroups
149155
Collection<AclBinding> createdBindings = createdCaptor.getValue();
150156
assertThat(createdBindings)
151-
.hasSize(3)
157+
.hasSize(4)
152158
.contains(new AclBinding(
153159
new ResourcePattern(ResourceType.TOPIC, "topicPref", PatternType.PREFIXED),
154160
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
@@ -157,7 +163,10 @@ void createsConsumerDependantAclsWhenTopicsAndGroupsSpecifiedByPrefix() {
157163
new AccessControlEntry(principal, host, AclOperation.DESCRIBE, AclPermissionType.ALLOW)))
158164
.contains(new AclBinding(
159165
new ResourcePattern(ResourceType.GROUP, "cgPref", PatternType.PREFIXED),
160-
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)));
166+
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
167+
.contains(new AclBinding(
168+
new ResourcePattern(ResourceType.GROUP, "cgPref", PatternType.PREFIXED),
169+
new AccessControlEntry(principal, host, AclOperation.DESCRIBE, AclPermissionType.ALLOW)));
161170
}
162171

163172
@Test

api/src/test/java/io/kafbat/ui/service/ksql/KsqlApiClientTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import com.fasterxml.jackson.databind.node.ArrayNode;
6-
import com.fasterxml.jackson.databind.node.DecimalNode;
6+
import com.fasterxml.jackson.databind.node.DoubleNode;
77
import com.fasterxml.jackson.databind.node.IntNode;
88
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
99
import com.fasterxml.jackson.databind.node.TextNode;
1010
import io.kafbat.ui.AbstractIntegrationTest;
11-
import java.math.BigDecimal;
1211
import java.time.Duration;
1312
import java.util.Map;
1413
import org.junit.jupiter.api.AfterAll;
@@ -80,23 +79,23 @@ private void assertLastKsqTutorialQueryResult(KsqlApiClient client) {
8079
assertThat(header.getValues()).isNull();
8180
})
8281
.assertNext(row -> {
83-
var distance = (DecimalNode) row.getValues().get(0).get(0);
82+
var distance = (DoubleNode) row.getValues().get(0).get(0);
8483
var riders = (ArrayNode) row.getValues().get(0).get(1);
8584
var count = (IntNode) row.getValues().get(0).get(2);
8685

87-
assertThat(distance).isEqualTo(new DecimalNode(new BigDecimal(0)));
86+
assertThat(distance).isEqualTo(new DoubleNode(0D));
8887
assertThat(riders).isEqualTo(new ArrayNode(JsonNodeFactory.instance)
8988
.add(new TextNode("4ab5cbad"))
9089
.add(new TextNode("8b6eae59"))
9190
.add(new TextNode("4a7c7b41")));
9291
assertThat(count).isEqualTo(new IntNode(3));
9392
})
9493
.assertNext(row -> {
95-
var distance = (DecimalNode) row.getValues().get(0).get(0);
94+
var distance = (DoubleNode) row.getValues().get(0).get(0);
9695
var riders = (ArrayNode) row.getValues().get(0).get(1);
9796
var count = (IntNode) row.getValues().get(0).get(2);
9897

99-
assertThat(distance).isEqualTo(new DecimalNode(new BigDecimal(10)));
98+
assertThat(distance).isEqualTo(new DoubleNode(10D));
10099
assertThat(riders).isEqualTo(new ArrayNode(JsonNodeFactory.instance)
101100
.add(new TextNode("18f4ea86")));
102101
assertThat(count).isEqualTo(new IntNode(1));

frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"pretty-ms": "7.0.1",
2222
"react": "18.2.0",
2323
"react-ace": "11.0.1",
24-
"react-datepicker": "6.9.0",
24+
"react-datepicker": "7.4.0",
2525
"react-dom": "18.2.0",
2626
"react-error-boundary": "4.0.13",
2727
"react-hook-form": "7.51.3",

0 commit comments

Comments
 (0)