From 399d67fd3c62a704eb19276f9a31be70a1b21ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E6=99=93=E4=B8=9C?= <763795151@qq.com> Date: Fri, 3 Sep 2021 21:01:09 +0800 Subject: [PATCH] add auth detail --- .../console/controller/AclAuthController.java | 6 +- .../kafka/console/service/AclService.java | 2 +- .../console/service/impl/AclServiceImpl.java | 4 +- ui/src/utils/api.js | 4 + ui/src/views/acl/Acl.vue | 124 +++++++++++---- ui/src/views/acl/AclDetail.vue | 148 ++++++++++++++++++ 6 files changed, 253 insertions(+), 35 deletions(-) create mode 100644 ui/src/views/acl/AclDetail.vue diff --git a/src/main/java/com/xuxd/kafka/console/controller/AclAuthController.java b/src/main/java/com/xuxd/kafka/console/controller/AclAuthController.java index b35c16c..c2322b3 100644 --- a/src/main/java/com/xuxd/kafka/console/controller/AclAuthController.java +++ b/src/main/java/com/xuxd/kafka/console/controller/AclAuthController.java @@ -28,9 +28,9 @@ public class AclAuthController { @Autowired private AclService aclService; - @GetMapping - public Object getAclList() { - return aclService.getAclList(); + @PostMapping("/detail") + public Object getAclDetailList(@RequestBody QueryAclDTO param) { + return aclService.getAclDetailList(param.toEntry()); } @GetMapping("/operation/list") diff --git a/src/main/java/com/xuxd/kafka/console/service/AclService.java b/src/main/java/com/xuxd/kafka/console/service/AclService.java index 4dcbdd0..2851d30 100644 --- a/src/main/java/com/xuxd/kafka/console/service/AclService.java +++ b/src/main/java/com/xuxd/kafka/console/service/AclService.java @@ -20,7 +20,7 @@ public interface AclService { ResponseData deleteUserAndAuth(String name); - ResponseData getAclList(); + ResponseData getAclDetailList(AclEntry entry); ResponseData getAclList(AclEntry entry); diff --git a/src/main/java/com/xuxd/kafka/console/service/impl/AclServiceImpl.java b/src/main/java/com/xuxd/kafka/console/service/impl/AclServiceImpl.java index 74c4bf6..23ec897 100644 --- a/src/main/java/com/xuxd/kafka/console/service/impl/AclServiceImpl.java +++ b/src/main/java/com/xuxd/kafka/console/service/impl/AclServiceImpl.java @@ -80,8 +80,8 @@ public class AclServiceImpl implements AclService, SmartInitializingSingleton { return ResponseData.create().success(); } - @Override public ResponseData getAclList() { - List aclBindingList = aclConsole.getAclList(null); + @Override public ResponseData getAclDetailList(AclEntry entry) { + List aclBindingList = entry ==null || entry.isNull() ? aclConsole.getAclList(null) : aclConsole.getAclList(entry); return ResponseData.create().data(new CounterList<>(aclBindingList.stream().map(x -> AclEntry.valueOf(x)).collect(Collectors.toList()))).success(); } diff --git a/ui/src/utils/api.js b/ui/src/utils/api.js index 1cec088..98483f6 100644 --- a/ui/src/utils/api.js +++ b/ui/src/utils/api.js @@ -35,4 +35,8 @@ export const KafkaAclApi = { url: "/acl", method: "post", }, + getAclDetailList: { + url: "/acl/detail", + method: "post", + }, }; diff --git a/ui/src/views/acl/Acl.vue b/ui/src/views/acl/Acl.vue index 73a333b..f2e5d45 100644 --- a/ui/src/views/acl/Acl.vue +++ b/ui/src/views/acl/Acl.vue @@ -53,6 +53,31 @@ > + + {{ t }}, + + + + + + {{ t }}, + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -138,10 +163,17 @@ import { KafkaAclApi } from "@/utils/api"; import ManageProducerAuth from "@/views/acl/ManageProducerAuth"; import ManageConsumerAuth from "@/views/acl/ManageConsumerAuth"; import AddAuth from "@/views/acl/AddAuth"; +import AclDetail from "@/views/acl/AclDetail"; export default { name: "Acl", - components: { UpdateUser, ManageProducerAuth, ManageConsumerAuth, AddAuth }, + components: { + UpdateUser, + ManageProducerAuth, + ManageConsumerAuth, + AddAuth, + AclDetail, + }, data() { return { queryParam: {}, @@ -156,6 +188,12 @@ export default { openManageProducerAuthDialog: false, openManageConsumerAuthDialog: false, openAddAuthDialog: false, + openAclDetailDialog: false, + selectDetail: { + resourceName: "", + resourceType: "", + username: "", + }, }; }, methods: { @@ -223,6 +261,18 @@ export default { Object.assign(rowData, row); this.selectRow = rowData; }, + onTopicDetail(topic, username) { + this.selectDetail.resourceType = "TOPIC"; + this.selectDetail.resourceName = topic; + this.selectDetail.username = username; + this.openAclDetailDialog = true; + }, + onGroupDetail(group, username) { + this.selectDetail.resourceType = "GROUP"; + this.selectDetail.resourceName = group; + this.selectDetail.username = username; + this.openAclDetailDialog = true; + }, closeManageProducerAuthDialog() { this.openManageProducerAuthDialog = false; getAclList(this.data, this.queryParam); @@ -235,6 +285,10 @@ export default { this.openAddAuthDialog = false; getAclList(this.data, this.queryParam); }, + closeAclDetailDialog() { + this.openAclDetailDialog = false; + getAclList(this.data, this.queryParam); + }, }, created() { getAclList(this.data, this.queryParam); @@ -265,8 +319,8 @@ function getAclList(data, requestParameters) { data.push({ key: k, username: k, - topicList: topicList.join(", "), - groupList: groupList.join(", "), + topicList: topicList, + groupList: groupList, user: response.data.map[k]["USER"], }); } @@ -275,8 +329,20 @@ function getAclList(data, requestParameters) { const columns = [ { title: "用户名", dataIndex: "username", key: "username" }, - { title: "topic列表", dataIndex: "topicList", key: "topicList" }, - { title: "消费组列表", dataIndex: "groupList", key: "groupList" }, + { + title: "topic列表", + dataIndex: "topicList", + key: "topicList", + slots: { title: "topicList" }, + scopedSlots: { customRender: "topicList" }, + }, + { + title: "消费组列表", + dataIndex: "groupList", + key: "groupList", + slots: { title: "groupList" }, + scopedSlots: { customRender: "groupList" }, + }, { title: "操作", key: "operation", diff --git a/ui/src/views/acl/AclDetail.vue b/ui/src/views/acl/AclDetail.vue new file mode 100644 index 0000000..2e30a66 --- /dev/null +++ b/ui/src/views/acl/AclDetail.vue @@ -0,0 +1,148 @@ + + + + +