Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Esta versão do GitHub Enterprise foi descontinuada em 2020-11-12. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, melhorar a segurança e novos recursos, upgrade to the latest version of GitHub Enterprise. Para ajuda com a atualização, contact GitHub Enterprise support.

Descobrir recursos para um usuário

Saiba como encontrar os repositórios e organizações que o seu aplicativo pode acessar para um usuário de forma confiável para as suas solicitações autenticadas para a API REST.

Neste artigo

Ao fazer solicitações autenticadas para a API do GitHub Enterprise Server, os aplicativos geralmente precisam obter repositórios e organizações do usuário atual. Neste guia, explicaremos como descobrir esses recursos de forma confiável.

Para interagir com a API do GitHub Enterprise Server, vamos usar Octokit.rb. Você pode encontrar o código-fonte completo para este projeto no repositório de platform-samples.

Introdução

Se você ainda não o fez, você deverá ler o guia "Princípios básicos da autenticação" antes de trabalhar com exemplos abaixo. Os exemplos abaixo assumem que você registrou um aplicativo OAuth e que seu aplicativo tem um token do OAuth para um usuário.

Descubra os repositórios que o seu aplicativo pode acessar para um usuário

Além de ter seus próprios repositórios pessoais, um usuário pode ser um colaborador em repositórios pertencentes a outros usuários e organizações. Coletivamente, estes são os repositórios em que o usuário tem acesso privilegiado: ou é um repositório privado em que o usuário tem acesso de leitura ou gravação ou é um repositório público em o usuário tem acesso de gravação.

Os escopos do OAuth e as políticas dos aplicativos da organização determinam quais desses repositórios o seu aplicativo pode acessar para um usuário. Use o fluxo de trabalho abaixo para descobrir esses repositórios.

Como sempre, primeiro precisaremos da biblioteca de Ruby do GitHub Octokit.rb. Em seguida, vamos configurar o Octokit.rb para gerenciar automaticamente a paginação para nós.

require 'octokit'

Octokit.auto_paginate = true

Em seguida, passaremos o Token OAuth para um determinado usuário do nosso aplicativo:

# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below.
client = Octokit::Client.new :access_token => ENV["OAUTH_ACCESS_TOKEN"]

Em seguida, estaremos prontos para buscar os repositórios que o nosso aplicativo pode acessar para o usuário:

client.repositories.each do |repository|
  full_name = repository[:full_name]
  has_push_access = repository[:permissions][:push]

  access_type = if has_push_access
                  "write"
                else
                  "read-only"
                end

  puts "User has #{access_type} access to #{full_name}."
end

Descubra as organizações que o seu aplicativo pode acessar para um usuário

Os aplicativos podem executar todos os tipos de tarefas relacionadas à organização para um usuário. Para executar essas tarefas, o aplicativo precisa de uma autorização do OAuth com permissão suficiente. Por exemplo, o escopo read:org permite que você liste as equipes e o escopo do usuário permite que você publique a associação da organização do usuário. Assim que um usuário conceder um ou mais desses escopos para o seu aplicativo, você estará pronto para buscar as organizações do usuário.

Assim como fizemos ao descobrir os repositórios acima, começaremos exigindo a biblioteca de Ruby do GitHub's Octokit.rb Biblioteca Ruby e configurando-a para cuidar da paginação para nós:

require 'octokit'

Octokit.auto_paginate = true

Em seguida, passaremos o Token OAuth para um determinado usuário do nosso aplicativo para inicializar o nosso cliente da API:

# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below.
client = Octokit::Client.new :access_token => ENV["OAUTH_ACCESS_TOKEN"]

Em seguida, podemos listar as organizações que o nosso aplicativo pode acessar para o usuário:

client.organizations.each do |organization|
  puts "User belongs to the #{organization[:login]} organization."
end

Não confie em organizações públicas

Se você leu a documentação do princípio ao fim, é possível que você tenha notado um método da API para listar as associações de organizações públicas de um usuário. A maioria dos aplicativos deve evitar este método de API. Este método retorna apenas as associações de organizações públicas do usuário, não suas associações de organizações privadas.

Como um aplicativo, de modo geral, você quer todas as organizações de usuários (públicas e privadas) que seu aplicativo está autorizado a acessar. O fluxo de trabalho acima fornecerá exatamente isso.