diff --git a/backend/.env.example b/backend/.env.example index 065679f..e771b4e 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -17,8 +17,11 @@ GOOGLE_CLIENT_ID=your_google_client_id_here # MongoDB (used for scan history / analytics dashboard) MONGODB_URI=mongodb+srv://:@/?retryWrites=true&w=majority +# Default Admin +ADMIN_EMAIL=admin@example.com +ADMIN_PASSWORD=admin123 # IMAP scheduled scanning (issue #186) — used to encrypt stored inbox credentials at rest. # Generate with: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" IMAP_ENCRYPTION_KEY= # Where the sqlite store for IMAP connections/scan history lives (defaults to backend/imap_connections.db) -IMAP_DB_PATH= \ No newline at end of file +IMAP_DB_PATH= 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 38b25e7..f7e246c 100644 --- a/backend/server.js +++ b/backend/server.js @@ -5,6 +5,7 @@ const validateEnv = require('./utils/validateEnv'); validateEnv(); // Validate environment variables 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"); @@ -22,6 +23,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());