This commit is contained in:
xmdhs 2023-10-13 22:06:02 +08:00
parent ab34676921
commit 70ede8d0b0
No known key found for this signature in database
GPG Key ID: E809D6D43DEFCC95
3 changed files with 52 additions and 39 deletions

View File

@ -1,4 +1,4 @@
import { Routes, Route, createBrowserRouter, RouterProvider, useNavigate, Outlet, Navigate } from "react-router-dom"; import { Routes, Route, createBrowserRouter, RouterProvider, Outlet } from "react-router-dom";
import { ScrollRestoration } from "react-router-dom"; import { ScrollRestoration } from "react-router-dom";
import Login from '@/views/Login' import Login from '@/views/Login'
import Register from '@/views/Register' import Register from '@/views/Register'
@ -6,12 +6,9 @@ import Profile from '@/views/profile/Profile'
import Textures from '@/views/profile/Textures' import Textures from '@/views/profile/Textures'
import Security from '@/views/profile/Security' import Security from '@/views/profile/Security'
import Layout from '@/views/Layout' import Layout from '@/views/Layout'
import { useAtomValue } from "jotai";
import { token } from "@/store/store";
import { ApiErr } from "@/apis/error";
import { userInfo } from "@/apis/apis";
import { useRequest } from "ahooks";
import UserAdmin from "@/views/admin/UserAdmin"; import UserAdmin from "@/views/admin/UserAdmin";
import NeedLogin from "@/components/NeedLogin";
import Index from "@/views/Index";
const router = createBrowserRouter([ const router = createBrowserRouter([
{ path: "*", Component: Root }, { path: "*", Component: Root },
@ -22,7 +19,7 @@ function Root() {
<> <>
<Routes> <Routes>
<Route path="/" element={<Layout />}> <Route path="/" element={<Layout />}>
<Route index /> <Route index element={<Index />} />
<Route path="/*" element={<p>404</p>} /> <Route path="/*" element={<p>404</p>} />
<Route path="/login" element={<Login />} /> <Route path="/login" element={<Login />} />
<Route path="/register" element={<Register />} /> <Route path="/register" element={<Register />} />
@ -53,35 +50,3 @@ export function PageRoute() {
) )
} }
function NeedLogin({ children, needAdmin = false }: { children: JSX.Element, needAdmin?: boolean }) {
const t = useAtomValue(token)
const navigate = useNavigate();
useRequest(() => userInfo(t), {
refreshDeps: [t],
cacheKey: "/api/v1/user" + t,
staleTime: 60000,
onError: e => {
if (e instanceof ApiErr && e.code == 5) {
navigate("/login")
}
console.warn(e)
},
onSuccess: u => {
if (!u) return
if (!u.is_admin && needAdmin) {
navigate("/login")
}
if (u.uuid == "") {
navigate("/login")
}
}
})
if (!localStorage.getItem("token") || localStorage.getItem("token") == '""') {
return <Navigate to="/login" />
}
return <> {children}</>
}

View File

@ -0,0 +1,39 @@
import { userInfo } from "@/apis/apis";
import { ApiErr } from "@/apis/error";
import { token } from "@/store/store";
import { useRequest } from "ahooks";
import { useAtomValue } from "jotai";
import { useNavigate, Navigate } from "react-router-dom";
export default function NeedLogin({ children, needAdmin = false }: { children: JSX.Element, needAdmin?: boolean }) {
const t = useAtomValue(token)
const navigate = useNavigate();
useRequest(() => userInfo(t), {
refreshDeps: [t],
cacheKey: "/api/v1/user" + t,
staleTime: 60000,
onError: e => {
if (e instanceof ApiErr && e.code == 5) {
navigate("/login")
}
console.warn(e)
},
onSuccess: u => {
if (!u) return
if (!u.is_admin && needAdmin) {
navigate("/login")
}
if (u.uuid == "") {
navigate("/login")
}
}
})
if (!localStorage.getItem("token") || localStorage.getItem("token") == '""') {
return <Navigate to="/login" />
}
return <> {children}</>
}

View File

@ -0,0 +1,9 @@
import Profile from "@/views/profile/Profile"
import Login from "@/views/Login"
export default function Index() {
if (!(localStorage.getItem("token") || localStorage.getItem("token") == '""')) {
return <Profile />
}
return <Login />
}