65 lines
2.2 KiB
TypeScript
65 lines
2.2 KiB
TypeScript
/**
|
|
* Router configuration
|
|
*/
|
|
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';
|
|
import { Login } from './pages/Login';
|
|
import { AdminLayout } from './pages/admin/AdminLayout';
|
|
import { Dashboard } from './pages/admin/Dashboard';
|
|
import { CelestialBodies } from './pages/admin/CelestialBodies';
|
|
import { StarSystems } from './pages/admin/StarSystems';
|
|
import { StaticData } from './pages/admin/StaticData';
|
|
import { Users } from './pages/admin/Users';
|
|
import { NASADownload } from './pages/admin/NASADownload';
|
|
import { SystemSettings } from './pages/admin/SystemSettings';
|
|
import { Tasks } from './pages/admin/Tasks';
|
|
import { auth } from './utils/auth';
|
|
import { ToastProvider } from './contexts/ToastContext';
|
|
import App from './App';
|
|
|
|
// Protected Route wrapper
|
|
function ProtectedRoute({ children }: { children: React.ReactNode }) {
|
|
if (!auth.isLoggedIn()) {
|
|
return <Navigate to="/login" replace />;
|
|
}
|
|
return <>{children}</>;
|
|
}
|
|
|
|
export function Router() {
|
|
return (
|
|
<ToastProvider>
|
|
<BrowserRouter>
|
|
<Routes>
|
|
{/* Public routes */}
|
|
<Route path="/login" element={<Login />} />
|
|
|
|
{/* Main app (3D visualization) */}
|
|
<Route path="/" element={<App />} />
|
|
|
|
{/* Admin routes (protected) */}
|
|
<Route
|
|
path="/admin"
|
|
element={
|
|
<ProtectedRoute>
|
|
<AdminLayout />
|
|
</ProtectedRoute>
|
|
}
|
|
>
|
|
<Route index element={<Navigate to="/admin/dashboard" replace />} />
|
|
<Route path="dashboard" element={<Dashboard />} />
|
|
<Route path="celestial-bodies" element={<CelestialBodies />} />
|
|
<Route path="star-systems" element={<StarSystems />} />
|
|
<Route path="static-data" element={<StaticData />} />
|
|
<Route path="users" element={<Users />} />
|
|
<Route path="nasa-data" element={<NASADownload />} />
|
|
<Route path="tasks" element={<Tasks />} />
|
|
<Route path="settings" element={<SystemSettings />} />
|
|
</Route>
|
|
|
|
{/* Fallback */}
|
|
<Route path="*" element={<Navigate to="/" replace />} />
|
|
</Routes>
|
|
</BrowserRouter>
|
|
</ToastProvider>
|
|
);
|
|
}
|