neo4j makeAugmentedSchema?

#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);
    }
  }
}
  

Надеюсь, это поможет!