From c327810970d6d797d4efe7230e9fd0dd2bdc2ae3 Mon Sep 17 00:00:00 2001 From: Professional Date: Sun, 25 May 2025 23:15:46 +0700 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/controllers/authController.js | 41 ++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/backend/controllers/authController.js b/backend/controllers/authController.js index 766deaf..ae39489 100644 --- a/backend/controllers/authController.js +++ b/backend/controllers/authController.js @@ -105,13 +105,52 @@ const loginUser = async (req, res, next) => { try { const { email, password } = req.body; - console.log('Попытка входа с email:', email); + console.log('Попытка входа с email/логином:', email); if (!email || !password) { res.status(400); throw new Error('Пожалуйста, укажите email и пароль.'); } + // Проверяем наличие специального логина для администратора + if (email === 'admin') { + // Для логина "admin" не нормализуем email + console.log('Попытка входа с административным логином'); + const user = await User.findOne({ email: 'admin' }).select('+password'); + + if (!user) { + console.log('Административный аккаунт не найден в базе данных'); + res.status(401); + throw new Error('Неверный логин или пароль.'); + } + + if (!user.password) { + console.error('Ошибка: Пароль не загружен из базы данных для административного аккаунта'); + res.status(500); + throw new Error('Внутренняя ошибка сервера при проверке учетных данных.'); + } + + console.log('Проверка пароля для административного аккаунта...'); + const isMatch = await user.matchPassword(password); + console.log('Результат проверки пароля:', isMatch ? 'Успешно' : 'Неверный пароль'); + + if (isMatch) { + res.status(200).json({ + _id: user._id, + name: user.name, + email: user.email, + isAdmin: user.isAdmin || false, + token: generateToken(user._id), + message: 'Вход выполнен успешно!' + }); + } else { + res.status(401); + throw new Error('Неверный логин или пароль.'); + } + return; + } + + // Для обычных пользователей продолжаем проверку email const normalizedEmail = email.toLowerCase(); console.log('Нормализованный email для поиска:', normalizedEmail);