'use client'; import { useRouter } from 'next/navigation'; import { useEffect } from 'react'; import { useSession } from '@/lib/auth-client'; interface AdminRoleGuardProps { children: React.ReactNode; } export function AdminRoleGuard({ children }: AdminRoleGuardProps): React.ReactElement | null { const { data: session, isPending } = useSession(); const router = useRouter(); const user = session?.user as | (NonNullable['user'] & { role?: string }) | undefined; useEffect(() => { if (!isPending && !session) { router.replace('/login'); } else if (!isPending && session && user?.role !== 'admin') { router.replace('/'); } }, [isPending, session, user?.role, router]); if (isPending) { return (
Loading...
); } if (!session || user?.role !== 'admin') { return null; } return <>{children}; }