From e8d874132e4224e8fc4c18d73b74f88965efed06 Mon Sep 17 00:00:00 2001 From: Aharshi3614 Date: Tue, 23 Jun 2026 07:53:01 +0530 Subject: [PATCH] feat: add default admin user seeding on first server start --- backend/.env.example | 6 +++++- backend/seeders/adminSeeder.js | 26 ++++++++++++++++++++++++++ backend/server.js | 2 ++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 backend/seeders/adminSeeder.js diff --git a/backend/.env.example b/backend/.env.example index 8d082aa..76538e3 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -15,4 +15,8 @@ URL_VECTORIZER_PATH=url_vectorizer.pkl GOOGLE_CLIENT_ID=your_google_client_id_here # MongoDB (used for scan history / analytics dashboard) -MONGODB_URI=mongodb+srv://:@/?retryWrites=true&w=majority \ No newline at end of file +MONGODB_URI=mongodb+srv://:@/?retryWrites=true&w=majority + +# Default Admin +ADMIN_EMAIL=admin@example.com +ADMIN_PASSWORD=admin123 \ No newline at end of file diff --git a/backend/seeders/adminSeeder.js b/backend/seeders/adminSeeder.js new file mode 100644 index 0000000..88cabd7 --- /dev/null +++ b/backend/seeders/adminSeeder.js @@ -0,0 +1,26 @@ +const User = require('../models/User'); + +const seedAdminUser = async () => { + try{ + const adminExists = await User.findOne({ role: 'admin' }); + if(!adminExists){ + const email = process.env.ADMIN_EMAIL || 'admin@example.com'; + const password = process.env.ADMIN_PASSWORD || 'admin123'; + + await User.create({ + email, + password, + role: 'admin', + name: 'Admin' + }); + + conso;e.log('Admin user created successfully'); + cnsole.log(`Email: ${email}`); + console.log(`Password: ${password}`); + } + }catch(error){ + console.error('Error seeding admin user:', error); + } +}; + +module.exports = seedAdminUser; \ No newline at end of file diff --git a/backend/server.js b/backend/server.js index da7b7bc..eb4954c 100644 --- a/backend/server.js +++ b/backend/server.js @@ -2,6 +2,7 @@ require("dotenv").config(); const dns = require("dns"); dns.setServers(["8.8.8.8", "1.1.1.1"]); // ensure SRV records resolve on all networks const express = require("express"); +const seedAdminUser = require("./seeders/adminSeeder"); const { getHealthStatus } = require('./utils/healthCheck'); const cors = require("cors"); const axios = require("axios"); @@ -19,6 +20,7 @@ const app = express(); mongoose .connect(process.env.MONGODB_URI) .then(() => console.log("✅ MongoDB connected")) + seedAdminUser() .catch((err) => console.error("❌ MongoDB connection error:", err)); app.use(cors());