首页
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 Login from '@/views/Login'
|
||||
import Register from '@/views/Register'
|
||||
@ -6,12 +6,9 @@ import Profile from '@/views/profile/Profile'
|
||||
import Textures from '@/views/profile/Textures'
|
||||
import Security from '@/views/profile/Security'
|
||||
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 NeedLogin from "@/components/NeedLogin";
|
||||
import Index from "@/views/Index";
|
||||
|
||||
const router = createBrowserRouter([
|
||||
{ path: "*", Component: Root },
|
||||
@ -22,7 +19,7 @@ function Root() {
|
||||
<>
|
||||
<Routes>
|
||||
<Route path="/" element={<Layout />}>
|
||||
<Route index />
|
||||
<Route index element={<Index />} />
|
||||
<Route path="/*" element={<p>404</p>} />
|
||||
<Route path="/login" element={<Login />} />
|
||||
<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