У меня есть POST-маршрут, который принимает имя пользователя и пароль и возвращает токен при успешном входе в систему. Если имя пользователя или пароль не указаны, возвращается ошибка. Однако, если я введу неправильное имя пользователя или пароль, я все равно получаю токен, сгенерированный из предоставленной информации. Как я могу проверить информацию, возвращаемую из базы данных, чтобы вернуть ту же самую ошибку имени пользователя или пароля? Это мой маршрут:
router.post('/login', (req, res) => {
if (req.body.username == '' || req.body.password == '') {
res.status(401).send({ error: "Wrong username or password" });
} else {
queries.login(req.body.username, req.body.password).then((user) => {
if (res.error) {
res.status(401).send({ error: 'Wrong username or password' });
}
res.json(auth.getToken(user.id, user.username));
});
}
});
И это мой запрос:
async login(username, password) {
let getUser = await knex('users').where('username', username);
let user = getUser[0];
try {
if (await argon.verify(user.password_hash, password)) {
return user;
}
} catch (e) {
return e;
}
}