Checkpoint: Correction de l'authentification locale : utilisation de sdk.createSessionToken() au lieu de jsonwebtoken pour compatibilité avec le système OAuth

This commit is contained in:
Manus Sandbox
2025-11-23 08:50:35 -05:00
parent ccb1484839
commit 645f6f6b5f
12 changed files with 2984 additions and 12 deletions

126
reset-admin.js Executable file
View File

@@ -0,0 +1,126 @@
#!/usr/bin/env node
/**
* Script de réinitialisation de l'utilisateur administrateur
* Crée ou réinitialise l'utilisateur adminServFormation avec le mot de passe par défaut
*/
import { drizzle } from 'drizzle-orm/mysql2';
import { eq } from 'drizzle-orm';
import mysql from 'mysql2/promise';
import bcrypt from 'bcryptjs';
import { users } from './drizzle/schema.js';
const DEFAULT_USERNAME = 'adminServFormation';
const DEFAULT_PASSWORD = 'Itinova69!';
const DEFAULT_EMAIL = 'admin@formation.local';
async function resetAdmin() {
console.log('╔════════════════════════════════════════════════════════════════╗');
console.log('║ Réinitialisation de l\'utilisateur administrateur ║');
console.log('╚════════════════════════════════════════════════════════════════╝');
console.log('');
// Vérifier que DATABASE_URL est définie
if (!process.env.DATABASE_URL) {
console.error('❌ [ERREUR] DATABASE_URL n\'est pas définie dans .env');
process.exit(1);
}
console.log('📋 Informations de l\'utilisateur:');
console.log(` Identifiant: ${DEFAULT_USERNAME}`);
console.log(` Mot de passe: ${DEFAULT_PASSWORD}`);
console.log(` Email: ${DEFAULT_EMAIL}`);
console.log(` Rôle: admin`);
console.log('');
try {
// Créer la connexion à la base de données
console.log('🔌 Connexion à la base de données...');
const connection = await mysql.createConnection(process.env.DATABASE_URL);
const db = drizzle(connection);
console.log('✅ Connexion établie');
console.log('');
// Hasher le mot de passe
console.log('🔐 Hashage du mot de passe...');
const hashedPassword = await bcrypt.hash(DEFAULT_PASSWORD, 10);
console.log('✅ Mot de passe hashé');
console.log('');
// Vérifier si l'utilisateur existe déjà
console.log('🔍 Vérification de l\'existence de l\'utilisateur...');
const existingUsers = await db
.select()
.from(users)
.where(eq(users.username, DEFAULT_USERNAME))
.limit(1);
if (existingUsers.length > 0) {
console.log('⚠️ L\'utilisateur existe déjà');
console.log('🔄 Mise à jour du mot de passe...');
await db
.update(users)
.set({
password: hashedPassword,
email: DEFAULT_EMAIL,
role: 'admin',
isActive: true,
updatedAt: new Date(),
})
.where(eq(users.username, DEFAULT_USERNAME));
console.log('✅ Mot de passe réinitialisé avec succès');
} else {
console.log(' L\'utilisateur n\'existe pas, création...');
await db.insert(users).values({
username: DEFAULT_USERNAME,
password: hashedPassword,
email: DEFAULT_EMAIL,
name: 'Administrateur',
role: 'admin',
isActive: true,
createdAt: new Date(),
updatedAt: new Date(),
});
console.log('✅ Utilisateur créé avec succès');
}
console.log('');
console.log('╔════════════════════════════════════════════════════════════════╗');
console.log('║ Réinitialisation terminée avec succès! ║');
console.log('╚════════════════════════════════════════════════════════════════╝');
console.log('');
console.log('🔑 Vous pouvez maintenant vous connecter avec:');
console.log(` Identifiant: ${DEFAULT_USERNAME}`);
console.log(` Mot de passe: ${DEFAULT_PASSWORD}`);
console.log('');
console.log('⚠️ IMPORTANT: Changez le mot de passe après la première connexion');
console.log('');
await connection.end();
process.exit(0);
} catch (error) {
console.error('');
console.error('❌ [ERREUR] Une erreur est survenue:');
console.error(error.message);
console.error('');
if (error.code === 'ER_NO_SUCH_TABLE') {
console.error('💡 La table "users" n\'existe pas.');
console.error(' Exécutez: pnpm db:push');
} else if (error.code === 'ECONNREFUSED') {
console.error('💡 Impossible de se connecter à la base de données.');
console.error(' Vérifiez que MySQL est démarré et que DATABASE_URL est correct.');
}
console.error('');
process.exit(1);
}
}
// Exécuter le script
resetAdmin();