JWTGenerator   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 2
eloc 15
c 2
b 0
f 0
dl 0
loc 26
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A generate() 0 10 1
A generateAssertion() 0 12 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AtlassianConnectBundle\Service;
6
7
use Firebase\JWT\JWT;
8
9
class JWTGenerator
10
{
11
    public static function generate(string $url, string $method, string $issuer, string $secret): string
12
    {
13
        $data = [
14
            'iss' => $issuer,
15
            'iat' => time(),
16
            'exp' => strtotime('+1 day'),
17
            'qsh' => QSHGenerator::generate($url, $method),
18
        ];
19
20
        return JWT::encode($data, $secret, 'HS256');
21
    }
22
23
    public static function generateAssertion(string $secret, string $oauthClientId, string $baseUrl, string $user): string
24
    {
25
        $data = [
26
            'iss' => 'urn:atlassian:connect:clientid:'.$oauthClientId,
27
            'sub' => 'urn:atlassian:connect:useraccountid:'.$user,
28
            'iat' => time(),
29
            'exp' => strtotime('+1 minutes'),
30
            'tnt' => $baseUrl,
31
            'aud' => 'https://oauth-2-authorization-server.services.atlassian.com',
32
        ];
33
34
        return JWT::encode($data, $secret, 'HS256');
35
    }
36
}
37