diff --git a/src/app/signup/page.tsx b/src/app/signup/page.tsx index b673698..8af6dde 100644 --- a/src/app/signup/page.tsx +++ b/src/app/signup/page.tsx @@ -35,6 +35,23 @@ export default function SignupPage() { useEffect(() => { async function checkInvite() { const supabase = createClient(); + + // Le lien d'invitation Supabase redirige avec les tokens dans le + // FRAGMENT d'URL (#access_token=...&refresh_token=...), jamais reçu + // par un serveur (le navigateur ne l'envoie jamais en HTTP) et pas + // auto-détecté par ce client (@supabase/ssr est orienté sessions par + // cookies) : on l'établit donc explicitement à la main, une fois. + const hash = window.location.hash; + if (hash.includes("access_token")) { + const params = new URLSearchParams(hash.slice(1)); + const access_token = params.get("access_token"); + const refresh_token = params.get("refresh_token"); + if (access_token && refresh_token) { + await supabase.auth.setSession({ access_token, refresh_token }); + } + window.history.replaceState(null, "", window.location.pathname); + } + const { data: { user }, } = await supabase.auth.getUser();