/** * Script pour vérifier et créer un compte ADMIN */ import { pool } from '../db.js'; import bcrypt from 'bcrypt'; async function checkAndCreateAdmin() { try { console.log('🔍 Vérification des utilisateurs ADMIN...\n'); // 1. Vérifier tous les utilisateurs const allUsers = await pool.query(` SELECT id, email, role, is_verified, created_at FROM users ORDER BY created_at DESC `); console.log(`📊 Total d'utilisateurs: ${allUsers.rows.length}\n`); console.table(allUsers.rows); // 2. Vérifier les admins existants const admins = await pool.query(` SELECT email, role, is_verified FROM users WHERE role = 'ADMIN' `); console.log(`\n👑 Nombre d'administrateurs: ${admins.rows.length}`); if (admins.rows.length > 0) { console.log('✅ Administrateurs trouvés:'); console.table(admins.rows); } else { console.log('❌ Aucun administrateur trouvé!\n'); // 3. Proposer de créer ou promouvoir un admin if (allUsers.rows.length > 0) { console.log('📝 Options:'); console.log('1. Promouvoir un utilisateur existant au rôle ADMIN'); console.log('2. Créer un nouveau compte ADMIN\n'); // Promouvoir le premier utilisateur au rôle ADMIN (pour l'exemple) const userToPromote = allUsers.rows[0]; console.log(`🔄 Promotion de ${userToPromote.email} au rôle ADMIN...`); await pool.query( 'UPDATE users SET role = $1, is_verified = TRUE WHERE id = $2', ['ADMIN', userToPromote.id] ); console.log(`✅ ${userToPromote.email} est maintenant ADMIN!\n`); } else { console.log('📝 Création d\'un compte ADMIN par défaut...'); const hashedPassword = await bcrypt.hash('Admin123!', 10); const result = await pool.query(` INSERT INTO users (email, password, first_name, last_name, role, is_verified) VALUES ($1, $2, $3, $4, $5, TRUE) RETURNING id, email, role `, ['admin@thetiptop.com', hashedPassword, 'Admin', 'TheTipTop', 'ADMIN']); console.log('✅ Compte ADMIN créé:'); console.log(` Email: admin@thetiptop.com`); console.log(` Mot de passe: Admin123!`); console.log(` ID: ${result.rows[0].id}\n`); } } // 4. Vérification finale const finalCheck = await pool.query(` SELECT email, role, is_verified FROM users WHERE role = 'ADMIN' `); console.log('🎯 Résultat final - Administrateurs:'); console.table(finalCheck.rows); // 5. Vérifier les tickets const ticketsCount = await pool.query('SELECT COUNT(*) as count FROM tickets'); console.log(`\n🎫 Nombre total de tickets: ${ticketsCount.rows[0].count}`); await pool.end(); console.log('\n✅ Script terminé avec succès!'); } catch (error) { console.error('❌ Erreur:', error.message); await pool.end(); process.exit(1); } } checkAndCreateAdmin();