40 lines
1.5 KiB
JavaScript
40 lines
1.5 KiB
JavaScript
const logger = require('../logger');
|
|
const bcrypt = require('bcryptjs');
|
|
const moderDb = require('../moders/db');
|
|
require('dotenv').config({ path: __dirname + './config.env' });
|
|
exports.login = (req, res) => {
|
|
const { password } = req.body;
|
|
if (password === process.env.ADMIN_PASSWORD) {
|
|
req.session.isAuthenticated = true;
|
|
logger.info('Login successful');
|
|
res.status(200).send('Login successful');
|
|
} else {
|
|
res.status(401).send('Invalid password');
|
|
logger.warn('Неверный пароль');
|
|
}
|
|
};
|
|
|
|
exports.getCsrfToken = (req, res) => {
|
|
res.json({ csrfToken: req.csrfToken() });
|
|
};
|
|
|
|
exports.moderLogin = async (req, res) => {
|
|
const { username, password } = req.body;
|
|
try {
|
|
const [users] = await moderDb.query('SELECT * FROM users WHERE username = ?', [username]);
|
|
if (users.length === 0) {
|
|
return res.status(401).json({ message: 'Неверные учетные данные' });
|
|
}
|
|
const user = users[0];
|
|
const match = await bcrypt.compare(password, user.password_hash);
|
|
if (!match) {
|
|
return res.status(401).json({ message: 'Неверные учетные данные' });
|
|
}
|
|
req.session.moderId = user.id;
|
|
req.session.moderName = user.username;
|
|
res.json({ message: 'Успешный вход', username: user.username });
|
|
} catch (error) {
|
|
logger.error('Ошибка входа модератора:', error);
|
|
res.status(500).json({ message: 'Ошибка сервера' });
|
|
}
|
|
}; |