"use client"; import { SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar"; import { AdminSidebar } from "@/components/admin/AdminSidebar"; import { useAuth } from "@/contexts/AuthContext"; import { useLanguage } from "@/contexts/LanguageContext"; import { getToken } from "@/lib/api"; import { usePathname, useRouter } from "next/navigation"; import { useEffect } from "react"; import LanguageSwitcher from "@/components/LanguageSwitcher"; export default function AdminLayout({ children }: { children: React.ReactNode }) { const { isAdmin, isLoading } = useAuth(); const { t } = useLanguage(); const router = useRouter(); const pathname = usePathname(); const isLoginRoute = pathname === "/admin/login"; const hasToken = typeof window !== "undefined" && !!getToken(); useEffect(() => { if (!isLoading && !isAdmin && !isLoginRoute) { router.push("/admin/login"); } }, [isAdmin, isLoading, isLoginRoute, router]); if (isLoginRoute) { return (
{children}
); } // Still loading auth state, or token exists but isAdmin not yet committed (post-login race) if (isLoading || (!isAdmin && hasToken)) { return (
{t("admin.loading")}
); } if (!isAdmin) { return null; } // Layout pour l'admin connecté (avec la sidebar) return (

{t("admin.header")}

{children}
); }