New file |
| | |
| | | # COOL_API_BASE_URL = http://localhost:9046 |
| | | COOL_API_BASE_URL = http://127.0.0.1:9046 |
| | |
| | | "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": { |
| | |
| | | } |
| | | }, |
| | | "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" |
| | | } |
| | |
| | | } |
| | | }, |
| | | "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" |
| | |
| | | } |
| | | }, |
| | | "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" |
New file |
| | |
| | | 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)); |
| | | } |
New file |
| | |
| | | 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; |
| | |
| | | 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(); |
| | |
| | | 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'); |
New file |
| | |
| | | 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; |
New file |
| | |
| | | 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); |
| | | } |
| | |
| | | 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"); |
| | | } |