[dyad] wrote 3 file(s)

This commit is contained in:
Michael committed 2025-11-06 15:43:47 +01:00
1 parent 93b2d8af24
commit a24f107f0a
3 files changed
+271 -46

No files matched your search

+75 -27
View File
@@ -1,27 +1,75 @@
import { Toaster } from "@/components/ui/toaster";
import { Toaster as Sonner } from "@/components/ui/sonner";
import { TooltipProvider } from "@/components/ui/tooltip";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Index from "./pages/Index";
import NotFound from "./pages/NotFound";
const queryClient = new QueryClient();
const App = () => (
<QueryClientProvider client={queryClient}>
<TooltipProvider>
<Toaster />
<Sonner />
<BrowserRouter>
<Routes>
<Route path="/" element={<Index />} />
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
<Route path="*" element={<NotFound />} />
</Routes>
</BrowserRouter>
</TooltipProvider>
</QueryClientProvider>
);
export default App;
import { Toaster } from "@/components/ui/toaster";
import { Toaster as Sonner } from "@/components/ui/sonner";
import { TooltipProvider } from "@/components/ui/tooltip";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
import { useEffect, useState } from "react";
import Index from "./pages/Index";
import Login from "./pages/Login";
import NotFound from "./pages/NotFound";
const queryClient = new QueryClient();
// Protected Route Component
const ProtectedRoute = ({ children }: { children: React.ReactNode }) => {
const token = localStorage.getItem("token");
if (!token) {
return <Navigate to="/login" replace />;
}
return <>{children}</>;
};
const App = () => {
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
// Vérifier le token au démarrage
const token = localStorage.getItem("token");
if (token) {
// Optionnel: Vérifier la validité du token avec le serveur
fetch("/api/auth/me", {
headers: {
Authorization: `Bearer ${token}`,
},
})
.catch(() => {
localStorage.removeItem("token");
localStorage.removeItem("user");
})
.finally(() => {
setIsLoading(false);
});
} else {
setIsLoading(false);
}
}, []);
if (isLoading) {
return <div>Chargement...</div>;
}
return (
<QueryClientProvider client={queryClient}>
<TooltipProvider>
<Toaster />
<Sonner />
<BrowserRouter>
<Routes>
<Route path="/login" element={<Login />} />
<Route
path="/"
element={
<ProtectedRoute>
<Index />
</ProtectedRoute>
}
/>
<Route path="*" element={<NotFound />} />
</Routes>
</BrowserRouter>
</TooltipProvider>
</QueryClientProvider>
);
};
export default App;