- Auth pages: login (password + magic link), register (with firm name), callback - Supabase client setup: browser client, server client, middleware for session refresh - App layout: sidebar (Dashboard, Akten, Fristen, Termine, AI Analyse, Einstellungen), header with user info and tenant switcher - Shared: API client with auth headers, TypeScript types matching Go models, QueryClientProvider + Toaster providers - Dependencies: @supabase/supabase-js, @supabase/ssr, @tanstack/react-query, lucide-react, date-fns, sonner
26 lines
643 B
TypeScript
26 lines
643 B
TypeScript
"use client";
|
|
|
|
import { createClient } from "@/lib/supabase/client";
|
|
import { useRouter } from "next/navigation";
|
|
import { useEffect } from "react";
|
|
|
|
export default function CallbackPage() {
|
|
const router = useRouter();
|
|
const supabase = createClient();
|
|
|
|
useEffect(() => {
|
|
supabase.auth.onAuthStateChange((event) => {
|
|
if (event === "SIGNED_IN") {
|
|
router.push("/");
|
|
router.refresh();
|
|
}
|
|
});
|
|
}, [router, supabase.auth]);
|
|
|
|
return (
|
|
<div className="flex min-h-screen items-center justify-center bg-neutral-50">
|
|
<p className="text-sm text-neutral-500">Authentifizierung...</p>
|
|
</div>
|
|
);
|
|
}
|