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 1/3] 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; + } +} From 04b19e74ca25483310ec6e761d6b972e10dd81eb Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Thu, 2 Oct 2025 06:34:11 +0000 Subject: [PATCH 2/3] Ensure admin user is created before the server starts Move the `ensureAdminUserExists` call to before `server.listen` in `server/index.ts`. 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 --- server/index.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/server/index.ts b/server/index.ts index b166f94..b19736a 100644 --- a/server/index.ts +++ b/server/index.ts @@ -95,16 +95,17 @@ app.use((req, res, next) => { // this serves both the API and the client. // It is the only port that is not firewalled. const port = parseInt(process.env.PORT || '5000', 10); + + // Initialiser l'utilisateur admin par défaut avant de démarrer le serveur + await ensureAdminUserExists(); + server.listen({ 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(); }); From 9d0a9dd7a6e3741aa60617820441bad52350a2a2 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Thu, 2 Oct 2025 06:34:28 +0000 Subject: [PATCH 3/3] Add default administrator password for new installations Introduces a default admin password for initial setup on private servers. Replit-Commit-Author: Agent Replit-Commit-Session-Id: ae4037a0-2a6f-4530-9bac-79b543286bda Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/397bca8c-984f-43ff-841a-10897aeb8140/ae4037a0-2a6f-4530-9bac-79b543286bda/COxOmlM