import { Controller, Get, Post, Body, UseGuards, Res, Req, } from '@nestjs/common'; import type { Response } from 'express'; import { UserService } from './user.service'; import { changePasswordDto, CreateUserDto, Login } from './dto/create-user.dto'; import { JwtAuthGuard } from './jwt.guard'; import { RolesGuard } from 'src/roles.guard'; import { Roles } from 'src/roles.decorator'; import { Role } from 'src/role.enum'; @Controller('user') export class UserController { constructor(private readonly userService: UserService) { } @UseGuards(JwtAuthGuard, RolesGuard) @Roles(Role.ADMINISTRADOR, Role.SUPER_ADMINISTRADOR) @Get() async getAll() { return this.userService.getAll(); } @UseGuards(JwtAuthGuard, RolesGuard) @Roles(Role.ADMINISTRADOR, Role.SUPER_ADMINISTRADOR) @Get('/perfil') async getAllPerfil() { return this.userService.getAllPerfil(); } @Post() async Login(@Body() data: Login, @Res() res: Response) { return this.userService.Login(data, res); } @UseGuards(JwtAuthGuard) @Get('/validate-token') getProfile(@Req() req) { return req.user.role; } @UseGuards(JwtAuthGuard, RolesGuard) @Roles(Role.ADMINISTRADOR, Role.SUPER_ADMINISTRADOR) @Post('/create') async createUser(@Body() data: CreateUserDto) { return this.userService.create(data); } @UseGuards(JwtAuthGuard, RolesGuard) @Roles(Role.ADMINISTRADOR, Role.SUPER_ADMINISTRADOR) @Post('/changePassword') async changePassword(@Body() data: changePasswordDto, @Req() req) { const id_usuario = req.user.id; await this.userService.changePassword(data, id_usuario); return { message: 'ContraseƱa actualizada correctamente' }; } } //IO