"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { CheckCircle2, XCircle } from "lucide-react"; import Link from "next/link"; import { supabase } from "@/lib/supabase"; export default function AuthCallbackPage() { const router = useRouter(); const [status, setStatus] = useState<"loading" | "success" | "error">("loading"); useEffect(() => { // Supabase JS verarbeitet automatisch den ?code= oder #access_token= aus der URL // und etabliert die Session (detectSessionInUrl ist standardmäßig aktiviert). // Wir warten kurz und prüfen dann die Session. const { data: { subscription } } = supabase.auth.onAuthStateChange((event, session) => { if (event === "SIGNED_IN" && session) { setStatus("success"); setTimeout(() => router.replace("/kunden/dashboard"), 1500); } else if (event === "TOKEN_REFRESHED" && session) { setStatus("success"); setTimeout(() => router.replace("/kunden/dashboard"), 1500); } }); // Fallback: Session direkt prüfen (falls onAuthStateChange zu spät feuert) supabase.auth.getSession().then(({ data: { session } }) => { if (session) { setStatus("success"); setTimeout(() => router.replace("/kunden/dashboard"), 1500); } else { // Noch kurz warten, Supabase braucht manchmal einen Moment setTimeout(() => { supabase.auth.getSession().then(({ data: { session: s } }) => { if (s) { setStatus("success"); setTimeout(() => router.replace("/kunden/dashboard"), 1500); } else { setStatus("error"); } }); }, 2000); } }); return () => subscription.unsubscribe(); }, [router]); if (status === "loading") { return (

E-Mail-Adresse wird bestätigt…

); } if (status === "success") { return (

E-Mail bestätigt!

Sie werden automatisch weitergeleitet…

); } return (

Bestätigung fehlgeschlagen

Der Bestätigungslink ist abgelaufen oder ungültig. Bitte registrieren Sie sich erneut.

Zur Registrierung
); }