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