"use client" import Link from "next/link" import { useAuthStore } from "@/lib/api/auth-store" import { useAuthReady } from "@/lib/api/use-auth-ready" import { useCurrentUser } from "@/lib/api/hooks/use-current-user" import { adminScopesFromToken, isPlatformAdminFromToken } from "@/lib/auth/admin" import { Button } from "@/components/ui/button" export function AdminAccessGuard({ children }: { children: React.ReactNode }) { const { ready, authenticated } = useAuthReady() const token = useAuthStore((s) => s.accessToken) const { data: me, isFetching: meLoading } = useCurrentUser() if (!ready) { return (

Chargement de la session…

) } if (!authenticated) { return (

Connectez-vous avec un compte administrateur pour accéder à cette interface.

) } if (meLoading && !me) { return (

Vérification des droits administrateur…

) } const scopes = adminScopesFromToken(token) const isAdmin = isPlatformAdminFromToken(token) || scopes.read || me?.platform_admin === true if (!isAdmin) { return (

Accès refusé. Votre compte ne dispose pas des droits d'administration.

) } return <>{children} }