🚨 Guide de Dépannage - Production
❌ Problème Identifié
Le login fonctionne en local mais pas en production sur Vercel.
Causes probables :
- Configuration des cookies différente entre local et production
- Variables d'environnement manquantes sur Vercel
- Problèmes de CORS en production
- Headers de sécurité plus stricts en HTTPS
- Configuration SameSite des cookies
🔧 Solutions Étape par Étape
Étape 1: Vérifier les Variables d'Environnement
Sur Vercel Dashboard, vérifiez que ces variables sont définies :
TURSO_DATABASE_URL=libsql://...
TURSO_AUTH_TOKEN=your_token_here
⚠️ Important : Redéployez après avoir modifié les variables d'environnement.
Étape 2: Corriger la Configuration des Cookies
Le problème principal est probablement la configuration des cookies. Modifiez le fichier de login :
// Dans src/pages/api/auth/login.ts
const cookieOptions = `Path=/; Max-Age=${60 * 60 * 24 * 7}; SameSite=None; Secure; HttpOnly`;
response.headers.set('Set-Cookie', [
`user_id=${user.id}; ${cookieOptions}`,
`session_id=${sessionId}; ${cookieOptions}`
]);
✅ Solution : SameSite=None; Secure pour HTTPS en production
Étape 3: Vérifier les Headers CORS
Ajoutez les headers CORS appropriés :
// Dans chaque endpoint API
response.headers.set('Access-Control-Allow-Origin', 'https://ma-prusa-social.vercel.app');
response.headers.set('Access-Control-Allow-Credentials', 'true');
response.headers.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Cookie');
Étape 4: Tester avec la Page de Debug
Utilisez la page de debug pour identifier le problème exact :
📋 Actions à effectuer :
- Cliquer sur "Test Complet du Login"
- Cliquer sur "Analyse Environnement"
- Vérifier les logs en temps réel
- Comparer les réponses entre local et production
Étape 5: Vérifier les Logs de Production
Sur Vercel Dashboard, consultez les logs :
1. Allez sur Vercel Dashboard → Votre projet → Functions
2. Cliquez sur une fonction API pour voir les logs
3. Recherchez les erreurs liées aux cookies ou à la base de données
💻 Code de Correction
1. Correction des Cookies (src/pages/api/auth/login.ts)
// Remplacer la configuration des cookies par :
const isProduction = import.meta.env.PROD;
const cookieOptions = isProduction
? `Path=/; Max-Age=${60 * 60 * 24 * 7}; SameSite=None; Secure; HttpOnly`
: `Path=/; Max-Age=${60 * 60 * 24 * 7}; SameSite=Lax; HttpOnly`;
response.headers.set('Set-Cookie', [
`user_id=${user.id}; ${cookieOptions}`,
`session_id=${sessionId}; ${cookieOptions}`
]);
2. Ajout des Headers CORS
// Ajouter au début de chaque endpoint :
const corsHeaders = {
'Access-Control-Allow-Origin': import.meta.env.PROD
? 'https://ma-prusa-social.vercel.app'
: 'http://localhost:4321',
'Access-Control-Allow-Credentials': 'true',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Cookie'
};
// Appliquer aux réponses :
Object.entries(corsHeaders).forEach(([key, value]) => {
response.headers.set(key, value);
});