import "server-only"; import { auth } from "@/auth"; // Der einzige Ort, an dem die Kennung der angemeldeten Person herkommt. // // Dass der Wechsel von GoTrue auf Auth.js eine Änderung an dieser Datei war // und nicht an fünfzig Aufrufstellen, lag genau an dieser Bündelung: alles // andere ruft `currentUserId()` auf und reicht den Wert an withUser() weiter. // // Der Wert ist app_users.id — nicht die `oid` von Entra. Die Zuordnung // zwischen beiden macht app_upsert_user() bei der Anmeldung, und sie // übernimmt für eine bereits bekannte Adresse die vorhandene profiles.id. // Deshalb passt die Kennung weiterhin auf das, was app_current_user_id() in // der Datenbank erwartet, und die 58 RLS-Policies merken vom Wechsel nichts. export async function currentUserId(): Promise { const session = await auth(); return session?.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; }