From ca6fb5e7cc8d7ad5dec1287d0fe875e6dcf28ebe Mon Sep 17 00:00:00 2001
From: Easy <crazybeginner@qq.com>
Date: Tue, 15 Mar 2022 09:02:44 +0800
Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E4=BA=86=E6=8E=A5=E5=8F=A3?=
 =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=A0=BC=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../core/http/acl/AclQueryPolicyActor.java    | 22 ++++++++++++-------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/smqtt-core/src/main/java/io/github/quickmsg/core/http/acl/AclQueryPolicyActor.java b/smqtt-core/src/main/java/io/github/quickmsg/core/http/acl/AclQueryPolicyActor.java
index 4f549d7..0fe94f4 100644
--- a/smqtt-core/src/main/java/io/github/quickmsg/core/http/acl/AclQueryPolicyActor.java
+++ b/smqtt-core/src/main/java/io/github/quickmsg/core/http/acl/AclQueryPolicyActor.java
@@ -16,6 +16,10 @@ import reactor.netty.http.server.HttpServerRequest;
 import reactor.netty.http.server.HttpServerResponse;
 
 import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author luxurong
@@ -29,14 +33,16 @@ public class AclQueryPolicyActor extends AbstractHttpActor {
 
     @Override
     public Publisher<Void> doRequest(HttpServerRequest request, HttpServerResponse response, Configuration configuration) {
-        return request
-                .receive()
-                .asString(StandardCharsets.UTF_8)
-                .map(this.toJson(PolicyModel.class))
-                .doOnNext(policyModel ->
-                        response.sendString(Mono.just(JacksonUtil.bean2Json(ContextHolder.getReceiveContext().getAclManager().get(policyModel)))).then().subscribe()
-                )
-                .then();
+        return request.receive().asString(StandardCharsets.UTF_8).map(this.toJson(PolicyModel.class)).doOnNext(policyModel -> {
+            List<Map<String, Object>> collect = ContextHolder.getReceiveContext().getAclManager().get(policyModel).stream().map(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("subject", item.size() >= 3 ? item.get(0) : null);
+                map.put("source", item.size() >= 3 ? item.get(1) : null);
+                map.put("action", item.size() >= 3 ? item.get(2) : null);
+                return map;
+            }).collect(Collectors.toList());
+            response.sendString(Mono.just(JacksonUtil.bean2Json(collect))).then().subscribe();
+        }).then();
     }
 
 }
-- 
GitLab