Files
GTFRH/GTFRRH/project/src/App.tsx

71 lines
2.0 KiB
TypeScript

import React from 'react';
import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
import { AuthProvider, useAuth } from './context/AuthContext';
import Login from './components/Login';
import RHDashboard from './components/RHDashboard';
// Composant pour protéger les routes
const ProtectedRoute = ({ children }) => {
const { isAuthorized } = useAuth();
return isAuthorized ? children : <Navigate to="/login" replace />;
};
// Composant pour rediriger si déjà connecté
const PublicRoute = ({ children }) => {
const { isAuthorized } = useAuth();
return !isAuthorized ? children : <Navigate to="/dashboard" replace />;
};
function AppContent() {
return (
<div className="min-h-screen bg-gray-50">
<Routes>
{/* Route de login - accessible seulement si non connecté */}
<Route
path="/login"
element={
<PublicRoute>
<Login />
</PublicRoute>
}
/>
{/* Route du dashboard - accessible seulement si connecté */}
<Route
path="/dashboard"
element={
<ProtectedRoute>
<RHDashboard />
</ProtectedRoute>
}
/>
{/* Route par défaut - redirige vers login ou dashboard selon l'état */}
<Route
path="/"
element={<Navigate to="/login" replace />}
/>
{/* Route catch-all pour les URLs non trouvées */}
<Route
path="*"
element={<Navigate to="/login" replace />}
/>
</Routes>
</div>
);
}
function App() {
return (
<AuthProvider>
<Router>
<AppContent />
</Router>
</AuthProvider>
);
}
export default App;