|
6 | 6 | import com.provectus.kafka.ui.exception.ValidationException;
|
7 | 7 | import com.provectus.kafka.ui.model.rbac.AccessContext;
|
8 | 8 | import com.provectus.kafka.ui.model.rbac.Resource;
|
| 9 | +import com.provectus.kafka.ui.model.rbac.permission.PermissibleAction; |
9 | 10 | import java.util.ArrayList;
|
10 | 11 | import java.util.LinkedHashMap;
|
11 | 12 | import java.util.List;
|
@@ -33,33 +34,37 @@ String toJson() {
|
33 | 34 | return MAPPER.writeValueAsString(this);
|
34 | 35 | }
|
35 | 36 |
|
36 |
| - record AuditResource(String accessType, Resource type, @Nullable Object id) { |
| 37 | + record AuditResource(String accessType, boolean alter, Resource type, @Nullable Object id) { |
| 38 | + |
| 39 | + private static AuditResource create(PermissibleAction action, Resource type, @Nullable Object id) { |
| 40 | + return new AuditResource(action.name(), action.isAlter(), type, id); |
| 41 | + } |
37 | 42 |
|
38 | 43 | static List<AuditResource> getAccessedResources(AccessContext ctx) {
|
39 | 44 | List<AuditResource> resources = new ArrayList<>();
|
40 | 45 | ctx.getClusterConfigActions()
|
41 |
| - .forEach(a -> resources.add(new AuditResource(a.name(), Resource.CLUSTERCONFIG, null))); |
| 46 | + .forEach(a -> resources.add(create(a, Resource.CLUSTERCONFIG, null))); |
42 | 47 | ctx.getTopicActions()
|
43 |
| - .forEach(a -> resources.add(new AuditResource(a.name(), Resource.TOPIC, nameId(ctx.getTopic())))); |
| 48 | + .forEach(a -> resources.add(create(a, Resource.TOPIC, nameId(ctx.getTopic())))); |
44 | 49 | ctx.getConsumerGroupActions()
|
45 |
| - .forEach(a -> resources.add(new AuditResource(a.name(), Resource.CONSUMER, nameId(ctx.getConsumerGroup())))); |
| 50 | + .forEach(a -> resources.add(create(a, Resource.CONSUMER, nameId(ctx.getConsumerGroup())))); |
46 | 51 | ctx.getConnectActions()
|
47 | 52 | .forEach(a -> {
|
48 | 53 | Map<String, String> resourceId = new LinkedHashMap<>();
|
49 | 54 | resourceId.put("connect", ctx.getConnect());
|
50 | 55 | if (ctx.getConnector() != null) {
|
51 | 56 | resourceId.put("connector", ctx.getConnector());
|
52 | 57 | }
|
53 |
| - resources.add(new AuditResource(a.name(), Resource.CONNECT, resourceId)); |
| 58 | + resources.add(create(a, Resource.CONNECT, resourceId)); |
54 | 59 | });
|
55 | 60 | ctx.getSchemaActions()
|
56 |
| - .forEach(a -> resources.add(new AuditResource(a.name(), Resource.SCHEMA, nameId(ctx.getSchema())))); |
| 61 | + .forEach(a -> resources.add(create(a, Resource.SCHEMA, nameId(ctx.getSchema())))); |
57 | 62 | ctx.getKsqlActions()
|
58 |
| - .forEach(a -> resources.add(new AuditResource(a.name(), Resource.KSQL, null))); |
| 63 | + .forEach(a -> resources.add(create(a, Resource.KSQL, null))); |
59 | 64 | ctx.getAclActions()
|
60 |
| - .forEach(a -> resources.add(new AuditResource(a.name(), Resource.ACL, null))); |
| 65 | + .forEach(a -> resources.add(create(a, Resource.ACL, null))); |
61 | 66 | ctx.getAuditAction()
|
62 |
| - .forEach(a -> resources.add(new AuditResource(a.name(), Resource.AUDIT, null))); |
| 67 | + .forEach(a -> resources.add(create(a, Resource.AUDIT, null))); |
63 | 68 | return resources;
|
64 | 69 | }
|
65 | 70 |
|
|
0 commit comments