Я работаю над распознавателем мутаций, используя GraphQL Yoga и Prisma для моего бэк-энда. Мутация предназначена для выполнения аутентификации и возврата JWT при успешном входе в систему. Мутация в настоящее время выглядит так:
loginEmployer: async (_, args, context, info) => {
const employer = await context.prisma.query.employer({
where: {
name: args.name,
}
})
const match = await bcrypt.compare(args.password, employer.hashedPassword);
if (match) {
return jwt.sign(employer, jwtSecret);
} else {
return "";
}
}
Алгоритм довольно прост, как вы можете видеть: найдите работодателя с совпадающим именем, сравните сохраненный хешированный пароль с входящим, используя bcrypt, и верните подписанный jwt, если есть совпадение. Довольно стандартные вещи.
Однако в случае, если совпадения нет или если работодатель не соответствует названию, я бы хотел ответить 403. В экспрессе я бы просто сделал res.status(403).send({error: "No such username/password"})
, но с GraphQL Yoga, я немного потерян и не смог найти никакой документации о том, как это сделать.
Спасибо за любые ответы, разбирающие это или указывающие мне в правильном направлении:)