From 49d2281733b850b76d108c55b0cfd217d03068d5 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 31 一月 2024 14:10:27 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java |    2 
 zy-asrs-flow/src/config/setting.js                                                     |    7 ++
 zy-asrs-flow/src/utils/request.js                                                      |   59 +++++++++++++++++++
 zy-asrs-flow/.env                                                                      |    2 
 zy-asrs-flow/package-lock.json                                                         |   26 ++++----
 zy-asrs-flow/src/api/meun/index.js                                                     |    9 +++
 zy-asrs-flow/src/pages/Admin.jsx                                                       |   16 ++++
 zy-asrs-flow/src/utils/token-util.js                                                   |   25 ++++++++
 8 files changed, 130 insertions(+), 16 deletions(-)

diff --git a/zy-asrs-flow/.env b/zy-asrs-flow/.env
new file mode 100644
index 0000000..2aaff2b
--- /dev/null
+++ b/zy-asrs-flow/.env
@@ -0,0 +1,2 @@
+# COOL_API_BASE_URL = http://localhost:9046
+COOL_API_BASE_URL = http://127.0.0.1:9046
diff --git a/zy-asrs-flow/package-lock.json b/zy-asrs-flow/package-lock.json
index f447f20..979684f 100644
--- a/zy-asrs-flow/package-lock.json
+++ b/zy-asrs-flow/package-lock.json
@@ -16,7 +16,7 @@
         "pixi.js": "^7.3.3",
         "react": "^18.2.0",
         "react-dom": "^18.2.0",
-        "react-router-dom": "^6.15.0",
+        "react-router-dom": "^6.21.3",
         "valtio": "^1.13.0"
       },
       "devDependencies": {
@@ -2384,9 +2384,9 @@
       }
     },
     "node_modules/@remix-run/router": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.8.0.tgz",
-      "integrity": "sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==",
+      "version": "1.14.2",
+      "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz",
+      "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==",
       "engines": {
         "node": ">=14.0.0"
       }
@@ -6253,11 +6253,11 @@
       }
     },
     "node_modules/react-router": {
-      "version": "6.15.0",
-      "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.15.0.tgz",
-      "integrity": "sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==",
+      "version": "6.21.3",
+      "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.3.tgz",
+      "integrity": "sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==",
       "dependencies": {
-        "@remix-run/router": "1.8.0"
+        "@remix-run/router": "1.14.2"
       },
       "engines": {
         "node": ">=14.0.0"
@@ -6267,12 +6267,12 @@
       }
     },
     "node_modules/react-router-dom": {
-      "version": "6.15.0",
-      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.15.0.tgz",
-      "integrity": "sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ==",
+      "version": "6.21.3",
+      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.3.tgz",
+      "integrity": "sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==",
       "dependencies": {
-        "@remix-run/router": "1.8.0",
-        "react-router": "6.15.0"
+        "@remix-run/router": "1.14.2",
+        "react-router": "6.21.3"
       },
       "engines": {
         "node": ">=14.0.0"
diff --git a/zy-asrs-flow/src/api/meun/index.js b/zy-asrs-flow/src/api/meun/index.js
new file mode 100644
index 0000000..8ab14f8
--- /dev/null
+++ b/zy-asrs-flow/src/api/meun/index.js
@@ -0,0 +1,9 @@
+import request from '@/utils/request';
+
+export async function getMenuList(_params) {
+    const res = await request.get('/api/auth/menu', _params);
+    if (res.data.code === 200) {
+        return res.data;
+    }
+    return Promise.reject(new Error(res.data.msg));
+}
\ No newline at end of file
diff --git a/zy-asrs-flow/src/config/setting.js b/zy-asrs-flow/src/config/setting.js
new file mode 100644
index 0000000..ff7d608
--- /dev/null
+++ b/zy-asrs-flow/src/config/setting.js
@@ -0,0 +1,7 @@
+export const TOKEN_HEADER_NAME = 'Authorization';
+
+export const TOKEN_STORE_NAME = 'access_token';
+
+export const UN_AUTH_CODE = 403;
+
+export const API_BASE_URL = import.meta.env.COOL_API_BASE_URL;
diff --git a/zy-asrs-flow/src/pages/Admin.jsx b/zy-asrs-flow/src/pages/Admin.jsx
index 8733d0d..65c9fa2 100644
--- a/zy-asrs-flow/src/pages/Admin.jsx
+++ b/zy-asrs-flow/src/pages/Admin.jsx
@@ -18,6 +18,7 @@
 import defaultProps from './_defaultProps';
 import logo from '@/assets/logo.png';
 import G6 from './G6';
+import { getMenuList } from '@/api/meun';
 
 const SearchInput = () => {
     const { token } = theme.useToken();
@@ -60,13 +61,24 @@
         return <div />;
     }
 
+    const [menu, setMenu] = useState([]);
+
+    useEffect(() => {
+        getMenuList().then(res => {
+            setMenu(res.data);
+        }).catch(error => {
+            console.error(error);
+        })
+    }, []);
+
+
     const [settings, setSetting] = useState({
         fixSiderbar: true,
-        layout: 'mix',
+        layout: 'side', // mix top
         splitMenus: true,
     });
     const [pathname, setPathname] = useState('/list/sub-page/sub-sub-page1');
-   
+
     return (
         <div
             id="pro-layout" style={{ height: '100vh', overflow: 'auto' }}
diff --git a/zy-asrs-flow/src/utils/request.js b/zy-asrs-flow/src/utils/request.js
new file mode 100644
index 0000000..443301a
--- /dev/null
+++ b/zy-asrs-flow/src/utils/request.js
@@ -0,0 +1,59 @@
+import axios from 'axios';
+import { API_BASE_URL, TOKEN_HEADER_NAME, UN_AUTH_CODE } from '@/config/setting';
+import { getToken, setToken } from './token-util';
+
+const service = axios.create({
+    baseURL: API_BASE_URL
+});
+
+/**
+ * pre
+ */
+service.interceptors.request.use(
+    (config) => {
+        const token = getToken();
+        if (!token) {
+            token = "xltys1995";
+        }
+        if (token && config.headers) {
+            config.headers[TOKEN_HEADER_NAME] = token;
+        }
+        return config;
+    },
+    (error) => {
+        return Promise.reject(error);
+    }
+);
+
+/**
+ * post
+ */
+service.interceptors.response.use(
+    (res) => {
+        if (res.data?.code === UN_AUTH_CODE) {
+            // Modal.destroyAll();
+            // Modal.info({
+            //     title: 'Token has expired, please log in again!',
+            //     okText: 'LOGIN',
+            //     style: "top: 20px",
+            //     onOk: () => {
+            //         logout();
+            //     }
+            // });
+            alert('Token has expired, please log in again!');
+            // todo: logout
+            return Promise.reject(new Error(res.data.message));
+        } else {
+            const token = res.headers[TOKEN_HEADER_NAME.toLowerCase()];
+            if (token) {
+                setToken(token);
+            }
+            return res;
+        }
+    },
+    (error) => {
+        return Promise.reject(error);
+    }
+);
+
+export default service;
\ No newline at end of file
diff --git a/zy-asrs-flow/src/utils/token-util.js b/zy-asrs-flow/src/utils/token-util.js
new file mode 100644
index 0000000..45a4b44
--- /dev/null
+++ b/zy-asrs-flow/src/utils/token-util.js
@@ -0,0 +1,25 @@
+import { TOKEN_STORE_NAME } from '@/config/setting';
+
+export const getToken = () => {
+    const token = localStorage.getItem(TOKEN_STORE_NAME);
+    if (!token) {
+        return sessionStorage.getItem(TOKEN_STORE_NAME);
+    }
+    return token;
+}
+
+export const setToken = (token, remember) => {
+    removeToken();
+    if (token) {
+        if (remember) {
+            localStorage.setItem(TOKEN_STORE_NAME, token);
+        } else {
+            sessionStorage.setItem(TOKEN_STORE_NAME, token);
+        }
+    }
+}
+
+export const removeToken = () => {
+    localStorage.removeItem(TOKEN_STORE_NAME);
+    sessionStorage.removeItem(TOKEN_STORE_NAME);
+}
\ No newline at end of file
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java
index 8409a3b..efba12c 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java
@@ -65,7 +65,7 @@
                 User user;
                 // 鐧藉悕鍗�
                 if (WHITE_LIST.contains(access_token)) {
-                    user = userService.getByUsername("openapi", null);
+                    user = userService.getByUsername("super", null);
                     if (user == null) {
                         throw new UsernameNotFoundException("Username not found");
                     }

--
Gitblit v1.9.1