Revert "Merge pull request 'Refact/cleanup' (#3) from refact/cleanup into master"
Deploy Aegis Portal / build-and-deploy (push) Successful in 15s

This reverts commit 679e73f3af, reversing
changes made to 438d739b1a.
This commit is contained in:
LathanDevers
2026-08-03 13:06:38 +02:00
parent 679e73f3af
commit fcf34328ee
84 changed files with 5186 additions and 5336 deletions
+30 -56
View File
@@ -1,72 +1,46 @@
import { useState } from 'react';
import { Routes, Route, Navigate, useNavigate } from 'react-router-dom';
import { pb } from '@/services/pocketbase';
// Layout & Pages
import Login from '@/pages/Login';
import DashboardLayout from '@/layouts/DashboardLayout';
import TrustCenter from '@/pages/TrustCenter';
import ServiceDesk from '@/pages/ServiceDesk';
import DocumentVault from '@/pages/DocumentVault';
import AccountSettings from '@/pages/AccountSettings';
import { InfrastructureEvolution } from '@/pages/trustcenter/InfrastructureEvolution';
import Analytics from '@/pages/trustcenter/Analytics';
import Backups from '@/pages/trustcenter/Backups';
import NewTicket from '@/pages/servicedesk/NewTicket';
import TicketDetail from '@/pages/servicedesk/TicketDetail';
import { pb } from './config/pocketbase';
import Login from './pages/Auth/Login';
import DashboardLayout from './layouts/DashboardLayout';
import TrustCenter from './pages/TrustCenter/TrustCenter';
import ServiceDesk from './pages/Support/ServiceDesk';
import DocumentVault from './pages/Vault/DocumentVault';
import AccountSettings from './pages/Account/AccountSettings';
function App() {
// On initialise l'état avec la présence du token, mais on ne met plus
// d'écouteur automatique. C'est le composant Login qui gérera le flux.
const [isAuthenticated, setIsAuthenticated] = useState(pb.authStore.isValid);
const navigate = useNavigate();
const [activeView, setActiveView] = useState<'dashboard' | 'support' | 'vault' | 'account'>('dashboard');
const handleLogout = () => {
pb.authStore.clear();
pb.authStore.clear(); // Détruit le jeton de sécurité
setIsAuthenticated(false);
navigate('/', { replace: true });
};
// --- SAS DE SÉCURITÉ (Auth Guard) ---
// Si non authentifié, on force l'affichage du composant Login peu importe l'URL demandée.
// Tant que l'utilisateur n'est pas totalement authentifié (MFA inclus),
// on le maintient dans le sas de sécurité.
if (!isAuthenticated) {
return (
<Routes>
<Route
path="*"
element={
<Login onLoginSuccess={() => {
setIsAuthenticated(true);
navigate('/dashboard', { replace: true });
}} />
}
/>
</Routes>
);
return <Login onLoginSuccess={() => setIsAuthenticated(true)} />;
}
// --- APPLICATION SÉCURISÉE ---
// Une fois connecté, le DashboardLayout enveloppe nos véritables routes (URLs)
const renderContent = () => {
switch (activeView) {
case 'dashboard': return <TrustCenter onNavigate={setActiveView} />;
case 'support': return <ServiceDesk />;
case 'vault': return <DocumentVault />;
case 'account': return <AccountSettings />;
default: return <TrustCenter onNavigate={setActiveView} />;
}
};
return (
<DashboardLayout onLogout={handleLogout}>
<Routes>
{/* Redirection par défaut */}
<Route path="/" element={<Navigate to="/dashboard" replace />} />
{/* Pages du menu principal */}
<Route path="/dashboard" element={<TrustCenter />} />
<Route path="/support" element={<ServiceDesk />} />
<Route path="/vault" element={<DocumentVault />} />
<Route path="/account" element={<AccountSettings />} />
{/* Pages stratégiques (anciennes modales) */}
<Route path="/evolution-infrastructure" element={<InfrastructureEvolution />} />
<Route path="/analytics" element={<Analytics />} />
<Route path="/backups" element={<Backups />} />
<Route path="/support/new" element={<NewTicket />} />
<Route path="/support/tickets/:ticketId" element={<TicketDetail />} />
{/* Sécurité : Si l'URL n'existe pas, on redirige vers le dashboard */}
<Route path="*" element={<Navigate to="/dashboard" replace />} />
</Routes>
<DashboardLayout
activeView={activeView}
onNavigate={setActiveView}
onLogout={handleLogout}
>
{renderContent()}
</DashboardLayout>
);
}