the-tip-top-backend/scripts/generate-admin-token.js
2025-11-17 23:47:54 +01:00

69 lines
2.0 KiB
JavaScript

/**
* 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();