atls / team-management

Team management app
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

apollo/client&graphql #29

Closed kirill-ivanovvv closed 3 months ago

kirill-ivanovvv commented 5 months ago

С чем связан запрос на фичу?

Сервер

Расскажите как вы это себе видите

В процессе

Definition of done (критерий готовности)

В процессе

Приложите пример реализаций

No response

Приложите материалы задачи

creating oAuth app Authorizing OAuth apps

https://github.com/octokit/auth-oauth-user.js?tab=readme-ov-file#usage-with-octokit image

Nelfimov commented 5 months ago

В дополнение для работы с GitHub - https://www.npmjs.com/package/octokit

kirill-ivanovvv commented 5 months ago

@Nelfimov подскажи пожалуйста как graphQl сервер создать? image

Nelfimov commented 5 months ago

А зачем тебе сервер? Твое основное взаимодействие - GitHub GraphQL

kirill-ivanovvv commented 5 months ago

@Nelfimov

  1. не могу понять, как сделать авторизацию через octokit, сделал вот так сейчас сохраняемся в куки, без соли.

  2. в текущем варианте есть middleware, который записывает в куки ключ с гитхаба, потом этот response передается в api-route, который делает редикет домой. я добавил middleware, потомучто не получилось записать куки в ендпоинте. вопрос лишь в том, возможно ли так сделать? (что-то мне подсказывает что можно)

  3. знаю библиотеку iron-session, будем на неё переделывать или какоето похожее решение?

  4. у гитхаб-приложения есть ключи, которые я хотел бы поместить в .env эти переменные компонент не видит, как я понял потому-что 'use client', как это можно исправить? или другой способ передавать ключи.

Nelfimov commented 5 months ago
  1. не могу понять, как сделать авторизацию через octokit, сделал вот так сейчас сохраняемся в куки, без соли.

Грубыми мазками:

  1. авторизоваться в GitHub
  2. получить от них токен
  3. этот токен использовать в octokit
  4. хранить можешь в куках

в текущем варианте есть middleware, который записывает в куки ключ с гитхаба, потом этот response передается в api-route, который делает редикет домой. я добавил middleware, потомучто не получилось записать куки в ендпоинте. вопрос лишь в том, возможно ли так сделать? (что-то мне подсказывает что можно)

ты ведь можешь программно записать куки. Зашли в приложение - регистрация/авторизация в github (можешь сделать тестовое личное приложение) - ловишь в ответ креды - сохраняешь в куках.

знаю библиотеку iron-session, будем на неё переделывать или какоето похожее решение?

Пока не будем усложнять

у гитхаб-приложения есть ключи, которые я хотел бы поместить в .env эти переменные компонент не видит, как я понял потому-что 'use client', как это можно исправить? или другой способ передавать ключи.

Нужен префикс NEXT_PUBLIC чтобы браузер видел env. Иначе они остаются на сервере.

kirill-ivanovvv commented 5 months ago

Грубыми мазками:

  1. авторизоваться в GitHub
  2. получить от них токен
  3. этот токен использовать в octokit
  4. хранить можешь в куках

это готово. думал что через октокит можно и авторизацию сделать

kirill-ivanovvv commented 5 months ago

@Nelfimov

  1. octokit у нас будет делать запросы на уровне fragments, не на уровне pages?
  2. куда разместить объект авторизации (см скриншот)? Если он будет переиспользоваться по всему приложению, то в globals/data будет норм? image
Nelfimov commented 5 months ago
  1. octokit у нас будет делать запросы на уровне fragments, не на уровне pages?

По структуре кода - fragments.

А вот для того чтобы нам получать данные еще на сервере, чтобы не было "морганий" получения данных на клиенте - pages.

  1. куда разместить объект авторизации (см скриншот)? Если он будет переиспользоваться по всему приложению, то в globals/data будет норм?

Да, можно. Надо еще понимать нужно ли тебе этот стейт использовать по приложению в разных кусках. Если да - то еще дополнительно делать stores/user

kirill-ivanovvv commented 5 months ago

https://docs.github.com/en/graphql/reference/objects#user

kirill-ivanovvv commented 5 months ago

https://github.com/octokit/authentication-strategies.js/?tab=readme-ov-file#oauth-app-authentication

Nelfimov commented 5 months ago

если ты это скидываешь себе на память, то лучше

kirill-ivanovvv commented 5 months ago
  • дискуссии

подскажи что такое дискуссии

Nelfimov commented 5 months ago

@effektivnayarabota1 подключил сейчас

https://github.com/atls/team-management/discussions

ssagg commented 5 months ago

@effektivnayarabota1 @Nelfimov через octokit запросы в гит идут. мы можем этот пакет использовать и для запросов? или надо через useQuery от apollo? сделали тестовую организацию. на ней будем тренироваться. ` const dataOrg = await octokit.graphql(query{

organization(login: "ssagg-test") {
  name
  teams(first: 100, after: null) {
    nodes {
      members {
        nodes {
          avatarUrl
          name
          email
          id
          organizations(first:100){
            nodes{
              id
              name
              avatarUrl
            }
          }
        }
      }
      name
    }
  }
}

}) ` Screenshot from 2024-06-21 13-54-56

Nelfimov commented 5 months ago

Octokit без Apollo - норм. Только рассмотрите ещё graphql codegen для типизации запросов https://the-guild.dev/graphql/codegen

Nelfimov commented 3 months ago

apollo не нужен