From 699d163c6a897d3fa201e59eb61b8ee9438cbe7c Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Fri, 17 Apr 2026 17:35:32 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20documents=20l=C3=A9gaux=20upload=20stab?= =?UTF-8?q?le=20(#126)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squash develop: correction FK televersePar, droits Docker / volume /app/documents/legaux pour l’upload PDF admin. Made-with: Cursor --- backend/Dockerfile | 5 +++-- .../modules/documents-legaux/documents-legaux.controller.ts | 5 +++-- .../src/modules/documents-legaux/documents-legaux.service.ts | 4 ++-- docker-compose.yml | 3 +++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index b1d64fd..11c5f78 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -32,8 +32,9 @@ COPY --from=builder /app/dist ./dist RUN addgroup -g 1001 -S nodejs RUN adduser -S nestjs -u 1001 -# Créer le dossier uploads et donner les permissions -RUN mkdir -p /app/uploads/photos && chown -R nestjs:nodejs /app/uploads +# Dossiers écriture runtime (nestjs non-root) : photos + documents légaux (PDF) +RUN mkdir -p /app/uploads/photos /app/documents/legaux && \ + chown -R nestjs:nodejs /app/uploads /app/documents USER nestjs diff --git a/backend/src/modules/documents-legaux/documents-legaux.controller.ts b/backend/src/modules/documents-legaux/documents-legaux.controller.ts index 0bef1e8..6955bad 100644 --- a/backend/src/modules/documents-legaux/documents-legaux.controller.ts +++ b/backend/src/modules/documents-legaux/documents-legaux.controller.ts @@ -101,8 +101,9 @@ export class DocumentsLegauxController { throw new BadRequestException('Aucun fichier fourni'); } - // TODO: Récupérer l'ID utilisateur depuis le guard - const userId = '00000000-0000-0000-0000-000000000000'; // Temporaire + // TODO: Récupérer l'ID utilisateur depuis le guard quand l'auth sera branchée. + // En attendant, on n'associe pas d'utilisateur plutôt que d'envoyer un UUID fictif invalide. + const userId: string | null = null; const document = await this.documentsService.uploadNouvelleVersion( uploadDto.type, diff --git a/backend/src/modules/documents-legaux/documents-legaux.service.ts b/backend/src/modules/documents-legaux/documents-legaux.service.ts index 02ce74b..3ea05e3 100644 --- a/backend/src/modules/documents-legaux/documents-legaux.service.ts +++ b/backend/src/modules/documents-legaux/documents-legaux.service.ts @@ -43,7 +43,7 @@ export class DocumentsLegauxService { async uploadNouvelleVersion( type: 'cgu' | 'privacy', file: Express.Multer.File, - userId: string, + userId?: string | null, ): Promise { // Validation du type de fichier if (file.mimetype !== 'application/pdf') { @@ -84,7 +84,7 @@ export class DocumentsLegauxService { fichier_path: filePath, fichier_hash: hash, actif: false, // Pas actif par défaut - televersePar: { id: userId } as any, + televersePar: userId ? ({ id: userId } as any) : null, televerseLe: new Date(), }); diff --git a/docker-compose.yml b/docker-compose.yml index dcfa74b..4dcd87f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -61,6 +61,8 @@ services: UPLOAD_PHOTOS_DIR: ${UPLOAD_PHOTOS_DIR:-/app/uploads/photos} volumes: - backend_uploads:/app/uploads/photos + # PDF CGU / privacy (upload admin) — persistance entre redémarrages + - backend_documents_legaux:/app/documents/legaux depends_on: - database labels: @@ -105,6 +107,7 @@ services: volumes: postgres_data: backend_uploads: + backend_documents_legaux: networks: ptitspas_network: