feat: enhance reset-admin-password script to support email and password arguments for improved flexibility
This commit is contained in:
@@ -3,7 +3,10 @@
|
|||||||
* Script de réinitialisation forcée du mot de passe admin
|
* Script de réinitialisation forcée du mot de passe admin
|
||||||
* Force la mise à jour du mot de passe du compte 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";
|
import { PrismaClient } from "@prisma/client";
|
||||||
@@ -11,37 +14,52 @@ import bcrypt from "bcryptjs";
|
|||||||
|
|
||||||
const prisma = new PrismaClient();
|
const prisma = new PrismaClient();
|
||||||
|
|
||||||
const ADMIN_EMAIL = "julienfroidefond@gmail.com";
|
const DEFAULT_ADMIN_EMAIL = "julienfroidefond@gmail.com";
|
||||||
const ADMIN_PASSWORD = process.env.ADMIN_DEFAULT_PASSWORD || "Admin@2025";
|
|
||||||
|
// 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() {
|
async function resetAdminPassword() {
|
||||||
try {
|
try {
|
||||||
console.log(`🔐 Resetting password for admin user: ${ADMIN_EMAIL}`);
|
console.log(`🔐 Resetting password for user: ${adminEmail}`);
|
||||||
console.log(`📡 MongoDB URI: ${process.env.MONGODB_URI || 'not set'}`);
|
|
||||||
|
|
||||||
// Vérifier si l'utilisateur existe
|
// Vérifier si l'utilisateur existe
|
||||||
const existingAdmin = await prisma.user.findUnique({
|
const existingAdmin = await prisma.user.findUnique({
|
||||||
where: { email: ADMIN_EMAIL },
|
where: { email: adminEmail },
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!existingAdmin) {
|
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.`);
|
console.log(`💡 Run 'npm run init-db' to create the admin user first.`);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hash le nouveau mot de passe
|
// 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
|
// Mettre à jour le mot de passe
|
||||||
await prisma.user.update({
|
await prisma.user.update({
|
||||||
where: { email: ADMIN_EMAIL },
|
where: { email: adminEmail },
|
||||||
data: { password: hashedPassword },
|
data: { password: hashedPassword },
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(`✅ Password reset successfully for ${ADMIN_EMAIL}`);
|
console.log(`✅ Password reset successfully for ${adminEmail}`);
|
||||||
console.log(` New password: ${ADMIN_PASSWORD}`);
|
console.log(` New password: ${adminPassword}`);
|
||||||
console.log(` Source: ${process.env.ADMIN_DEFAULT_PASSWORD ? 'ADMIN_DEFAULT_PASSWORD env var' : 'default value'}`);
|
|
||||||
console.log(` ⚠️ Please change the password after login!`);
|
console.log(` ⚠️ Please change the password after login!`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("❌ Error resetting admin password:", error);
|
console.error("❌ Error resetting admin password:", error);
|
||||||
|
|||||||
Reference in New Issue
Block a user