首页
This commit is contained in:
parent
ab34676921
commit
70ede8d0b0
@ -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}</>
|
|
||||||
}
|
|
39
frontend/src/components/NeedLogin.tsx
Normal file
39
frontend/src/components/NeedLogin.tsx
Normal 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}</>
|
||||||
|
}
|
9
frontend/src/views/Index.tsx
Normal file
9
frontend/src/views/Index.tsx
Normal 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 />
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user