diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index b57fc41..e7dbd9d 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -10,7 +10,7 @@ import ResetPasswordPage from './pages/ResetPasswordPage'; import DashboardPage from './pages/DashboardPage'; import EventsPage from './pages/EventsPage'; import EventChatPage from './pages/EventChatPage'; -import EventDetailsPage from './pages/EventDetailsPage'; +import EventDetailsPage from './pages/admin/EventDetailsPage'; import EventCheckinPage from './pages/EventCheckinPage'; import MatchChatPage from './pages/MatchChatPage'; import MatchesPage from './pages/MatchesPage'; @@ -144,7 +144,7 @@ function App() { } /> diff --git a/frontend/src/components/events/EventCard.jsx b/frontend/src/components/events/EventCard.jsx index c022685..82e6d36 100644 --- a/frontend/src/components/events/EventCard.jsx +++ b/frontend/src/components/events/EventCard.jsx @@ -13,7 +13,7 @@ const EventCard = ({ event, delay = 0, isNew = false, showCheckin = false }) => const navigate = useNavigate(); const handleJoinEvent = () => navigate(`/events/${event.slug}/chat`); - const handleViewDetails = () => navigate(`/events/${event.slug}/details`); + const handleViewDetails = () => navigate(`/admin/events/${event.slug}/details`); return (
{ {import.meta.env.DEV && ( - View QR Code (dev) + View QR Code (admin) )}
diff --git a/frontend/src/pages/EventsPage.jsx b/frontend/src/pages/EventsPage.jsx index d96dc94..e21dc5f 100644 --- a/frontend/src/pages/EventsPage.jsx +++ b/frontend/src/pages/EventsPage.jsx @@ -180,10 +180,10 @@ const EventsPage = () => { {/* Development mode: Show details link */} {import.meta.env.DEV && ( )} diff --git a/frontend/src/pages/EventDetailsPage.jsx b/frontend/src/pages/admin/EventDetailsPage.jsx similarity index 80% rename from frontend/src/pages/EventDetailsPage.jsx rename to frontend/src/pages/admin/EventDetailsPage.jsx index 18257cd..f15422f 100644 --- a/frontend/src/pages/EventDetailsPage.jsx +++ b/frontend/src/pages/admin/EventDetailsPage.jsx @@ -1,23 +1,42 @@ import { useState, useEffect } from 'react'; -import { useParams, Link } from 'react-router-dom'; +import { useParams, Link, useNavigate } from 'react-router-dom'; import { Calendar, MapPin } from 'lucide-react'; -import Layout from '../components/layout/Layout'; -import { eventsAPI } from '../services/api'; -import QRCodeSection from '../components/events/QRCodeSection'; -import ParticipantsSection from '../components/events/ParticipantsSection'; -import MatchingConfigSection from '../components/events/MatchingConfigSection'; -import ScheduleConfigSection from '../components/events/ScheduleConfigSection'; -import MatchingRunsSection from '../components/events/MatchingRunsSection'; +import Layout from '../../components/layout/Layout'; +import { eventsAPI } from '../../services/api'; +import QRCodeSection from '../../components/events/QRCodeSection'; +import ParticipantsSection from '../../components/events/ParticipantsSection'; +import MatchingConfigSection from '../../components/events/MatchingConfigSection'; +import ScheduleConfigSection from '../../components/events/ScheduleConfigSection'; +import MatchingRunsSection from '../../components/events/MatchingRunsSection'; export default function EventDetailsPage() { const { slug } = useParams(); + const navigate = useNavigate(); + const [user, setUser] = useState(null); const [eventDetails, setEventDetails] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); + // Check if user is admin useEffect(() => { - fetchEventDetails(); - }, [slug]); + const userData = localStorage.getItem('user'); + if (userData) { + const parsedUser = JSON.parse(userData); + setUser(parsedUser); + + if (!parsedUser.isAdmin) { + navigate('/'); + } + } else { + navigate('/login'); + } + }, [navigate]); + + useEffect(() => { + if (user?.isAdmin) { + fetchEventDetails(); + } + }, [slug, user]); const fetchEventDetails = async () => { try {