espace-paie-odentas/docs/S3_PRESIGNED_LINKS.md

2.9 KiB

Liens Pré-signés S3 pour les Factures

Vue d'ensemble

Ce système permet de générer des liens de téléchargement direct pour les PDFs de factures stockés sur S3, éliminant le besoin de proxifier les fichiers via le serveur Next.js.

Durée des liens pré-signés

  • Maximum AWS S3 : 7 jours (604 800 secondes)
  • Emails clients : 24 heures (86 400 secondes) - durée recommandée pour la sécurité
  • Interface staff : 48 heures (172 800 secondes) - durée plus longue pour les tests
  • Liens temporaires : 1 heure (3600 secondes) - pour les téléchargements immédiats

Endpoints

Méthode : GET
Authentification : Requise (utilisateur staff)
Description : Génère un lien pré-signé pour téléchargement par l'équipe

Réponse :

{
  "success": true,
  "downloadUrl": "https://s3.amazonaws.com/bucket/file.pdf?X-Amz-...",
  "filename": "facture-001.pdf",
  "expiresIn": 172800
}

2. /api/facturation/[id]/download (Clients)

Méthode : GET
Authentification : Requise (client de l'organisation)
Description : Redirection directe vers le PDF pour téléchargement client

Comportement : Redirige (302) vers l'URL S3 pré-signée

Intégration Email

Les emails de facture incluent maintenant un lien direct de téléchargement :

const downloadUrl = `${process.env.NEXT_PUBLIC_SITE_URL}/api/facturation/${invoice.id}/download`;

// Template email
{
  ctaUrl: downloadUrl, // Pointe vers le téléchargement direct
  ctaText: 'Télécharger la facture PDF'
}

Sécurité

  1. Authentification : Tous les endpoints nécessitent une session valide
  2. Autorisation :
    • Staff : accès à toutes les factures
    • Clients : accès uniquement aux factures de leur organisation
  3. Expiration : Les liens expirent automatiquement
  4. Logs : Toutes les générations de liens sont loggées

Avantages

  1. Performance : Pas de proxification via Next.js
  2. Bande passante : Téléchargement direct depuis S3
  3. Scalabilité : S3 gère automatiquement la charge
  4. Expérience utilisateur : Téléchargement immédiat via le bouton email
  5. Sécurité : Liens temporaires et authentifiés

Tests

Interface Staff

  • Bouton "Test téléchargement" dans /staff/facturation/[id]
  • Lien vert à côté du bouton "Ouvrir le PDF"

Email Client

  • Le bouton "Télécharger la facture PDF" dans l'email redirige vers le téléchargement

Configuration

Variables d'environnement requises :

AWS_REGION=eu-west-3
AWS_S3_BUCKET=odentas-docs
AWS_ACCESS_KEY_ID=xxx
AWS_SECRET_ACCESS_KEY=xxx
NEXT_PUBLIC_SITE_URL=https://yoursite.com

Monitoring

Surveillez les logs pour :

  • Échecs de génération de liens : pdf_not_accessible
  • Factures sans PDF : pdf_not_found
  • Tentatives d'accès non autorisées : unauthorized/forbidden