From f7b2d885bc64a0598facb2b5a0d89dcdf5921902 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 27 九月 2023 16:26:11 +0800
Subject: [PATCH] 修改代理服务-3

---
 src/main/java/com/moon/server/service/sys/ProxyService.java |   33 ++++++++++++++++++++++++++++++---
 1 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/moon/server/service/sys/ProxyService.java b/src/main/java/com/moon/server/service/sys/ProxyService.java
index 4b14343..b6c8770 100644
--- a/src/main/java/com/moon/server/service/sys/ProxyService.java
+++ b/src/main/java/com/moon/server/service/sys/ProxyService.java
@@ -245,15 +245,42 @@
             return url;
         }
 
-        String str = req.getQueryString();
-        if (!StaticData.GET_CAPABILITIES.equals(req.getParameter(StaticData.REQUEST))) {
-            //
+        String str = req.getQueryString(), layers = req.getParameter("layers");
+        if (!StaticData.GET_CAPABILITIES.equals(req.getParameter(StaticData.REQUEST)) && null != layers) {
+            int start = str.indexOf("layers");
+            int end = str.indexOf("&", start);
+            layers = filterGeoLayers(ue, layers);
+
+            str = str.replace(str.substring(start, end > -1 ? end : str.length()), "layers=" + layers);
+        } else {
+            entity.setBak(StaticData.GET_CAPABILITIES);
         }
 
         return url + (url.contains("?") ? "&" : "?") + str;
     }
 
     /**
+     * 杩囨护GeoServer鍥惧眰
+     */
+    private String filterGeoLayers(UserEntity ue, String layers) {
+        List<String> tabs = StaticData.ADMIN.equals(ue.getUid()) ? permsService.selectAllTabs() : permsService.selectTabs(ue.getUid());
+        if (null == tabs || tabs.isEmpty()) {
+            return "";
+        }
+
+        StringBuilder sb = new StringBuilder();
+        String[] strs = layers.split(StaticData.COMMA);
+        for (String str : strs) {
+            if (tabs.contains(str)) {
+                sb.append(str).append(",");
+            }
+        }
+        sb.deleteCharAt(sb.length() - 1);
+
+        return sb.toString();
+    }
+
+    /**
      * 杞彂璇锋眰
      */
     private void forward(HttpServletRequest request, HttpServletResponse response, ResEntity entity, String url) throws Exception {

--
Gitblit v1.9.3