/oauth2-govbr

Cliente OAuth2 para Gov.br

Primary LanguagePHPMIT LicenseMIT

Cliente OAuth2 para Gov.br

CI Build codecov Scrutinizer Code Quality Latest Version Software License

Este pacote fornece suporte OAuth 2.0 para Gov.br usando a biblioteca cliente do League PHP.

Requisitos

Versões suportadas do PHP:

  • PHP 8.2
  • PHP 8.1
  • PHP 8.0
  • PHP 7.4
  • PHP 7.3
  • PHP 7.2
  • PHP 7.1

Instalação

Via composer:

composer require brenoroosevelt/oauth2-govbr 

Exemplos de Uso

Criando uma instância do provider para GovBr em ambiente de produção:

use BrenoRoosevelt\OAuth2\Client\GovBr;

$govBr = new GovBr([
    'clientId'     => 'XXXXXXXX', // Client ID fornecido pelo GovBr
    'clientSecret' => 'YYYYYYYY', // Senha fornecida pelo provedor GovBr
    'redirectUri'  => "https://seu-app-dominio.com.br/seu-login", // Url de redirecionamento
    'redirectUriLogout'   => "https://seu-app-dominio.com.br/seu-logout"
]);

Atenção! Os parâmetros clientId e clientSecret acima são sigilosos, evite enviar esses valores para seu repositório git; prefira obtê-los usando getenv(...).

Obtendo a url de autorização:

$urlAutorizacao = $govBr->getAuthorizationUrl();
$state = $this->govBr->getState();
// redirecionar o usuário para a url 

Obtendo o token de acesso (Access Token):

$authorizationCode = $_GET['code'];
$accessToken = 
       $govBr->getAccessToken(
            new AuthorizationCode(), 
            ['code' => $authorizationCode]
       );

Obtendo mais informações do usuário:

$govBrUser = $govBr->getResourceOwner($accessToken);         
$govBrUser->getName();
$govBrUser->getCpf();
$govBrUser->getAvatarUrl();
$govBrUser->getProfile();
$govBrUser->getPhoneNumber();
$govBrUser->phoneNumberVerified();
$govBrUser->getEmail();
$govBrUser->emailVerified();

// Obtendo o avatar do usuário
$avatar = $govBr->getAvatar($govBrUser);
if ($avatar !== null) {
    $avatar->image();
    $avatar->imageBase64();
    $avatar->mimeType();
    $avatar->toHtml(['width' => 60]);
}

Obtendo a url de logout:

$urlLogout = $govBr->getLogoutUrl();
// redirecionar  

Ambiente de Homologação

Por padrão, o ambiente será de produção, mas você pode escolher o ambiente de homologação (staging) solicitando uma instância da seguinte forma:

<?php
$govBr = GovBr::staging([
    'clientId'     => 'XXXXXXXX', // Client ID fornecido pelo GovBr
    'clientSecret' => 'YYYYYYYY', // Senha fornecida pelo provedor GovBr
    'redirectUri'  => "https://seu-app-dominio.com.br/seu-login", // Url de redirecionamento
    'redirectUriLogout'   => "https://seu-app-dominio.com.br/seu-logout"
]);

Além do provider para Gov.br, junto com este pacote fornecemos um exemplo para o fluxo Authorization Code aqui. Diponibilizamos também um servidor (containar docker) para que você possar executar esse fluxo em um ambiente de homolocação usando suas configuraçoes. Para isso, basta seguir as instruções desse ROTEIRO.

Contribuindo

Para contribuir com esse projeto, por favor veja nossas diretrizes.

Segurança

Se você descobrir qualquer problema relacionado à segurança, envie um e-mail em vez de abrir uma issue.

Licença

Este projeto está licenciado sob os termos da licença MIT. Consulte o arquivo LICENSE para entender os direitos e limitações.