#!/usr/bin/env node /** * Script de réinitialisation forcée du mot de passe admin * Force la mise à jour du mot de passe du compte admin * * Usage: * pnpm reset-admin-password [nouveau-mot-de-passe] * pnpm reset-admin-password [email] [nouveau-mot-de-passe] * docker compose exec app pnpm reset-admin-password [nouveau-mot-de-passe] */ import { PrismaClient } from "@prisma/client"; import bcrypt from "bcryptjs"; const prisma = new PrismaClient(); const DEFAULT_ADMIN_EMAIL = "julienfroidefond@gmail.com"; // Récupérer les arguments de la ligne de commande const args = process.argv.slice(2); let adminEmail = DEFAULT_ADMIN_EMAIL; let adminPassword = process.env.ADMIN_DEFAULT_PASSWORD || "Admin@2025"; if (args.length === 1) { // Un seul argument = nouveau mot de passe pour l'email par défaut adminPassword = args[0]; } else if (args.length === 2) { // Deux arguments = email et nouveau mot de passe adminEmail = args[0]; adminPassword = args[1]; } else if (args.length > 2) { console.error("❌ Usage: pnpm reset-admin-password [email] [nouveau-mot-de-passe]"); console.error(" Si l'email est omis, utilise l'email par défaut"); process.exit(1); } async function resetAdminPassword() { try { console.log(`🔐 Resetting password for user: ${adminEmail}`); // Vérifier si l'utilisateur existe const existingAdmin = await prisma.user.findUnique({ where: { email: adminEmail }, }); if (!existingAdmin) { console.error(`❌ User ${adminEmail} does not exist!`); console.log(`💡 Run 'npm run init-db' to create the admin user first.`); process.exit(1); } // Hash le nouveau mot de passe const hashedPassword = await bcrypt.hash(adminPassword, 10); // Mettre à jour le mot de passe await prisma.user.update({ where: { email: adminEmail }, data: { password: hashedPassword }, }); console.log(`✅ Password reset successfully for ${adminEmail}`); console.log(` New password: ${adminPassword}`); console.log(` ⚠️ Please change the password after login!`); } catch (error) { console.error("❌ Error resetting admin password:", error); throw error; } finally { await prisma.$disconnect(); } } async function main() { console.log("🔧 Starting admin password reset..."); try { await resetAdminPassword(); console.log("✅ Admin password reset completed"); process.exit(0); } catch (error) { console.error("❌ Admin password reset failed:", error); process.exit(1); } } main();