Initial commit: Club DynaSQY

This commit is contained in:
2026-08-23 09:04:47 +00:00
commit 0875890dc7
145 changed files with 16947 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
import AddMember from './components/AddMember'
import { Routes, Route, Navigate } from 'react-router-dom'
import { useAuth } from './context/AuthContext'
import Login from './components/Login'
import Dashboard from './components/Dashboard'
import MembersList from './components/MembersList'
import MemberDetail from './components/MemberDetail'
import EditProfile from './components/EditProfile'
import GuestsList from './components/GuestsList'
import GuestDetail from './components/GuestDetail'
import AddGuestForm from './components/AddGuestForm'
import EditGuestForm from './components/EditGuestForm'
import RecommendationsList from './components/RecommendationsList'
import AddRecommendationForm from './components/AddRecommendationForm'
import EditRecommendationForm from './components/EditRecommendationForm'
import HonorsList from './components/HonorsList'
import Gallery from './components/Gallery'
import AdminHonors from './components/AdminHonors'
import AdminEvents from './components/AdminEvents'
import AdminUsers from './components/AdminUsers'
import AdminLogs from './components/AdminLogs'
import AdminPresentationEditor from './components/AdminPresentationEditor'
import Profile from './components/Profile'
import ChangePassword from './components/ChangePassword'
import Notifications from './components/Notifications'
import Presentation from './components/Presentation'
import Layout from './components/Layout'
function PrivateRoute({ children }) {
const { user, loading } = useAuth()
if (loading) return <div className="flex items-center justify-center min-h-screen"><p className="text-gray-500">Chargement...</p></div>
return user ? children : <Navigate to="/login" replace />
}
function AdminRoute({ children }) {
const { user, loading } = useAuth()
if (loading) return <div className="flex items-center justify-center min-h-screen"><p className="text-gray-500">Chargement...</p></div>
if (!user) return <Navigate to="/login" replace />
if (user.role !== 'admin') return <Navigate to="/" replace />
return children
}
export default function App() {
return (
<Routes>
<Route path="/login" element={<Login />} />
<Route path="/" element={<PrivateRoute><Layout /></PrivateRoute>}>
<Route index element={<Dashboard />} />
<Route path="members" element={<MembersList />} />
<Route path="members/:id" element={<MemberDetail />} />
<Route path="members/edit/:id" element={<EditProfile />} />
<Route path="guests" element={<GuestsList />} />
<Route path="guests/add" element={<AddGuestForm />} />
<Route path="guests/edit/:id" element={<EditGuestForm />} />
<Route path="guests/:id" element={<GuestDetail />} />
<Route path="recommendations" element={<RecommendationsList />} />
<Route path="recommendations/add" element={<AddRecommendationForm />} />
<Route path="recommendations/edit/:id" element={<EditRecommendationForm />} />
<Route path="honors" element={<HonorsList />} />
<Route path="admin/honors" element={<AdminRoute><AdminHonors /></AdminRoute>} />
<Route path="admin/events" element={<AdminRoute><AdminEvents /></AdminRoute>} />
<Route path="admin/users" element={<AdminRoute><AdminUsers /></AdminRoute>} />
<Route path="admin/logs" element={<AdminRoute><AdminLogs /></AdminRoute>} />
<Route path="admin/presentation-editor" element={<AdminRoute><AdminPresentationEditor /></AdminRoute>} />
<Route path="gallery" element={<Gallery />} />
<Route path="profile" element={<Profile />} />
<Route path="profile/password" element={<ChangePassword />} />
<Route path="notifications" element={<Notifications />} />
<Route path="members/add" element={<AdminRoute><AddMember /></AdminRoute>} />
</Route>
<Route path="*" element={<Navigate to="/" replace />} />
<Route path="/presentation/:date" element={<PrivateRoute><Presentation /></PrivateRoute>} />
</Routes>
)
}