35 lines
966 B
TypeScript
35 lines
966 B
TypeScript
|
|
import { Navigate, Route, Routes } from "react-router-dom";
|
|||
|
|
import Login from "../pages/Login";
|
|||
|
|
import AppLayout from "../layouts/AppLayout";
|
|||
|
|
import { menuRoutes } from "./routes";
|
|||
|
|
import { useAuth } from "../hooks/useAuth";
|
|||
|
|
|
|||
|
|
function RequireAuth({ children }: { children: JSX.Element }) {
|
|||
|
|
const { isAuthed } = useAuth();
|
|||
|
|
if (!isAuthed) {
|
|||
|
|
return <Navigate to="/login" replace />;
|
|||
|
|
}
|
|||
|
|
return children;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export default function AppRoutes() {
|
|||
|
|
return (
|
|||
|
|
<Routes>
|
|||
|
|
<Route path="/login" element={<Login />} />
|
|||
|
|
<Route
|
|||
|
|
path="/"
|
|||
|
|
element={
|
|||
|
|
<RequireAuth>
|
|||
|
|
<AppLayout />
|
|||
|
|
</RequireAuth>
|
|||
|
|
}
|
|||
|
|
>
|
|||
|
|
{menuRoutes.map((route) => (
|
|||
|
|
<Route key={route.path} index={route.path === "/"} path={route.path === "/" ? undefined : route.path.slice(1)} element={route.element} />
|
|||
|
|
))}
|
|||
|
|
</Route>
|
|||
|
|
<Route path="*" element={<Navigate to="/" replace />} />
|
|||
|
|
</Routes>
|
|||
|
|
);
|
|||
|
|
}
|