|
|
@@ -11,7 +11,12 @@ import {
|
|
|
} from '@nestjs/common';
|
|
|
import { CreateUserUseCase } from '../../application/use-cases/create-user.use-case';
|
|
|
import { CreateUserDto } from '../../application/dto/create-user.dto';
|
|
|
-import { ApiOperation, ApiResponse, ApiParam } from '@nestjs/swagger';
|
|
|
+import {
|
|
|
+ ApiOperation,
|
|
|
+ ApiResponse,
|
|
|
+ ApiParam,
|
|
|
+ ApiSecurity,
|
|
|
+} from '@nestjs/swagger';
|
|
|
import { UseInterceptors } from '@nestjs/common';
|
|
|
import { BodyParserInterceptor } from '../../interceptors/body-parser.interceptor';
|
|
|
import { FindUserByIdUseCase } from '../../application/use-cases/find-user-by-id.use-case';
|
|
|
@@ -19,9 +24,11 @@ import { UpdateUserUseCase } from '../../application/use-cases/update-user.use-c
|
|
|
import { UpdateUserDto } from '../../application/dto/update-user.dto';
|
|
|
import { DeleteUserUseCase } from '../../application/use-cases/delete-user.use-case';
|
|
|
import { FindAllUsersUseCase } from '../../application/use-cases/find-all-users.use-case';
|
|
|
+import { Public } from '../decorators/public.decorator';
|
|
|
|
|
|
@Controller('users')
|
|
|
@UseInterceptors(BodyParserInterceptor)
|
|
|
+@ApiSecurity('access-token') // Indique que les routes nécessitent un token Bearer pour l'authentification
|
|
|
export class UserController {
|
|
|
constructor(
|
|
|
private readonly createUserUseCase: CreateUserUseCase,
|
|
|
@@ -32,6 +39,7 @@ export class UserController {
|
|
|
) {}
|
|
|
|
|
|
@Post()
|
|
|
+ @Public() // Cette route est publique pour permettre l'inscription des utilisateurs
|
|
|
@ApiOperation({ description: 'Creater un utilisateur' })
|
|
|
@ApiResponse({ status: 200 })
|
|
|
async create(@Body() createUserDto: CreateUserDto) {
|
|
|
@@ -47,21 +55,25 @@ export class UserController {
|
|
|
}
|
|
|
|
|
|
@Get(':id')
|
|
|
+ // Route protégée - nécessite une authentification
|
|
|
@ApiOperation({ description: 'Récupérer un utilisateur par son ID' })
|
|
|
@ApiResponse({ status: 200, description: 'Utilisateur trouvé' })
|
|
|
@ApiResponse({ status: 404, description: 'Utilisateur non trouvé' })
|
|
|
+ @ApiResponse({ status: 401, description: 'Non autorisé' })
|
|
|
@ApiParam({ name: 'id', description: "ID de l'utilisateur", type: 'number' })
|
|
|
async findOne(@Param('id', ParseIntPipe) id: number) {
|
|
|
return this.findUserByIdUseCase.execute(id);
|
|
|
}
|
|
|
|
|
|
@Put(':id')
|
|
|
+ // Route protégée - nécessite une authentification
|
|
|
@ApiOperation({ description: 'Mettre à jour un utilisateur par son ID' })
|
|
|
@ApiResponse({
|
|
|
status: 200,
|
|
|
description: 'Utilisateur mis à jour avec succès',
|
|
|
})
|
|
|
@ApiResponse({ status: 404, description: 'Utilisateur non trouvé' })
|
|
|
+ @ApiResponse({ status: 401, description: 'Non autorisé' })
|
|
|
@ApiParam({ name: 'id', description: "ID de l'utilisateur", type: 'number' })
|
|
|
async update(
|
|
|
@Param('id', ParseIntPipe) id: number,
|
|
|
@@ -71,6 +83,7 @@ export class UserController {
|
|
|
}
|
|
|
|
|
|
@Patch(':id')
|
|
|
+ // Route protégée - nécessite une authentification
|
|
|
@ApiOperation({
|
|
|
description: 'Mettre à jour partiellement un utilisateur par son ID',
|
|
|
})
|
|
|
@@ -79,6 +92,7 @@ export class UserController {
|
|
|
description: 'Utilisateur partiellement mis à jour avec succès',
|
|
|
})
|
|
|
@ApiResponse({ status: 404, description: 'Utilisateur non trouvé' })
|
|
|
+ @ApiResponse({ status: 401, description: 'Non autorisé' })
|
|
|
@ApiParam({ name: 'id', description: "ID de l'utilisateur", type: 'number' })
|
|
|
async partialUpdate(
|
|
|
@Param('id', ParseIntPipe) id: number,
|
|
|
@@ -88,9 +102,11 @@ export class UserController {
|
|
|
}
|
|
|
|
|
|
@Delete(':id')
|
|
|
+ // Route protégée - nécessite une authentification
|
|
|
@ApiOperation({ description: 'Supprimer un utilisateur par son ID' })
|
|
|
@ApiResponse({ status: 200, description: 'Utilisateur supprimé avec succès' })
|
|
|
@ApiResponse({ status: 404, description: 'Utilisateur non trouvé' })
|
|
|
+ @ApiResponse({ status: 401, description: 'Non autorisé' })
|
|
|
@ApiParam({ name: 'id', description: "ID de l'utilisateur", type: 'number' })
|
|
|
async remove(@Param('id', ParseIntPipe) id: number) {
|
|
|
await this.deleteUserUseCase.execute(id);
|
|
|
@@ -98,8 +114,10 @@ export class UserController {
|
|
|
}
|
|
|
|
|
|
@Get()
|
|
|
+ // Route protégée - nécessite une authentification
|
|
|
@ApiOperation({ description: 'Récupérer tous les utilisateurs' })
|
|
|
@ApiResponse({ status: 200, description: 'Liste des utilisateurs' })
|
|
|
+ @ApiResponse({ status: 401, description: 'Non autorisé' })
|
|
|
async findAll() {
|
|
|
return this.findAllUsersUseCase.execute();
|
|
|
}
|