Reflex/backend/utils/test-admin.js
2025-05-26 12:05:51 +07:00

168 lines
4.0 KiB
JavaScript

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 {
// Check if admin exists
let admin = await User.findOne({ email: 'admin' });
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: 'Администратор',
email: 'admin',
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();
console.log('\nAdmin Credentials:');
console.log('1. Login: admin');
console.log(' Password: admin124');
if (adminAlias) {
console.log('2. Login: admin@example.com');
console.log(' Password: admin124');
}
console.log('\nDone!');
process.exit(0);
};
main();