2.9 KiB
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
1. /api/staff/facturation/[id]/download-link (Staff seulement)
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é
- Authentification : Tous les endpoints nécessitent une session valide
- Autorisation :
- Staff : accès à toutes les factures
- Clients : accès uniquement aux factures de leur organisation
- Expiration : Les liens expirent automatiquement
- Logs : Toutes les générations de liens sont loggées
Avantages
- Performance : Pas de proxification via Next.js
- Bande passante : Téléchargement direct depuis S3
- Scalabilité : S3 gère automatiquement la charge
- Expérience utilisateur : Téléchargement immédiat via le bouton email
- 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