import { Navigate } from "react-router-dom"; import type { ReactNode } from "react"; import { useAuth } from "../auth/AuthContext"; import { Spinner } from "./ui"; // Пускает дальше при наличии токена ИЛИ анонимной идентичности (школа+класс, // без аккаунта). Используется для страниц, которые школьник может пройти // анонимно: главная, список тестов, прохождение теста. export function ProtectedRoute({ children }: { children: ReactNode }) { const { token, anon, ready } = useAuth(); if (!ready) { return (
); } if (!token && !anon) return ; return <>{children}; } // Строже: пускает дальше только при реальном токене (не анонимной сессии). // Для страниц, которым нужен настоящий аккаунт: история тестов, профиль, // просмотр конкретного результата. export function AccountRoute({ children }: { children: ReactNode }) { const { token, ready } = useAuth(); if (!ready) { return (
); } if (!token) return ; return <>{children}; }