Проблема при входе в аккаунт на сервере(node.js, mongoDB)
Я только недавно начал изучать серверы. Когда обрабатывается if(!user) мне всегда выдает json, res.status(404).json({ message: 'User not found' }); вне зависимости от того, совпадают електронные почты или нет. Я думаю что router и сервер правильно работает, но могу если что дать их код. Я пробовал разные решения, stackoverflow, GitHub, но в конце оставил это, которое наиболее распостраненное. Перепроверял все, смотрел на ошибки, гайды на youtube, но четно. Мне нужна только помощь в проверке login и password(в базе password хеширован через bcrypt) в базе данных. В сессиях, я попробую сам разобраться. Вот код контроллера log_reg-controller.js
const Users = require('../models/users');
const createPath = require('../helpers/create-path');
const { handleError } = require('../controllers/error-controller');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const secret = require('../server');
const getLogsuccess = (req, res) => {
const title = 'Залогінен';
res.render(createPath('login_success'), { title });
}
const getLog = (req, res) => {
const title = 'Логін';
res.render(createPath('form'), { title });
}
const postLog = async (req, res) => {
const { login, password, roles } = req.body;
try {
const user = await Users.findOne({ login: login });
if (!user) {
return res.status(404).json({ message: 'User not found' });
}
const hashedPass = bcrypt.hashSync(toString(password), 7);
const passwordMatch = await user.compareSync(hashedPass, user.password);
if (!passwordMatch) {
return res.status(401).json({ message: 'Incorrect password' });
}
const token = jwt.sign({ userId: user._id }, secret, {
expiresIn: '1 hour'
});
res.json({ token });
res.redirect(createPath('login_success'));
} catch (error) {
console.log(error);
res.status(500).json({ message: "Не удалось авторизоваться." });
}
};
const getRegsuccess = (req, res) => {
const title = 'Акаунт зареєстрован';
res.render(createPath('registration_success'), { title });
}
const postReg = (req, res) => {
const { login, password, roles } = req.body;
let hashPassword = bcrypt.hashSync(password, 7);
const newUser = new Users({ login, password: hashPassword, roles: "USER"});
newUser
.save()
.then((result) => res.redirect('/registration_success'))
.catch((error) => handleError(res, error))
}
const getReg = (req, res) => {
const title = 'Реєстрація';
res.render(createPath('registration'), { title });
}
module.exports = {
getLogsuccess,
postLog,
getLog,
getRegsuccess,
postReg,
getReg
}