Completed
Push — master ( 02cfb9...95b30c )
by Artem
06:06
created

JwtPayload::getChannels()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
/*
3
 * This file is part of the FreshCentrifugoBundle.
4
 *
5
 * (c) Artem Henvald <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
declare(strict_types=1);
12
13
namespace Fresh\CentrifugoBundle\Token;
14
15
/**
16
 * JwtPayload.
17
 *
18
 * @see https://centrifugal.github.io/centrifugo/server/authentication/#claims
19
 *
20
 * @author Artem Henvald <[email protected]>
21
 */
22
final class JwtPayload extends AbstractJwtPayload
23
{
24
    /** @var string */
25
    private $subject;
26
27
    /** @var string[] */
28
    private $channels;
29
30
    /**
31
     * @param string      $subject
32
     * @param array       $info
33
     * @param int|null    $expirationTime
34
     * @param string|null $base64info
35
     * @param string[]    $channels
36
     */
37
    public function __construct(string $subject, array $info = [], ?int $expirationTime = null, ?string $base64info = null, array $channels = [])
38
    {
39
        $this->subject = $subject;
40
        $this->channels = $channels;
41
42
        parent::__construct($info, $expirationTime, $base64info);
43
    }
44
45
    /**
46
     * @return string
47
     */
48
    public function getSubject(): string
49
    {
50
        return $this->subject;
51
    }
52
53
    /**
54
     * @return array
55
     */
56
    public function getChannels(): array
57
    {
58
        return $this->channels;
59
    }
60
61
    /**
62
     * @return array
63
     */
64
    public function getPayloadData(): array
65
    {
66
        $data = [
67
            'sub' => $this->getSubject(),
68
        ];
69
70
        if (null !== $this->getExpirationTime()) {
71
            $data['exp'] = $this->getExpirationTime();
72
        }
73
74
        if (!empty($this->getInfo())) {
75
            $data['info'] = $this->getInfo();
76
        }
77
78
        if (null !== $this->getBase64Info()) {
79
            $data['b64info'] = $this->getBase64Info();
80
        }
81
82
        if (!empty($this->getChannels())) {
83
            $data['channels'] = $this->getChannels();
84
        }
85
86
        return $data;
87
    }
88
}
89