Passed
Push — master ( 75f5d2...2ea80c )
by Bukashk0zzz
02:37
created

GuzzleJWTMiddleware::createToken()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 8
nc 2
nop 4
dl 0
loc 14
rs 9.4285
c 0
b 0
f 0
1
<?php declare(strict_types = 1);
2
3
namespace AtlassianConnectBundle\Service;
4
5
use GuzzleHttp\Middleware;
6
use GuzzleHttp\Psr7\Request;
7
use Psr\Http\Message\RequestInterface;
8
9
/**
10
 * Class GuzzleJWTMiddleware
11
 */
12
class GuzzleJWTMiddleware
13
{
14
    /**
15
     * JWT Authentication middleware for Guzzle
16
     *
17
     * @param string      $issuer Add-on key in most cases
18
     * @param string      $secret Shared secret
19
     * @param null|string $user
20
     *
21
     * @return callable
22
     */
23
    public static function authTokenMiddleware(string $issuer, string $secret, ?string $user): callable
24
    {
25
        return Middleware::mapRequest(
26
            function (RequestInterface $request) use ($issuer, $secret, $user) {
27
                return new Request(
28
                    $request->getMethod(),
29
                    $request->getUri(),
30
                    \array_merge($request->getHeaders(), ['Authorization' => 'JWT '.JWTGenerator::generate($request, $issuer, $secret, $user)]),
31
                    $request->getBody()
32
                );
33
            }
34
        );
35
    }
36
}
37