2025-05-25 23:11:02 +07:00
|
|
|
|
const User = require('../models/User');
|
2025-05-26 12:05:51 +07:00
|
|
|
|
const bcrypt = require('bcryptjs');
|
2025-05-25 23:11:02 +07:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Инициализирует административный аккаунт в системе
|
|
|
|
|
* Аккаунт создается с логином admin и паролем admin124
|
|
|
|
|
* Этот аккаунт будет всегда активен
|
|
|
|
|
*/
|
|
|
|
|
const initAdminAccount = async () => {
|
2025-05-26 12:11:18 +07:00
|
|
|
|
try { console.log('[ADMIN INIT] Проверка наличия административного аккаунта...');
|
2025-05-26 12:05:51 +07:00
|
|
|
|
|
2025-05-26 12:11:18 +07:00
|
|
|
|
// Проверяем, существует ли уже админ - используем правильный формат email
|
|
|
|
|
const adminExists = await User.findOne({ email: 'admin@example.com', isAdmin: true });
|
2025-05-25 23:11:02 +07:00
|
|
|
|
|
|
|
|
|
if (!adminExists) {
|
2025-05-26 12:05:51 +07:00
|
|
|
|
console.log('[ADMIN INIT] Административный аккаунт не найден. Создаю новый...');
|
|
|
|
|
|
2025-05-26 12:11:18 +07:00
|
|
|
|
// Создаем админа, если не существует - с валидным форматом email
|
2025-05-25 23:11:02 +07:00
|
|
|
|
const admin = new User({
|
|
|
|
|
name: 'Администратор',
|
2025-05-26 12:11:18 +07:00
|
|
|
|
email: 'admin@example.com', // Используем валидный email
|
2025-05-25 23:11:02 +07:00
|
|
|
|
password: 'admin124',
|
|
|
|
|
dateOfBirth: new Date('1990-01-01'), // Устанавливаем формальную дату рождения
|
|
|
|
|
gender: 'other',
|
|
|
|
|
isActive: true,
|
|
|
|
|
isAdmin: true,
|
|
|
|
|
location: {
|
|
|
|
|
city: 'Admin',
|
|
|
|
|
country: 'System'
|
2025-05-26 12:17:22 +07:00
|
|
|
|
} });
|
|
|
|
|
|
|
|
|
|
// Сохраняем админа
|
|
|
|
|
const savedAdmin = await admin.save();
|
2025-05-26 12:05:51 +07:00
|
|
|
|
if (savedAdmin) {
|
2025-05-26 12:11:18 +07:00
|
|
|
|
console.log('[ADMIN INIT] Административный аккаунт успешно создан с email: admin@example.com');
|
2025-05-26 12:05:51 +07:00
|
|
|
|
console.log('[ADMIN INIT] ID администратора:', savedAdmin._id);
|
2025-05-26 12:11:18 +07:00
|
|
|
|
console.log('[ADMIN INIT] Для входа используйте: email "admin@example.com", пароль "admin124"');
|
2025-05-26 12:05:51 +07:00
|
|
|
|
} else {
|
|
|
|
|
console.error('[ADMIN INIT] Ошибка при сохранении администратора - не возвращен объект');
|
|
|
|
|
}
|
2025-05-25 23:11:02 +07:00
|
|
|
|
} else {
|
2025-05-26 12:11:18 +07:00
|
|
|
|
console.log('[ADMIN INIT] Административный аккаунт с email "admin@example.com" уже существует');
|
2025-05-26 12:05:51 +07:00
|
|
|
|
console.log('[ADMIN INIT] ID администратора:', adminExists._id);
|
2025-05-25 23:11:02 +07:00
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
2025-05-26 12:05:51 +07:00
|
|
|
|
console.error('[ADMIN INIT] Ошибка при инициализации админ-аккаунта:', error.message);
|
|
|
|
|
console.error('[ADMIN INIT] Полная ошибка:', error);
|
2025-05-25 23:11:02 +07:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = initAdminAccount;
|