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

Общаемся на темы, посвященные GraphQL и опыту его использования. Проблемы. Новости. Решения. Вам могут быть полезны: @apollo_ru, @react_js, @vuejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание в чате было полезным и комфортным.

352 members

Архив канала @graphql_ru 6 апреля 2018 г.

03:39:53 ДП
User 164559967
User 81215216
Если amount и location это общие поля и есть на каждом из продуктов, то продукт это интерфейс
Над таким вариантом тоже думал, но мне необходимо чтобы, клиент просто запросил
type Tovar {
 amount: Int
 location: String
 productSpecification: Product
}
и в productSpecification выходили только поля:
productSpecification {
 sort: "Твердая"
 class: "3"
}или 
productSpecification {
 belizna: "55%"
 idk: "2"
}т.е. зависимости от того что вернет сервер, чтобы клиенту не приходилось выяснять Мука это или Пшеница. А через interface клиенту нужно выяснять что за товар.
03:47:11 ДП
User 164559967
User 224769697
Ребят, а кто что для авторизации использует в аполло ?
Я использовал классическую авторизцию через auth token:
const authLink = setContext((_, { headers }) => {
      // get the authentication token from local storage if it exists
      let token = localStorage.getItem('token');
      // return the headers to the context so httpLink can read them
      const h = {
        ...headers,
        'meteor-login-token': token,
      };
      console.log(h);
      return {
        headers: h
      };
    });
03:51:15 ДП
User 164559967
потом на apollo сервере принимаю, делаю проверку и прикрепляю его в context. И в resolvers получаю userId
currentUser (obj, args, context) {
    console.log(context.userId)
}
03:54:13 ДП
User 164559967
Правда в этой схеме меня напрягает что я должен постоянно проверять есть ли userId, я уже не говорю о ролях. В общем пока на стадии решения этой задачи :)
06:28:31 ДП
User 224769697
в Meteor.js тоже постоянно надо проверять userId )
06:28:46 ДП
User 224769697
а авторизацию через соц сети тоже тогда надо будет самому прикручивать?
06:29:45 ДП
User 164559967
Есть пакет https://github.com/orionsoft/meteor-apollo-accounts
github.com/orionsoft/meteor-apollo-accounts
meteor-apollo-accounts - Meteor accounts in GraphQL
06:30:12 ДП
User 164559967
там реализовано соц сети
06:30:33 ДП
User 224769697
а ты пробовал этот пакет?)
06:31:05 ДП
User 164559967
Пока пробовал. Но его рекомендует документация apollo
06:32:35 ДП
User 224769697
а для этого сервер должен быть на метеоре ?(
06:33:15 ДП
User 164559967
да. это пакет только для метеора
06:37:49 ДП
User 164559967
тот код который писал ранее удобен тем что он более менее универсален как для web так и для native mobile
06:38:15 ДП
User 164559967
ну и бэк может быть тоже любым
06:38:49 ДП
User 224769697
а использовать passportjs со своими ендпоинтами /login /logout и т.д. это плохая идея ?) тогда вроде не нужно будет париться
06:39:16 ДП
User 224769697
а в граф передавать уже данные юзера
06:40:42 ДП
User 164559967
passport js к сожалению не юзал )
06:40:59 ДП
User 164559967
но по докам смотрб вроде все есть
06:41:41 ДП
User 164559967
сброс пароля, пользователя подверждение по email есть здесь?
06:44:18 ДП
User 224769697
чёт сходу не нашел такого в доке
06:44:47 ДП
User 164559967
Вот я тоже об этом :)
06:45:25 ДП
User 164559967
в Meteor че хорошо это все уже есть в коробке
08:01:48 ДП
User 224769697
в общем, если кому интересно, решил делать авторизацию без graphql, а потом просто передавать userid в контекст графа. А потом можно будет добавить клиентский сервер для SSR, и авторизацию повесить на него, а на сервер с graphql передавать уже запросы с userid в контексте
кто то видит какие то минусы такого подхода ?)
08:42:21 ДП
User 83376394
Так и нужно делать, графкуэль в основном нацелен для взаимодествия с данными. Авторизация всего лишь запрос на идентификацию сервиса.
08:45:04 ДП
User 164559967
Такая схема сможет работать если фронт и бэк разных серверах?
08:45:34 ДП
User 164559967
на разных серверах*?
08:47:16 ДП
User 224769697
Вроде должна, у фронт сервера только доступ к бд должен быть для проверки данных юзера, а потом просто к запросам на бэк добавлять юзерид
08:49:21 ДП
User 224769697
И граф получается вообще об авторизации ничего знать не будет, к нему просто будет юзерИд приходить из доверенного источника (фронт сервера)
08:50:16 ДП
User 164559967
Тогда я не вижу никаких минусов. Правда незнаю насколько это безопасно :) Лично я БД доверяю только бэку
08:51:01 ДП
User 224769697
Ну так клиентский сервер это тоже типо бэк)
08:51:13 ДП
User 224769697
Только с определенным функционалом
08:54:52 ДП
User 224769697
И для юзеров можно отдельно завести Редис, клиентскому серверу давать доступ только к нему, а остальные данные хранить в монге и к ней доступ только у граф-сервера
08:55:19 ДП
User 224769697
С метеором все было проще 😃
08:55:57 ДП
User 83376394
Так ведь можно на уровне миддлварей проверять токены авторизации, или куда мощнее использовать систему пермишенов, где авторизация будет всего лишь одним из возможных ограничений.
08:57:07 ДП
User 224769697
Да, пока я так и собираюсь делать, а когда доросту до ssr, хочу вынести это на отдельный сервер