2025-05-26 12:05:51 +07:00
|
|
|
const mongoose = require('mongoose');
|
|
|
|
const bcrypt = require('bcryptjs');
|
|
|
|
const User = require('../models/User');
|
|
|
|
const dotenv = require('dotenv');
|
|
|
|
|
|
|
|
// Load environment variables
|
|
|
|
dotenv.config();
|
|
|
|
|
|
|
|
// Connect to MongoDB
|
|
|
|
const connectDB = async () => {
|
|
|
|
try {
|
|
|
|
console.log('MongoDB URI:', process.env.MONGO_URI);
|
|
|
|
await mongoose.connect(process.env.MONGO_URI);
|
|
|
|
console.log('MongoDB Connected');
|
|
|
|
return true;
|
|
|
|
} catch (error) {
|
|
|
|
console.error('MongoDB Connection Error:', error);
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// Function to create admin
|
|
|
|
const createAdmin = async () => {
|
|
|
|
try {
|
2025-05-26 12:11:18 +07:00
|
|
|
// Check if admin exists with valid email format
|
|
|
|
let admin = await User.findOne({ email: 'admin@example.com' });
|
2025-05-26 12:05:51 +07:00
|
|
|
|
|
|
|
if (admin) {
|
|
|
|
console.log('Admin user already exists:');
|
|
|
|
console.log({
|
|
|
|
id: admin._id,
|
|
|
|
name: admin.name,
|
|
|
|
email: admin.email,
|
|
|
|
isAdmin: admin.isAdmin
|
|
|
|
});
|
|
|
|
|
|
|
|
// Update admin to ensure correct properties
|
|
|
|
admin.name = 'Администратор';
|
|
|
|
admin.isAdmin = true;
|
|
|
|
admin.isActive = true;
|
|
|
|
await admin.save();
|
|
|
|
|
|
|
|
console.log('Admin user updated');
|
|
|
|
return admin;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Create new admin user if doesn't exist
|
|
|
|
const salt = await bcrypt.genSalt(10);
|
|
|
|
const hashedPassword = await bcrypt.hash('admin124', salt);
|
|
|
|
|
|
|
|
admin = new User({
|
|
|
|
name: 'Администратор',
|
2025-05-26 12:11:18 +07:00
|
|
|
email: 'admin@example.com', // Use valid email format
|
2025-05-26 12:05:51 +07:00
|
|
|
password: hashedPassword,
|
|
|
|
dateOfBirth: new Date('1990-01-01'),
|
|
|
|
gender: 'other',
|
|
|
|
isActive: true,
|
|
|
|
isAdmin: true,
|
|
|
|
location: {
|
|
|
|
city: 'Admin',
|
|
|
|
country: 'System'
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
await admin.save();
|
|
|
|
console.log('Admin user created successfully:');
|
|
|
|
console.log({
|
|
|
|
id: admin._id,
|
|
|
|
name: admin.name,
|
|
|
|
email: admin.email,
|
|
|
|
isAdmin: admin.isAdmin
|
|
|
|
});
|
|
|
|
|
|
|
|
return admin;
|
|
|
|
} catch (error) {
|
|
|
|
console.error('Error creating admin:', error);
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// Create admin alias with email = admin@example.com
|
|
|
|
const createAdminAlias = async () => {
|
|
|
|
try {
|
|
|
|
// Check if admin@example.com exists
|
|
|
|
let adminAlias = await User.findOne({ email: 'admin@example.com' });
|
|
|
|
|
|
|
|
if (adminAlias) {
|
|
|
|
console.log('Admin alias already exists');
|
|
|
|
return adminAlias;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find the main admin user
|
|
|
|
const mainAdmin = await User.findOne({ email: 'admin' });
|
|
|
|
if (!mainAdmin) {
|
|
|
|
console.error('Cannot create admin alias: main admin account not found');
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Create admin alias
|
|
|
|
const salt = await bcrypt.genSalt(10);
|
|
|
|
const hashedPassword = await bcrypt.hash('admin124', salt);
|
|
|
|
|
|
|
|
adminAlias = new User({
|
|
|
|
name: 'Администратор',
|
|
|
|
email: 'admin@example.com',
|
|
|
|
password: hashedPassword,
|
|
|
|
dateOfBirth: new Date('1990-01-01'),
|
|
|
|
gender: 'other',
|
|
|
|
isActive: true,
|
|
|
|
isAdmin: true,
|
|
|
|
location: {
|
|
|
|
city: 'Admin',
|
|
|
|
country: 'System'
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
await adminAlias.save();
|
|
|
|
console.log('Admin alias created successfully:');
|
|
|
|
console.log({
|
|
|
|
id: adminAlias._id,
|
|
|
|
name: adminAlias.name,
|
|
|
|
email: adminAlias.email,
|
|
|
|
isAdmin: adminAlias.isAdmin
|
|
|
|
});
|
|
|
|
|
|
|
|
return adminAlias;
|
|
|
|
} catch (error) {
|
|
|
|
console.error('Error creating admin alias:', error);
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// Main function
|
|
|
|
const main = async () => {
|
|
|
|
console.log('Testing Admin Creation...');
|
|
|
|
|
|
|
|
// Connect to database
|
|
|
|
const connected = await connectDB();
|
|
|
|
if (!connected) {
|
|
|
|
console.error('Failed to connect to database');
|
|
|
|
process.exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Create admin user
|
|
|
|
const admin = await createAdmin();
|
|
|
|
if (!admin) {
|
|
|
|
console.error('Failed to create admin user');
|
|
|
|
process.exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Create admin alias
|
|
|
|
const adminAlias = await createAdminAlias();
|
2025-05-26 12:11:18 +07:00
|
|
|
console.log('\nAdmin Credentials:');
|
|
|
|
console.log('Email: admin@example.com');
|
|
|
|
console.log('Password: admin124');
|
|
|
|
console.log('\nYou can also use "admin" as username and "admin124" as password');
|
2025-05-26 12:05:51 +07:00
|
|
|
|
|
|
|
console.log('\nDone!');
|
|
|
|
process.exit(0);
|
|
|
|
};
|
|
|
|
|
|
|
|
main();
|