#neo4j #graphql
#neo4j #graphql
Вопрос:
Я создаю API базы данных с помощью graphql и Neo4j. Я создаю свою схему, используя makeAugmentedSchema, которая поступает из пакета neo4j-graphql-js, который генерировал для вас мутации и запросы на основе вашей схемы. Я пытаюсь добавить некоторые пользовательские разрешения, чтобы помочь аутентификации пользователей, однако я могу понять, как вызвать существующие мутации, созданные makeAugmentedSchema, или если это вообще возможно?
const schema = makeAugmentedSchema({
typeDefs,
resolvers,
config: {
auth: {
isAuthenticated: true,
}
}
});
Это находится в моем файле сервера, где я создаю эту расширенную схему, которая создает мутации, такие как create, update и delete. Мне трудно разобраться в том, как обрабатывать аутентификацию, поэтому я пытаюсь создать пользовательский распознаватель с именем registerUser, который шифрует пароль, а затем запускает мутацию CreateUser после, но не уверен, как ввести эти существующие мутации. Вот как это выглядит сейчас.
import bcrypt from 'bcrypt';
import { schema } from './graphql-schema';
export const resolvers = {
Mutation: {
registerUser: async (_, { email, password }) => {
const hashPassword = await bcrypt.hash(password, 10);
console.log(schema, 'herrrr');
await schema.User.create({
email,
password: hashPassword
})
return true;
}
}
}
Я хочу обрабатывать аутентификацию без использования Auth0. Будучи новичком в neo4j и не совсем уверенным в наилучшем подходе, я был бы признателен за любые советы о том, как это сделать.
Комментарии:
1. Вы когда-нибудь находили решение этой проблемы?
2. Я также ищу решение для этого. Нигде не могу найти примеров.
Ответ №1:
Итак, вы деконструируете args
параметр, чтобы получить пароль и хэшировать его перед созданием пользователя. Вместо того, чтобы создавать новый преобразователь для обработки этого хеширования, вы могли бы просто переопределить здесь преобразователь CreateUser, а затем передать измененный args
neo4jgraphql
вызов, например:
import bcrypt from 'bcrypt';
import { schema } from './graphql-schema';
export const resolvers = {
Mutation: {
CreateUser: async (obj, args, context, info) => {
const password = await bcrypt.hash(password, 10);
args = {
...args,
password,
}
return neo4jgraphql(obj, args, context, info);
}
}
}
Надеюсь, это поможет!