import type { AuthUser, PermissionKey } from "@mrp/shared"; import { prisma } from "./prisma.js"; export async function getCurrentUserById(userId: string): Promise { const user = await prisma.user.findUnique({ where: { id: userId }, include: { userRoles: { include: { role: { include: { rolePermissions: { include: { permission: true, }, }, }, }, }, }, }, }); if (!user) { return null; } const permissionKeys = new Set(); const roleNames = user.userRoles.map(({ role }) => { for (const rolePermission of role.rolePermissions) { permissionKeys.add(rolePermission.permission.key as PermissionKey); } return role.name; }); return { id: user.id, email: user.email, firstName: user.firstName, lastName: user.lastName, roles: roleNames, permissions: [...permissionKeys], }; }