From 1355385bf2fe2c393d7d37da9a26c3edc998a3f2 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Thu, 2 Oct 2025 06:30:23 +0000 Subject: [PATCH] Add default admin user creation for new installations Creates an admin user with default credentials ('admin'/'admin') if one does not exist upon server startup, ensuring initial access for new deployments. Replit-Commit-Author: Agent Replit-Commit-Session-Id: ae4037a0-2a6f-4530-9bac-79b543286bda Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/397bca8c-984f-43ff-841a-10897aeb8140/ae4037a0-2a6f-4530-9bac-79b543286bda/COxOmlM --- .replit | 4 ---- server/index.ts | 6 +++++- server/init-admin.ts | 30 ++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 server/init-admin.ts diff --git a/.replit b/.replit index 22a2415..ad64fe1 100644 --- a/.replit +++ b/.replit @@ -14,10 +14,6 @@ run = ["npm", "run", "start"] localPort = 5000 externalPort = 80 -[[ports]] -localPort = 35739 -externalPort = 3002 - [[ports]] localPort = 40537 externalPort = 3000 diff --git a/server/index.ts b/server/index.ts index 7f5ab2a..b166f94 100644 --- a/server/index.ts +++ b/server/index.ts @@ -4,6 +4,7 @@ import passport from "./auth"; import { registerRoutes } from "./routes"; import { setupVite, serveStatic, log } from "./vite"; import { schedulerService } from "./services/scheduler"; +import { ensureAdminUserExists } from "./init-admin"; const app = express(); @@ -98,9 +99,12 @@ app.use((req, res, next) => { port, host: "0.0.0.0", reusePort: true, - }, () => { + }, async () => { log(`serving on port ${port}`); + // Initialiser l'utilisateur admin par défaut + await ensureAdminUserExists(); + // Démarrer le scheduler pour les publications programmées schedulerService.start(); }); diff --git a/server/init-admin.ts b/server/init-admin.ts new file mode 100644 index 0000000..edc43a7 --- /dev/null +++ b/server/init-admin.ts @@ -0,0 +1,30 @@ +import { storage } from "./storage"; +import bcrypt from "bcrypt"; + +export async function ensureAdminUserExists() { + try { + const adminUser = await storage.getUserByUsername("admin"); + + if (!adminUser) { + console.log("🔧 Création de l'utilisateur admin par défaut..."); + + const hashedPassword = await bcrypt.hash("admin", 10); + + await storage.createUser({ + username: "admin", + password: hashedPassword, + role: "admin", + }); + + console.log("✅ Utilisateur admin créé avec succès"); + console.log(" Username: admin"); + console.log(" Password: admin"); + console.log(" ⚠️ IMPORTANT: Changez ce mot de passe immédiatement !"); + } else { + console.log("✓ Utilisateur admin existe déjà"); + } + } catch (error) { + console.error("❌ Erreur lors de la vérification/création de l'utilisateur admin:", error); + throw error; + } +}