mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-23 06:58:12 +02:00
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
This commit is contained in:
1 parent
f50109ee81
commit
1355385bf2
3 files changed
+35
-5
No files matched your search
@@ -14,10 +14,6 @@ run = ["npm", "run", "start"]
|
|||||||
localPort = 5000
|
localPort = 5000
|
||||||
externalPort = 80
|
externalPort = 80
|
||||||
|
|
||||||
[[ports]]
|
|
||||||
localPort = 35739
|
|
||||||
externalPort = 3002
|
|
||||||
|
|
||||||
[[ports]]
|
[[ports]]
|
||||||
localPort = 40537
|
localPort = 40537
|
||||||
externalPort = 3000
|
externalPort = 3000
|
||||||
|
|||||||
+5
-1
@@ -4,6 +4,7 @@ import passport from "./auth";
|
|||||||
import { registerRoutes } from "./routes";
|
import { registerRoutes } from "./routes";
|
||||||
import { setupVite, serveStatic, log } from "./vite";
|
import { setupVite, serveStatic, log } from "./vite";
|
||||||
import { schedulerService } from "./services/scheduler";
|
import { schedulerService } from "./services/scheduler";
|
||||||
|
import { ensureAdminUserExists } from "./init-admin";
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
@@ -98,9 +99,12 @@ app.use((req, res, next) => {
|
|||||||
port,
|
port,
|
||||||
host: "0.0.0.0",
|
host: "0.0.0.0",
|
||||||
reusePort: true,
|
reusePort: true,
|
||||||
}, () => {
|
}, async () => {
|
||||||
log(`serving on port ${port}`);
|
log(`serving on port ${port}`);
|
||||||
|
|
||||||
|
// Initialiser l'utilisateur admin par défaut
|
||||||
|
await ensureAdminUserExists();
|
||||||
|
|
||||||
// Démarrer le scheduler pour les publications programmées
|
// Démarrer le scheduler pour les publications programmées
|
||||||
schedulerService.start();
|
schedulerService.start();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user