Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 22
OAuth2
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
72
0.00% covered (danger)
0.00%
0 / 22
 getUser
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 14
 getTtl
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 getExpirationTimeFromResponse
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 7
1<?php
2
3namespace Qmp\Laravel\AuthConnector\Connector;
4
5use Illuminate\Http\Response;
6use Illuminate\Support\Facades\Log;
7use \Qmp\Laravel\MicroService\Client\Tools\Request as ClientRequest;
8use \Qmp\Laravel\MicroService\Client\Client;
9
10class OAuth2 implements ConnectorInterface
11{
12    const PATH = '/api/is-connected';
13    const TIMEOUT = 10;
14    const TOKEN_KEY_NAME = 'token';
15
16    private $ttl = 0;
17
18    /**
19     * @param string $token
20     * @return false|array
21     */
22    public function getUser(string $token)
23    {
24        $serviceName = config('auth_service.oauth2.url');
25
26        $request = new ClientRequest();
27        $request->setUrl($serviceName)
28            ->setPath(self::PATH)
29            ->setQuery([self::TOKEN_KEY_NAME => $token])
30            ->setTimeout(self::TIMEOUT);
31
32        $request->setHeaders([
33            'Authorization' => 'Bearer ' . $token,
34        ]);
35
36        $response = Client::get($request);
37
38        if ($response->code === Response::HTTP_OK && isset($response->content['user_id']) && isset($response->headers['Expiration-time'])) {
39            $user = [
40                'id' => $response->content['user_id']
41            ];
42
43            $this->ttl = $this->getExpirationTimeFromResponse($response);
44
45            return $user;
46        }
47
48        return false;
49    }
50
51    public function getTtl()
52    {
53        return $this->ttl;
54    }
55
56    /**
57     * @param \Qmp\Laravel\MicroService\Client\Tools\Response $response
58     * @return int
59     */
60    protected function getExpirationTimeFromResponse(\Qmp\Laravel\MicroService\Client\Tools\Response $response) : int
61    {
62        $time = 0;
63        if (isset($response->headers['Expiration-time'])) {
64            if (is_array($response->headers['Expiration-time'])) {
65                $headers = $response->headers['Expiration-time'];
66                $time = reset($headers);
67            } else {
68                $time = $response->headers['Expiration-time'];
69            }
70        }
71
72        return (int) $time;
73    }
74}