95 lines
2.2 KiB
TypeScript
95 lines
2.2 KiB
TypeScript
import React from 'react';
|
|
import { Routes, Route, Navigate } from 'react-router-dom';
|
|
import Login from './pages/LoginPage';
|
|
import Signup from './pages/SignupPage';
|
|
import Home from './Home';
|
|
import SettingsPage from './pages/SettingsPage';
|
|
import AdminDashboard from './pages/AdminDashboard';
|
|
import AnalyticsPage from './pages/AnalyticsPage';
|
|
import ConfigPage from './pages/ConfigPage';
|
|
import PricingPage from './pages/PricingPage';
|
|
import XRayPage from './pages/XRayPage';
|
|
import ScorecardPage from './pages/ScorecardPage';
|
|
import { useAuth } from './AuthContext';
|
|
|
|
const ProtectedRoute = ({ children }: { children: React.ReactNode }) => {
|
|
const { isAuthenticated } = useAuth();
|
|
if (!isAuthenticated) return <Navigate to="/login" />;
|
|
return children;
|
|
};
|
|
|
|
const App: React.FC = () => {
|
|
return (
|
|
<Routes>
|
|
<Route path="/login" element={<Login />} />
|
|
<Route path="/signup" element={<Signup />} />
|
|
<Route
|
|
path="/"
|
|
element={
|
|
<ProtectedRoute>
|
|
<Home />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/settings"
|
|
element={
|
|
<ProtectedRoute>
|
|
<SettingsPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/admin"
|
|
element={
|
|
<ProtectedRoute>
|
|
<AdminDashboard />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/admin/analytics"
|
|
element={
|
|
<ProtectedRoute>
|
|
<AnalyticsPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/admin/config"
|
|
element={
|
|
<ProtectedRoute>
|
|
<ConfigPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/pricing"
|
|
element={
|
|
<ProtectedRoute>
|
|
<PricingPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/xray"
|
|
element={
|
|
<ProtectedRoute>
|
|
<XRayPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/scorecard"
|
|
element={
|
|
<ProtectedRoute>
|
|
<ScorecardPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
</Routes>
|
|
);
|
|
};
|
|
|
|
export default App;
|