Checkpoint: Correction du bouton téléchargement BAP : la route /api/download-bap utilise maintenant un query param pdfPath pour accepter les chemins complets avec sous-dossiers (ex: /storage/2026-04/BAP_xxx.pdf). Ajout d'une route de compatibilité qui cherche dans tous les sous-dossiers. Sécurité anti-path-traversal maintenue.

This commit is contained in:
Manus
2026-04-12 10:31:18 -04:00
parent 9d71f1e34a
commit d4fe15c23d
3 changed files with 49 additions and 6 deletions

View File

@@ -23,9 +23,11 @@ import {
} from "lucide-react";
// Helper : télécharge un PDF annoté BAP depuis son URL de stockage
// pdfUrl peut être : '/storage/2026-04/BAP_xxx.pdf' ou '/storage/BAP_xxx.pdf'
function downloadBapPdf(pdfUrl: string, supplierName?: string | null) {
const filename = pdfUrl.split('/').pop() || 'BAP.pdf';
const downloadUrl = `/api/download-bap/${filename}`;
// Utiliser le query param pdfPath pour passer le chemin complet au serveur
const downloadUrl = `/api/download-bap?pdfPath=${encodeURIComponent(pdfUrl)}`;
const a = document.createElement('a');
a.href = downloadUrl;
a.download = supplierName ? `BAP_${supplierName.replace(/[^a-zA-Z0-9]/g, '_')}.pdf` : filename;

View File

@@ -35,9 +35,11 @@ import { trpc } from "@/lib/trpc";
import { Search, FileText, Download, FileSpreadsheet, Trash2, Edit, Trash, CheckCircle, CheckCircle2, ShieldCheck } from "lucide-react";
// Helper : télécharge un PDF annoté BAP depuis son URL de stockage
// pdfUrl peut être : '/storage/2026-04/BAP_xxx.pdf' ou '/storage/BAP_xxx.pdf'
function downloadBapPdf(pdfUrl: string, supplierName?: string) {
const filename = pdfUrl.split('/').pop() || 'BAP.pdf';
const downloadUrl = `/api/download-bap/${filename}`;
// Utiliser le query param pdfPath pour passer le chemin complet au serveur
const downloadUrl = `/api/download-bap?pdfPath=${encodeURIComponent(pdfUrl)}`;
const a = document.createElement('a');
a.href = downloadUrl;
a.download = supplierName ? `BAP_${supplierName.replace(/[^a-zA-Z0-9]/g, '_')}.pdf` : filename;