Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 22 |
OAuth2 | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
72 | |
0.00% |
0 / 22 |
getUser | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 14 |
|||
getTtl | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
getExpirationTimeFromResponse | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 7 |
1 | <?php |
2 | |
3 | namespace Qmp\Laravel\AuthConnector\Connector; |
4 | |
5 | use Illuminate\Http\Response; |
6 | use Illuminate\Support\Facades\Log; |
7 | use \Qmp\Laravel\MicroService\Client\Tools\Request as ClientRequest; |
8 | use \Qmp\Laravel\MicroService\Client\Client; |
9 | |
10 | class 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 | } |