import "server-only"; import { createClient } from "@/lib/supabase/server"; // Der einzige Ort, an dem die Kennung der angemeldeten Person herkommt. // // Heute liefert sie GoTrue, morgen Auth.js mit Entra ID. Weil alles andere // nur noch `currentUserId()` aufruft und den Wert an withUser() weiterreicht, // ist der Wechsel des Anmeldeverfahrens eine Änderung an dieser Datei — nicht // an fünfzig Aufrufstellen. // // Dass das aufgeht, liegt an einer Eigenschaft des Übergangs: profiles.id ist // heute die auth.users.id. Die Kennung, die hier herauskommt, passt also // bereits auf das, was app_current_user_id() in der Datenbank erwartet. export async function currentUserId(): Promise { const supabase = await createClient(); const { data: { user }, } = await supabase.auth.getUser(); return user?.id ?? null; } /** * Wie currentUserId(), bricht aber ab, statt null zu liefern. * * Für Stellen, die ohne angemeldete Person keinen Sinn ergeben. Die * Absicherung hängt trotzdem nicht daran: ohne Kontext geben die * RLS-Policies nichts zurück, unabhängig davon, was der Anwendungscode tut. */ export async function requireUserId(): Promise { const id = await currentUserId(); if (!id) throw new Error("Nicht angemeldet."); return id; }