From 24783a0c45a6a58ae28111d79fc6ef7995ee9c71 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Fri, 14 Nov 2025 16:54:34 +0100 Subject: [PATCH] feat: enhance reset-admin-password script to support email and password arguments for improved flexibility --- scripts/reset-admin-password.mjs | 42 +++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/scripts/reset-admin-password.mjs b/scripts/reset-admin-password.mjs index 20e9f0b..d5589aa 100755 --- a/scripts/reset-admin-password.mjs +++ b/scripts/reset-admin-password.mjs @@ -3,7 +3,10 @@ * Script de réinitialisation forcée du mot de passe admin * Force la mise à jour du mot de passe du compte admin * - * Usage: docker compose exec app pnpm reset-admin-password + * 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"; @@ -11,37 +14,52 @@ import bcrypt from "bcryptjs"; const prisma = new PrismaClient(); -const ADMIN_EMAIL = "julienfroidefond@gmail.com"; -const ADMIN_PASSWORD = process.env.ADMIN_DEFAULT_PASSWORD || "Admin@2025"; +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 admin user: ${ADMIN_EMAIL}`); - console.log(`📡 MongoDB URI: ${process.env.MONGODB_URI || 'not set'}`); + console.log(`🔐 Resetting password for user: ${adminEmail}`); // Vérifier si l'utilisateur existe const existingAdmin = await prisma.user.findUnique({ - where: { email: ADMIN_EMAIL }, + where: { email: adminEmail }, }); if (!existingAdmin) { - console.error(`❌ Admin user ${ADMIN_EMAIL} does not exist!`); + 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(ADMIN_PASSWORD, 10); + const hashedPassword = await bcrypt.hash(adminPassword, 10); // Mettre à jour le mot de passe await prisma.user.update({ - where: { email: ADMIN_EMAIL }, + where: { email: adminEmail }, data: { password: hashedPassword }, }); - console.log(`✅ Password reset successfully for ${ADMIN_EMAIL}`); - console.log(` New password: ${ADMIN_PASSWORD}`); - console.log(` Source: ${process.env.ADMIN_DEFAULT_PASSWORD ? 'ADMIN_DEFAULT_PASSWORD env var' : 'default value'}`); + 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);