'use client'; import AdminSidebar from '@/components/layout/AdminSidebar'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { Loader2, ShieldOff } from 'lucide-react'; import { useCurrentLocale, useI18n } from '@/locales/client'; import { Button } from '@/components/ui/button'; import Link from 'next/link'; const ADMIN_EMAIL = 'user@example.com'; // Or 'admin@example.com' if you updated login export default function AdminLayout({ children, }: { children: React.ReactNode; }) { const router = useRouter(); const locale = useCurrentLocale(); const t = useI18n(); const [isAuthenticating, setIsAuthenticating] = useState(true); const [isAuthorized, setIsAuthorized] = useState(false); useEffect(() => { const isAuthenticated = localStorage.getItem('isToyShareAuthenticated') === 'true'; const userEmail = localStorage.getItem('userEmail'); if (!isAuthenticated) { router.replace(`/${locale}/login?redirect=/${locale}/admin`); } else if (userEmail !== ADMIN_EMAIL && userEmail !== 'admin@example.com') { // Allow both for flexibility setIsAuthorized(false); setIsAuthenticating(false); } else { setIsAuthorized(true); setIsAuthenticating(false); } }, [router, locale]); if (isAuthenticating) { return (

{t('admin.layout.loading')}

); } if (!isAuthorized) { return (

{t('admin.layout.unauthorized_title')}

{t('admin.layout.unauthorized_description')}

); } return (
{/* Assuming header height is 4rem */}
{children}
); }