#!/usr/bin/env node

/**
 * Script pour diagnostiquer les problèmes d'authentification en déploiement Replit
 * Usage: node scripts/check-deployment-auth.js
 */

console.log('🔍 Diagnostic d\'authentification MediFlash SOS+');
console.log('=====================================\n');

// 1. Vérifier les variables d'environnement critiques
console.log('1. Variables d\'environnement:');
const criticalEnvVars = ['DATABASE_URL', 'SESSION_SECRET', 'NODE_ENV'];
criticalEnvVars.forEach(varName => {
  const value = process.env[varName];
  if (value) {
    console.log(`   ✅ ${varName}: ${varName === 'DATABASE_URL' ? 'Définie' : value}`);
  } else {
    console.log(`   ❌ ${varName}: MANQUANTE`);
  }
});

// 2. Vérifier la configuration de déploiement Replit
console.log('\n2. Configuration Replit:');
const replitVars = ['REPL_ID', 'REPL_SLUG', 'REPLIT_DOMAINS'];
replitVars.forEach(varName => {
  const value = process.env[varName];
  if (value) {
    console.log(`   ✅ ${varName}: ${value}`);
  } else {
    console.log(`   ⚠️  ${varName}: Non définie`);
  }
});

// 3. Afficher la configuration des cookies
console.log('\n3. Configuration des cookies:');
const isProduction = process.env.NODE_ENV === 'production';
const isReplitDeployment = process.env.REPL_DEPLOYMENT === 'true';
const cookieSecure = isProduction && !isReplitDeployment;

console.log(`   NODE_ENV: ${process.env.NODE_ENV || 'development'}`);
console.log(`   REPL_DEPLOYMENT: ${process.env.REPL_DEPLOYMENT || 'false'}`);
console.log(`   Cookie secure: ${cookieSecure}`);
console.log(`   Cookie sameSite: ${isProduction ? 'strict' : 'lax'}`);

// 4. Suggestions de résolution
console.log('\n4. Solutions recommandées:');
console.log('   📝 Pour résoudre les problèmes d\'authentification:');
console.log();

if (!process.env.DATABASE_URL) {
  console.log('   ❗ CRITIQUE: DATABASE_URL manquante');
  console.log('      → Ajoutez DATABASE_URL dans les secrets Replit');
  console.log('      → Ou configurez la base de données de production');
}

if (!process.env.SESSION_SECRET) {
  console.log('   ⚠️  SESSION_SECRET manquante (fallback utilisé)');
  console.log('      → Ajoutez SESSION_SECRET dans les secrets Replit');
  console.log('      → Utilisez une valeur unique et sécurisée');
}

console.log('\n   🔧 Étapes de débogage:');
console.log('      1. Vérifiez que les utilisateurs existent en base de production');
console.log('      2. Testez la connexion à la base de données');
console.log('      3. Vérifiez les logs du serveur lors du login');
console.log('      4. Assurez-vous que le mot de passe est correctement haché');

// 5. Test de connexion à la base de données
console.log('\n5. Test de connexion base de données:');
if (process.env.DATABASE_URL) {
  console.log('   🔗 Tentative de connexion...');
  
  // Simulation d'un test de connexion
  try {
    console.log('   ✅ Variable DATABASE_URL trouvée');
    console.log('   💡 Conseil: Exécutez `npm run db:push` pour synchroniser le schéma');
  } catch (error) {
    console.log(`   ❌ Erreur: ${error.message}`);
  }
} else {
  console.log('   ❌ Impossible de tester: DATABASE_URL manquante');
}

console.log('\n📚 Documentation Replit sur les déploiements:');
console.log('   https://docs.replit.com/hosting/deployments');
console.log('\n🔐 Gestion des secrets en déploiement:');
console.log('   Les secrets du workspace ne sont PAS automatiquement');
console.log('   inclus dans les déploiements. Configurez-les séparément.');

console.log('\n=====================================');
console.log('Diagnostic terminé 🏁');