fix: corrige path traversal, fuites d'erreurs et dépréciations

- Empêche le path traversal du catch-all SPA (vérif is_relative_to dist)
- Migre on_event("startup") vers le handler lifespan de FastAPI
- Masque les exceptions internes des erreurs 500 (log au lieu de str(e))
- Remplace datetime.utcnow déprécié par un helper UTC timezone-aware
- Simplifie except (ValueError, Exception) redondant

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-11 10:01:48 +02:00
parent bd8b9a044c
commit c15b65f0d9
5 changed files with 44 additions and 28 deletions

View File

@@ -1,6 +1,7 @@
"""Documents routes - CRUD operations for documents."""
import json
import logging
from datetime import datetime
from fastapi import APIRouter, Depends, HTTPException, File, UploadFile, Form
@@ -16,6 +17,8 @@ from ..schemas import SaveRequest, SaveResponse, DocumentSummary
router = APIRouter(prefix="/api", tags=["documents"])
logger = logging.getLogger(__name__)
@router.post("/save", response_model=SaveResponse)
async def save_document(
@@ -60,9 +63,10 @@ async def save_document(
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
except Exception as e:
except Exception:
logger.exception("Erreur lors de la sauvegarde du document")
raise HTTPException(
status_code=500, detail=f"Erreur lors de la sauvegarde: {str(e)}"
status_code=500, detail="Erreur lors de la sauvegarde du document."
)
@@ -134,9 +138,10 @@ async def save_document_with_pdf(
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
except Exception as e:
except Exception:
logger.exception("Erreur lors de la sauvegarde du document avec PDF")
raise HTTPException(
status_code=500, detail=f"Erreur lors de la sauvegarde: {str(e)}"
status_code=500, detail="Erreur lors de la sauvegarde du document."
)