import { Controller, Get, NotFoundException } from '@nestjs/common'; import type { MeResponse, RoleName } from '@siop/shared'; import { AuthenticatedUser, CurrentUser, } from '../auth/current-user.decorator'; import { PermissionsService } from '../permissions/permissions.service'; import { PrismaService } from '../prisma/prisma.service'; @Controller('users') export class UsersController { constructor( private readonly prisma: PrismaService, private readonly permissionsService: PermissionsService, ) {} /** R0 : lecture du profil courant (gestion complète des utilisateurs en R1). */ @Get('me') async me(@CurrentUser() current: AuthenticatedUser): Promise { const user = await this.prisma.user.findUnique({ where: { id: current.userId }, include: { role: true }, }); if (!user || !user.isActive) throw new NotFoundException(); return { id: user.id, email: user.email, displayName: user.displayName, role: { id: user.role.id, name: user.role.name as RoleName }, isDemo: user.isDemo, permissions: await this.permissionsService.getForRole(user.roleId), }; } }