import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards, ValidationPipe, } from '@nestjs/common'; import { UserService } from './user.service'; import { CreateUserDto } from './dto/create-user.dto'; import { UpdateUserDto } from './dto/update-user.dto'; import { User } from '../entity/user'; import { JwtAuthGuard } from '../auth/jwt-auth.guard'; import { Roles } from '../auth/roles.decorator'; import { Role } from '../auth/role.enum'; import { RolesGuard } from '../auth/roles.guard'; @Controller('users') @UseGuards(JwtAuthGuard, RolesGuard) @Roles(Role.Admin) export class UserController { constructor(private readonly userService: UserService) {} @Post() create( @Body(new ValidationPipe()) createUserDto: CreateUserDto, ): Promise { return this.userService.create(createUserDto); } @Get() findAll(): Promise { return this.userService.findAll(); } @Get(':id') findOne(@Param('id') id: string): Promise { return this.userService.findOne(+id); } @Patch(':id') update( @Param('id') id: string, @Body(new ValidationPipe()) updateUserDto: UpdateUserDto, ): Promise { return this.userService.update(+id, updateUserDto); } @Roles(Role.Admin) @Delete(':id') remove(@Param('id') id: string): Promise { return this.userService.remove(+id); } }