utp_service/frontend/src/App.tsx
2026-04-07 17:14:19 +03:00

41 lines
1.5 KiB
TypeScript

import { Navigate, Route, Routes } from 'react-router-dom'
import { AppLayout } from './components/AppLayout'
import { AdminPage } from './pages/Admin'
import { AlertsPage } from './pages/Alerts'
import { LoginPage } from './pages/Login'
import { ObjectDetailPage } from './pages/ObjectDetail'
import { ObjectsPage } from './pages/Objects'
import { SnapshotsPage } from './pages/Snapshots'
import { TaskDetailPage } from './pages/TaskDetail'
import { TasksPage } from './pages/Tasks'
import { useAuthStore } from './store/auth'
function RequireAuth({ children }: { children: React.ReactNode }) {
const token = useAuthStore((s) => s.accessToken)
return token ? <>{children}</> : <Navigate to="/login" replace />
}
export default function App() {
return (
<Routes>
<Route path="/login" element={<LoginPage />} />
<Route
path="/"
element={
<RequireAuth>
<AppLayout />
</RequireAuth>
}
>
<Route index element={<Navigate to="/objects" replace />} />
<Route path="admin" element={<AdminPage />} />
<Route path="alerts" element={<AlertsPage />} />
<Route path="objects" element={<ObjectsPage />} />
<Route path="objects/:id" element={<ObjectDetailPage />} />
<Route path="objects/:id/snapshots" element={<SnapshotsPage />} />
<Route path="tasks" element={<TasksPage />} />
<Route path="tasks/:id" element={<TaskDetailPage />} />
</Route>
</Routes>
)
}