/**
 * Générer un token JWT pour un admin
 */

import 'dotenv/config';
import jwt from 'jsonwebtoken';
import { pool } from '../db.js';

async function generateAdminToken() {
  console.log('🔑 Génération d\'un token admin...\n');

  try {
    // Récupérer un admin
    const result = await pool.query(`
      SELECT id, email, role, first_name, last_name
      FROM users
      WHERE role = 'ADMIN'
      LIMIT 1
    `);

    if (result.rows.length === 0) {
      console.log('❌ Aucun utilisateur ADMIN trouvé dans la base de données');
      console.log('\n💡 Créez d\'abord un admin avec:');
      console.log('   node scripts/create-admin.js');
      process.exit(1);
    }

    const admin = result.rows[0];

    console.log('✅ Admin trouvé:');
    console.log(`   Email: ${admin.email}`);
    console.log(`   Nom: ${admin.first_name} ${admin.last_name}`);
    console.log(`   Role: ${admin.role}\n`);

    // Générer le token
    const token = jwt.sign(
      { userId: admin.id },
      process.env.JWT_SECRET,
      { expiresIn: '7d' } // Token valide 7 jours
    );

    console.log('🎫 TOKEN GÉNÉRÉ:\n');
    console.log(token);
    console.log('\n');

    console.log('📋 COMMENT UTILISER CE TOKEN:\n');
    console.log('1. Ouvrir la console du navigateur (F12)');
    console.log('2. Aller dans l\'onglet "Application" ou "Storage"');
    console.log('3. Cliquer sur "Local Storage" > "http://localhost:3000"');
    console.log('4. Modifier ou créer la clé "token" avec la valeur ci-dessus');
    console.log('5. Rafraîchir la page (F5)');
    console.log('\n✅ Vous serez connecté en tant qu\'admin!\n');

    // Test du token
    console.log('🧪 TEST DU TOKEN:\n');
    const decoded = jwt.verify(token, process.env.JWT_SECRET);
    console.log('   Décodé:', decoded);
    console.log('   Expire dans: 7 jours');
    console.log('   User ID:', decoded.userId);

  } catch (error) {
    console.error('❌ Erreur:', error.message);
  } finally {
    await pool.end();
  }
}

generateAdminToken();
