Initial commit: Club DynaSQY
This commit is contained in:
@@ -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>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user