import { useEffect, useState } from 'react'; import { useRouter } from 'next/router'; import Layout from './Layout'; export default function AdminProtected({ children }) { const router = useRouter(); const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); const [accessDenied, setAccessDenied] = useState(false); useEffect(() => { checkAdminAccess(); }, []); const checkAdminAccess = async () => { try { const response = await fetch('/api/auth/verify'); if (response.ok) { const userData = await response.json(); if (userData.role === 'admin') { setUser(userData); setAccessDenied(false); } else { setAccessDenied(true); } } else { setAccessDenied(true); } } catch (error) { console.error('Admin auth check failed:', error); setAccessDenied(true); } finally { setLoading(false); } }; if (loading) { return ( Checking admin access... ); } if (accessDenied) { return ( 🚫 Access Denied You need administrator privileges to access this page. router.push('/login')} className="px-6 py-3 rounded-xl font-medium gradient-bg-purple text-white hover:shadow-lg transition-all duration-200" > Login as Admin router.push('/')} className="px-6 py-3 rounded-xl font-medium border transition-all duration-200" style={{ borderColor: 'var(--border)', color: 'var(--text-primary)' }} > Go Home ); } return children; }
Checking admin access...
You need administrator privileges to access this page.