# ☢️ Ядро

Вот мы и дошли до ядра...

# И так ядро что это такое?

Ядро - это главный и единственный путь доступа этакий entrypoint для доступа в экосистему Handy.

# Главные части платформы

  • Сервисы (Datawarehouse, UTMURL, и т.д.)
  • Доверенные клиенты (Боты)
  • Пользователи (Обычные клиенты)
  • Компании

# Начало Работы локально


# GraphQL

# Вот подборка ресурсов для изучения технологии

# GraphQL Playground

Playground

# Авторизация

Мы используем Firebase Authentication для авторизации пользователей.

# Авторизация нативных компонентов

Вам понадобятся токены доступа для запроса авторизации у Firebase. За этим можно обратится к Михаилу.

# Пример создания клиента ядра в Javascript (Web/Node.js)

import { ApolloClient } from "apollo-client";
import { InMemoryCache } from "apollo-cache-inmemory";
import { HttpLink } from "apollo-link-http";
import * as firebase from "firebase/app";
import "firebase/auth";
// Or using `require`
// const firebase = require("firebase");
// require("firebase/auth");

// TODO: Replace the following with your app's Firebase project configuration
const firebaseConfig = {
  // ...
};

// TODO: Do User Auth
// https://firebase.google.com/docs/auth/web/password-auth
// https://firebase.google.com/docs/auth/web/google-signin
// https://firebase.google.com/docs/auth/web/phone-auth
// https://firebase.google.com/docs/auth/web/facebook-login
// https://firebase.google.com/docs/auth/web/apple

// Initialize Firebase
firebase.initializeApp(firebaseConfig);

const getToken = async () => await firebase.auth().currentUser.getIdToken(true);

const cache = new InMemoryCache();
const link = new HttpLink({
  uri: "https://secureplatform.handy.ai/graphql",
});

const authLink = setContext(async (_, { headers }) => {
  return {
    headers: {
      ...headers,
      token: await getToken(),
    },
  };
});

const client = new ApolloClient({
  // Provide required constructor fields
  cache: cache,
  link: authLink.concat(link),
  name: "some-client-name",
  version: "1.3",
  queryDeduplication: false,
  defaultOptions: {
    watchQuery: {
      fetchPolicy: "no-cors",
    },
  },
});

# Документация запросов к ядру

Документация есть в самом Playground

Docs Right Side Tab

# Где указывать поля??!

Ну например мутация myCompany, как указать компанию?

Поля связанные с пользователем или компанией подтягиваются автоматически блягодаря авторизации.