90 lines
3.2 KiB
TypeScript
90 lines
3.2 KiB
TypeScript
import { Routes, Route, Navigate } from "react-router-dom";
|
|
import LoginPage from "./pages/LoginPage";
|
|
import DashboardPage from "./pages/DashboardPage";
|
|
import TechniquesPage from "./pages/TechniquesPage";
|
|
import MatrixPage from "./pages/MatrixPage";
|
|
import TechniqueDetailPage from "./pages/TechniqueDetailPage";
|
|
import TestsPage from "./pages/TestsPage";
|
|
import TestCreatePage from "./pages/TestCreatePage";
|
|
import TestDetailPage from "./pages/TestDetailPage";
|
|
import TestCatalogPage from "./pages/TestCatalogPage";
|
|
import ReportsPage from "./pages/ReportsPage";
|
|
import SystemPage from "./pages/SystemPage";
|
|
import UsersPage from "./pages/UsersPage";
|
|
import AuditLogPage from "./pages/AuditLogPage";
|
|
import DataSourcesPage from "./pages/DataSourcesPage";
|
|
import ThreatActorsPage from "./pages/ThreatActorsPage";
|
|
import ThreatActorDetailPage from "./pages/ThreatActorDetailPage";
|
|
import CampaignsPage from "./pages/CampaignsPage";
|
|
import CampaignDetailPage from "./pages/CampaignDetailPage";
|
|
import Layout from "./components/Layout";
|
|
import ProtectedRoute from "./components/ProtectedRoute";
|
|
|
|
export default function App() {
|
|
return (
|
|
<Routes>
|
|
{/* Public */}
|
|
<Route path="/login" element={<LoginPage />} />
|
|
|
|
{/* Protected — wrapped in shared Layout */}
|
|
<Route
|
|
element={
|
|
<ProtectedRoute>
|
|
<Layout />
|
|
</ProtectedRoute>
|
|
}
|
|
>
|
|
<Route path="/dashboard" element={<DashboardPage />} />
|
|
<Route path="/techniques" element={<TechniquesPage />} />
|
|
<Route path="/matrix" element={<MatrixPage />} />
|
|
<Route path="/techniques/:mitreId" element={<TechniqueDetailPage />} />
|
|
<Route path="/tests" element={<TestsPage />} />
|
|
<Route path="/tests/new" element={<TestCreatePage />} />
|
|
<Route path="/tests/:testId" element={<TestDetailPage />} />
|
|
<Route path="/test-catalog" element={<TestCatalogPage />} />
|
|
<Route path="/test-catalog/:templateId/use" element={<TestCatalogPage />} />
|
|
<Route path="/reports" element={<ReportsPage />} />
|
|
<Route path="/threat-actors" element={<ThreatActorsPage />} />
|
|
<Route path="/threat-actors/:actorId" element={<ThreatActorDetailPage />} />
|
|
<Route path="/campaigns" element={<CampaignsPage />} />
|
|
<Route path="/campaigns/:campaignId" element={<CampaignDetailPage />} />
|
|
<Route
|
|
path="/system"
|
|
element={
|
|
<ProtectedRoute roles={["admin"]}>
|
|
<SystemPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/users"
|
|
element={
|
|
<ProtectedRoute roles={["admin"]}>
|
|
<UsersPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/audit"
|
|
element={
|
|
<ProtectedRoute roles={["admin"]}>
|
|
<AuditLogPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/data-sources"
|
|
element={
|
|
<ProtectedRoute roles={["admin"]}>
|
|
<DataSourcesPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
</Route>
|
|
|
|
{/* Catch-all → dashboard */}
|
|
<Route path="*" element={<Navigate to="/dashboard" replace />} />
|
|
</Routes>
|
|
);
|
|
}
|