import { drizzle } from "drizzle-orm/mysql2"; import mysql from "mysql2/promise"; import bcrypt from "bcryptjs"; import { eq } from "drizzle-orm"; import * as schema from "../drizzle/schema.ts"; import dotenv from "dotenv"; dotenv.config(); const { users, localCredentials } = schema; // ─── Paramètres ─────────────────────────────────────────────────────────────── const TARGET_EMAIL = "o.pareige@itinova.org"; const NEW_PASSWORD = "Itinova69!"; // ───────────────────────────────────────────────────────────────────────────── async function main() { if (!process.env.DATABASE_URL) { console.error("DATABASE_URL manquant"); process.exit(1); } const connection = await mysql.createConnection(process.env.DATABASE_URL); const db = drizzle(connection); // Trouver l'utilisateur par email const result = await db .select() .from(users) .where(eq(users.email, TARGET_EMAIL)) .limit(1); if (!result.length) { console.error(`Aucun utilisateur trouvé avec l'email : ${TARGET_EMAIL}`); await connection.end(); process.exit(1); } const user = result[0]; console.log(`Utilisateur trouvé : ${user.name} (id=${user.id}, rôle=${user.sonumRole})`); // Hasher le mot de passe const passwordHash = await bcrypt.hash(NEW_PASSWORD, 12); // Insérer ou mettre à jour les credentials locaux const existingCreds = await db .select() .from(localCredentials) .where(eq(localCredentials.userId, user.id)) .limit(1); if (existingCreds.length > 0) { await db .update(localCredentials) .set({ passwordHash, updatedAt: new Date() }) .where(eq(localCredentials.userId, user.id)); console.log("Mot de passe mis à jour."); } else { await db.insert(localCredentials).values({ userId: user.id, passwordHash }); console.log("Credentials locaux créés."); } console.log(`\n✅ Connexion locale activée pour ${TARGET_EMAIL}`); console.log(` Login : ${TARGET_EMAIL}`); console.log(` Rôle : ${user.sonumRole}`); await connection.end(); } main().catch((err) => { console.error("Erreur :", err); process.exit(1); });