// lib/auth.ts 'use server'; import { getServerSession } from 'next-auth'; import { authOptions } from './auth-options'; import { prisma } from './prisma'; type SessionUser = { id?: string; email?: string | null; name?: string | null; }; export async function getCurrentUserId(): Promise { const session = await getServerSession(authOptions); const user = session?.user as SessionUser | undefined; // 1) ID direkt aus dem Token if (user?.id) { return user.id; } // 2) Fallback über E-Mail aus der Session if (user?.email) { const dbUser = await prisma.user.findUnique({ where: { email: user.email }, select: { id: true }, }); if (dbUser) return dbUser.id; } // 3) keine Session -> kein User return null; } export async function getCurrentUser() { const id = await getCurrentUserId(); if (!id) return null; return prisma.user.findUnique({ where: { id }, include: { roles: { include: { role: true, }, }, }, }); }