Completed
Branch v2.0.0 (abe3f2)
by Alexander
01:26
created

JsonWebTokenService   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 1
dl 0
loc 32
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createToken() 0 21 2
A decodeToken() 0 4 1
1
<?php
2
3
namespace Core\JsonWebToken;
4
5
use DateTime;
6
use Firebase\JWT\JWT;
7
8
class JsonWebTokenService
9
{
10
    // @TODO Replace it by auto-generated cached value
11
    const KEY = 'iWySEH6cPdsBauYISE76FR5fQBEHCESCi1nzi4peddsAzLm6Dakg3DnvnckrnhH';
12
13
    public static function createToken(array $data = [], $expiresIn = '1 day'): string
14
    {
15
        $expirationDate = new DateTime();
16
        $expirationDate->modify('+'.$expiresIn);
17
18
        $exp = $expirationDate->format('U');
19
20
        // Validate exp value. If less than now:
21
        if ($exp < time()) {
22
            // Set default exp value.
23
            $exp = time() + 3600 * 24; // 1 day
24
        }
25
26
        $payload = [
27
            'iss' => 'YonaCMS',
28
            'exp' => $exp,
29
        ];
30
        $payload = $payload + $data;
31
32
        return JWT::encode($payload, self::KEY);
33
    }
34
35
    public static function decodeToken($token)
36
    {
37
        return JWT::decode($token, self::KEY, ['HS256']);
38
    }
39
}
40