'use client' import { useEffect, useState } from 'react' import { useRouter } from 'next/navigation' export function withAdminAuth(WrappedComponent: React.ComponentType) { return function AdminProtectedComponent(props: T) { const [isLoading, setIsLoading] = useState(true) const [isAuthorized, setIsAuthorized] = useState(false) const router = useRouter() useEffect(() => { const checkAuth = () => { const token = localStorage.getItem('token') const user = localStorage.getItem('user') if (!token || !user) { router.push('/login') return } try { const userData = JSON.parse(user) if (!userData.isAdmin) { router.push('/') return } setIsAuthorized(true) } catch (error) { router.push('/login') return } finally { setIsLoading(false) } } checkAuth() }, [router]) if (isLoading) { return (
) } if (!isAuthorized) { return null } return } }