"use client" import { useState, useEffect, useRef } from 'react' import { useAdminAuth } from '@/hooks/useAdminAuth' import { AdminLogin } from './admin-login' interface AdminGuardProps { children: React.ReactNode fallback?: React.ReactNode } export function AdminGuard({ children, fallback }: AdminGuardProps) { const { isAuthenticated, isLoading, checkAuth, admin } = useAdminAuth() const [isChecking, setIsChecking] = useState(true) const initRef = useRef(false) // Защита от повторных инициализаций useEffect(() => { const initAuth = async () => { if (initRef.current) { console.log('AdminGuard - Already initialized, skipping') return } initRef.current = true console.log('AdminGuard - Initializing admin auth check') await checkAuth() setIsChecking(false) console.log('AdminGuard - Admin auth check completed, authenticated:', isAuthenticated, 'admin:', !!admin) } initAuth() }, [checkAuth, isAuthenticated, admin]) // Дополнительное логирование состояний useEffect(() => { console.log('AdminGuard - State update:', { isChecking, isLoading, isAuthenticated, hasAdmin: !!admin }) }, [isChecking, isLoading, isAuthenticated, admin]) // Показываем лоадер пока проверяем авторизацию if (isChecking || isLoading) { return (

Проверяем авторизацию администратора...

) } // Если не авторизован, показываем форму авторизации if (!isAuthenticated) { console.log('AdminGuard - Admin not authenticated, showing admin login') return fallback || } // Если авторизован, показываем защищенный контент console.log('AdminGuard - Admin authenticated, showing admin panel') return <>{children} }