64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
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
|