imeeting/frontend/src/routes/index.tsx

35 lines
966 B
TypeScript
Raw Normal View History

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>
);
}