94 lines
3.0 KiB
JavaScript
94 lines
3.0 KiB
JavaScript
/**
|
|
* 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();
|