Size: a a a

GraphQL — русскоговорящее сообщество

2021 February 03

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Leonid Rezvitsky
Привет! У меня такая ситуация. Когда я авторизовываюсь то получаю токен и дальше я его буду использовать для получения какой-либо информации. Я написал валидацию но проблема в том что если я хочу авторизоваться или создать аккаунт то все равно он просит токен. Можно ли как то игнорировать валидацию токена для входа и создания аккаунта? Можно было бы написать проверку на if (
authorization
) { Но это не совсем правильный подход.  Код:
const server = new ApolloServer({
 typeDefs,
 resolvers,
 context: ({ req }) => {
   
     const authorization = req.headers.authorization || null

     let loggedIn

     const token = authorization.replace('Bearer ', '')

   try {
     loggedIn = jwt.verify(token, 'somesupersecretkey')
   } catch (error) {
     throw new AuthenticationError('you must be logged in to query this schema')
   }
   
   return {
         loggedIn,
     models: {
       User,
       Page,
       Post,
       Audio,
       Photo
     }
   }
 }
})
Мы у себя вынесли всю авторизацию на отдельный эндпоинт. Это проще в обслуживании, меньше риска что неавторизованные пользователи получат доступ к закрытым данным.

Типа один graphql для гостей, второй для авторизированных.
источник

LR

Leonid Rezvitsky in GraphQL — русскоговорящее сообщество
Понял, спасибо.
источник

Х

Харальд in GraphQL — русскоговорящее сообщество
Привет. Подскажите, пожалуйста. Есть mern ecommerce, как там правильно реализовать подкатегории продуктов, чтобы при выборе корневой в выборку попадали все продукты из дочерних категорий.
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Leonid Rezvitsky
Привет! У меня такая ситуация. Когда я авторизовываюсь то получаю токен и дальше я его буду использовать для получения какой-либо информации. Я написал валидацию но проблема в том что если я хочу авторизоваться или создать аккаунт то все равно он просит токен. Можно ли как то игнорировать валидацию токена для входа и создания аккаунта? Можно было бы написать проверку на if (
authorization
) { Но это не совсем правильный подход.  Код:
const server = new ApolloServer({
 typeDefs,
 resolvers,
 context: ({ req }) => {
   
     const authorization = req.headers.authorization || null

     let loggedIn

     const token = authorization.replace('Bearer ', '')

   try {
     loggedIn = jwt.verify(token, 'somesupersecretkey')
   } catch (error) {
     throw new AuthenticationError('you must be logged in to query this schema')
   }
   
   return {
         loggedIn,
     models: {
       User,
       Page,
       Post,
       Audio,
       Photo
     }
   }
 }
})
можете написать авторизацию с использованием директив, удобно помечать какие query, mutation требуют авторизации, какие нет. Либо использовать graphql-shield
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Харальд
Привет. Подскажите, пожалуйста. Есть mern ecommerce, как там правильно реализовать подкатегории продуктов, чтобы при выборе корневой в выборку попадали все продукты из дочерних категорий.
А причем тут gql если проблема алгоритмическая и требует просто написания правильного запроса в БД.
источник

Х

Харальд in GraphQL — русскоговорящее сообщество
Олег Линьков
А причем тут gql если проблема алгоритмическая и требует просто написания правильного запроса в БД.
А вы можете подсказать пример правильной реализации?
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Харальд
А вы можете подсказать пример правильной реализации?
Есть категории, у категорий есть подкатегории, к которым прикреплены товары. Достаточно подкатегориям проставить внешний ключ к родителю и при выборке по родителю, джойнить подкатегории и их товары
источник

LR

Leonid Rezvitsky in GraphQL — русскоговорящее сообщество
Олег Линьков
А причем тут gql если проблема алгоритмическая и требует просто написания правильного запроса в БД.
я подключил все модели в context и вызываю в любом resolver. Я считаю это правильнее.
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Leonid Rezvitsky
я подключил все модели в context и вызываю в любом resolver. Я считаю это правильнее.
вы наверно не на то, отвечаете. Если про проверку авторизации, вы хотите реализовать внутри резолверов, а не одним мидлваром - то при росте схемы, вы будете зашиваться
источник

LR

Leonid Rezvitsky in GraphQL — русскоговорящее сообщество
извиняюсь не понял вас)
источник

LR

Leonid Rezvitsky in GraphQL — русскоговорящее сообщество
Олег Линьков
вы наверно не на то, отвечаете. Если про проверку авторизации, вы хотите реализовать внутри резолверов, а не одним мидлваром - то при росте схемы, вы будете зашиваться
мне выше уже предложили идею с разными endpoint
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Leonid Rezvitsky
извиняюсь не понял вас)
Вы процитировали ответ на другой вопрос, а не на ваш
источник

AZ

Abdubek Zholay in GraphQL — русскоговорящее сообщество
Leonid Rezvitsky
мне выше уже предложили идею с разными endpoint
можно и вот так
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Почему просто не сделать мидлвару а создавать огород в схеме ?)
источник

АК

Алексей Козин... in GraphQL — русскоговорящее сообщество
Abdubek Zholay
можно и вот так
Это в 10 раз лучше отдельного эндпоинта
источник

AZ

Abdubek Zholay in GraphQL — русскоговорящее сообщество
Abdubek Zholay
можно и вот так
такой вариант мне кажется понятный в поиске нужной вещи, чем список queries-ов, структурированно получается
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Abdubek Zholay
такой вариант мне кажется понятный в поиске нужной вещи, чем список queries-ов, структурированно получается
директивы и созданы на этот счет, они отображаются в схеме и фронту будет удобнее
источник

MV

Mark Vartanyan in GraphQL — русскоговорящее сообщество
Abdubek Zholay
можно и вот так
Тоже так сделал у себя)
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
From Wes Bos a sec ago: "Advanced React & GraphQL: totally updated and re-recorded!"
источник

I

Ilya in GraphQL — русскоговорящее сообщество
Ребят, кто-нибудь сталкивался с такой проблемой:

В React Native, когда пытаюсь послать мутацию вылетает ошибка:

Данные в мутацию идут корректные, проверял, сама мутация работает, тестил её через Playground, проблема точно на стороне фронта, но в чём она может быть вообще не понимаю
источник