63 lines
2.1 KiB
JavaScript
63 lines
2.1 KiB
JavaScript
import { pool } from '../db.js';
|
|
import jwt from 'jsonwebtoken';
|
|
|
|
async function diagnoseAuth() {
|
|
console.log('🔍 Diagnostic de l\'authentification\n');
|
|
|
|
try {
|
|
// 1. Vérifier les utilisateurs
|
|
const users = await pool.query('SELECT id, email, role, email_verified FROM users');
|
|
console.log(`✅ Nombre d'utilisateurs: ${users.rows.length}`);
|
|
console.log('\nUtilisateurs:');
|
|
users.rows.forEach(u => {
|
|
console.log(` - ${u.email} (${u.role}) ${u.email_verified ? '✓ vérifié' : '✗ non vérifié'}`);
|
|
});
|
|
|
|
// 2. Vérifier le JWT_SECRET
|
|
console.log('\n📝 Configuration:');
|
|
console.log(` JWT_SECRET: ${process.env.JWT_SECRET ? '✓ défini' : '✗ manquant'}`);
|
|
|
|
// 3. Test de génération de token
|
|
if (users.rows.length > 0) {
|
|
const testUser = users.rows[0];
|
|
const token = jwt.sign(
|
|
{ id: testUser.id, email: testUser.email, role: testUser.role },
|
|
process.env.JWT_SECRET,
|
|
{ expiresIn: '7d' }
|
|
);
|
|
console.log(`\n🔑 Token de test généré pour ${testUser.email}:`);
|
|
console.log(` ${token.substring(0, 50)}...`);
|
|
|
|
// Vérifier le token
|
|
try {
|
|
const decoded = jwt.verify(token, process.env.JWT_SECRET);
|
|
console.log(` ✓ Token valide`);
|
|
console.log(` Payload:`, decoded);
|
|
} catch (error) {
|
|
console.log(` ✗ Erreur de vérification:`, error.message);
|
|
}
|
|
}
|
|
|
|
// 4. Vérifier la structure de la table users
|
|
const tableInfo = await pool.query(`
|
|
SELECT column_name, data_type, is_nullable
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'users'
|
|
ORDER BY ordinal_position
|
|
`);
|
|
console.log('\n📊 Structure de la table users:');
|
|
tableInfo.rows.forEach(col => {
|
|
console.log(` - ${col.column_name}: ${col.data_type} ${col.is_nullable === 'NO' ? 'NOT NULL' : 'NULL'}`);
|
|
});
|
|
|
|
console.log('\n✅ Diagnostic terminé');
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error('❌ Erreur:', error.message);
|
|
console.error(error.stack);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
diagnoseAuth();
|