"use client"; import { useSession, signOut } from "next-auth/react"; import { usePathname, useRouter } from "next/navigation"; import { useEffect } from "react"; export function AuthCheck({ children }: { children: React.ReactNode }) { const { data: session, status } = useSession(); const pathname = usePathname(); const router = useRouter(); useEffect(() => { // Handle authentication status changes if (status === "unauthenticated" && !pathname.includes("/signin")) { console.log("User is not authenticated, redirecting to signin page"); router.push("/signin"); } // Handle session errors (like refresh token failures) if (session?.error) { console.log(`Session error detected: ${session.error}, signing out`); // Force a clean sign out signOut({ callbackUrl: `/signin?error=${encodeURIComponent(session.error)}`, redirect: true }); } }, [status, session, router, pathname]); // Show loading state if (status === "loading") { return (
Chargement...