RefreshToken::getIdentifier()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 1
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace kalanis\OAuth2\Grant;
4
5
6
use kalanis\OAuth2\Exceptions\InvalidScopeException;
7
use kalanis\OAuth2\Storage\AccessTokens\IAccessToken;
8
use kalanis\OAuth2\Storage\Clients\IClient;
9
use kalanis\OAuth2\Storage\Exceptions\InvalidRefreshTokenException;
10
use kalanis\OAuth2\Storage\ITokenFacade;
11
use kalanis\OAuth2\Storage\RefreshTokens\IRefreshToken;
12
13
14
/**
15
 * RefreshToken
16
 * @package kalanis\OAuth2\Grant
17
 */
18
class RefreshToken extends GrantType
19
{
20
    /**
21
     * Get refresh token identifier
22
     */
23
    public function getIdentifier(): string
24
    {
25
        return self::REFRESH_TOKEN;
26
    }
27
28
    /**
29
     * Verify request
30
     *
31
     * @throws InvalidRefreshTokenException
32
     */
33
    protected function verifyRequest(): void
34
    {
35 1
        $refreshTokenStorage = $this->token->getToken(ITokenFacade::REFRESH_TOKEN);
36 1
        $refreshToken = strval($this->input->getParameter('refresh_token'));
37
38 1
        $refreshTokenStorage->getEntity($refreshToken);
39
        $refreshTokenStorage->getStorage()->remove($refreshToken);
40
    }
41
42
    /**
43
     * Generate access token
44
     * @param IClient $client
45
     * @throws InvalidScopeException
46
     * @return array<string, string|int>
47
     */
48
    protected function generateAccessToken(IClient $client): array
49
    {
50 1
        $accessTokenStorage = $this->token->getToken(ITokenFacade::ACCESS_TOKEN);
51 1
        $refreshTokenStorage = $this->token->getToken(ITokenFacade::REFRESH_TOKEN);
52
53
        /** @var IAccessToken $accessToken */
54 1
        $accessToken = $accessTokenStorage->create($client, $this->user->getId());
55
        /** @var IRefreshToken $refreshToken */
56 1
        $refreshToken = $refreshTokenStorage->create($client, $this->user->getId());
57
58
        return [
59 1
            'access_token' => $accessToken->getAccessToken(),
60 1
            'token_type' => 'bearer',
61 1
            'expires_in' => $accessTokenStorage->getLifetime(),
62 1
            'refresh_token' => $refreshToken->getRefreshToken(),
63
        ];
64
    }
65
}
66