Passed
Push — main ( 2422e5...cb64d0 )
by Breno
01:40
created

index.php$0 ➔ store()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 2
rs 10
1
<?php
2
declare(strict_types=1);
3
4
use BrenoRoosevelt\OAuth2\Client\Example\AuthorizationCodeFlow;
5
use BrenoRoosevelt\OAuth2\Client\Example\StateStorage;
6
use BrenoRoosevelt\OAuth2\Client\GovBr;
7
use Laminas\Diactoros\ServerRequestFactory;
8
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
9
use Middlewares\Utils\CallableHandler;
10
use Middlewares\Utils\Dispatcher;
11
use Middlewares\Whoops;
12
13
require __DIR__ . '/../vendor/autoload.php';
14
15
/**
16
 * ----------------------------------------------------------------------
17
 * Roteiro para rodar esse exemplo no Linux:
18
 * ----------------------------------------------------------------------
19
 * $ composer create-project brenoroosevelt/oauth2-govbr [nova-pasta]
20
 * ----------------------------------------------------------------------
21
 * $ cd nova-pasta
22
 * ----------------------------------------------------------------------
23
 * Inclua a seguinte linha em seu arquivo /etc/hosts:
24
 *
25
 * 127.0.1.1       seu-app-dominio.com.br
26
 * ----------------------------------------------------------------------
27
 * Obs: Desative qualquer serviço escutando as portas 80 e 443, e depois:
28
 *
29
 * $ docker-compose up -d
30
 * ----------------------------------------------------------------------
31
 * Altere as seguitens configurações (neste arquivo aqui):
32
 * "clientId", "clientSecret" e "redirectUri"
33
 * ----------------------------------------------------------------------
34
 * Abra o browser (https!):
35
 *
36
 * https://seu-app-dominio.com.br
37
 * ----------------------------------------------------------------------
38
 * Ao final, você terá um container docker rodando com Apache e PHP 8.0.
39
 * Qualquer caminho (rota) no servidor irá executar esse arquivo.
40
 * ----------------------------------------------------------------------
41
 * Se precisar conferir o log do servidor:
42
 *
43
 * $ docker ps
44
 * $ docker logs <container_id> --follow
45
 * ----------------------------------------------------------------------
46
 */
47
48
49
/**
50
 * Provider GovBr
51
 * Atenção!:
52
 * - Os parâmetros abaixos são sigilosos, evite enviar esses valores para seu repositório git
53
 * - Ao invés de fixar no código, prefira obtê-los usando getenv(...)
54
 */
55
$govBr = GovBr::staging([
56
    'clientId'      => 'XXXXXXXX', // Client ID fornecido pelo GovBr
57
    'clientSecret'  => 'YYYYYYYY', // Senha fornecida pelo provedor GovBr
58
    'redirectUri'   => "https://seu-app-dominio.com.br/seu-oauth-login" // Url de redirecionamento cadastrada no GovBr
59
]);
60
61
// O fluxo está implementado nessa classe
62
$authorizationCodeFlow = new AuthorizationCodeFlow($govBr, new StateStorage());
63
64
/** Despacha a requisição http (Seu framework faz isso) */
65
$response =
66
    Dispatcher::run([
67
            new Whoops(),
68
            new CallableHandler($authorizationCodeFlow)
69
        ],
70
        ServerRequestFactory::fromGlobals()
71
    );
72
73
/** Emite o resultado */
74
(new SapiEmitter())->emit($response);