Passed
Pull Request — master (#44)
by Cesar
12:37
created

IdentityService   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Importance

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

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getUserInfoFromRefreshToken() 0 12 3
A getAccessToken() 0 5 1
A getUserInfo() 0 10 2
A getAccessTokenFromAuthToken() 0 14 2
A refreshToken() 0 10 2
1
<?php
2
3
namespace App\Service\Paypal;
4
5
use Exception;
6
use PayPal\Api\OpenIdTokeninfo;
7
use PayPal\Api\OpenIdUserinfo;
8
use PayPal\Auth\OAuthTokenCredential;
9
use PayPal\Core\PayPalConfigManager;
10
11
/**
12
 * Class IdentityService
13
 * @package App\Service\Paypal
14
 */
15
class IdentityService extends AbstractPaypalService
16
{
17
    /**
18
     * @return string|null
19
     */
20
    public function getAccessToken(): ?string
21
    {
22
        $credential = new OAuthTokenCredential($this->clientId, $this->clientSecret);
23
        $config = PayPalConfigManager::getInstance()->getConfigHashmap();
24
        return $credential->getAccessToken($config);
25
    }
26
27
    /**
28
     * getAccessTokenFromAuthToken
29
     *
30
     * @param $authToken
31
     * @return OpenIdTokeninfo|null
32
     */
33
    public function getAccessTokenFromAuthToken($authToken) : ?OpenIdTokeninfo
34
    {
35
        try {
36
            $accessToken = OpenIdTokeninfo::createFromAuthorizationCode(
37
                ['code' => $authToken],
38
                $this->clientId,
39
                $this->clientSecret,
40
                $this->apiContext
41
            );
42
        } catch (Exception $e) {
43
            $this->logger->error('Error on PayPal::getAccessTokenFromAuthToken = ' . $e->getMessage());
44
            return null;
45
        }
46
        return $accessToken;
47
    }
48
49
    /**
50
     * refreshToken
51
     *
52
     * @param string $refreshToken
53
     * @return OpenIdTokeninfo|null
54
     */
55
    public function refreshToken(string $refreshToken) : ?OpenIdTokeninfo
56
    {
57
        try {
58
            $tokenInfo = new OpenIdTokeninfo();
59
            $tokenInfo = $tokenInfo->createFromRefreshToken(['refresh_token' => $refreshToken], $this->apiContext);
60
        } catch (Exception $e) {
61
            $this->logger->error('Error on PayPal::refreshToken = ' . $e->getMessage());
62
            return null;
63
        }
64
        return $tokenInfo;
65
    }
66
67
    /**
68
     * @param OpenIdTokeninfo $tokenInfo
69
     * @return OpenIdUserinfo|null
70
     */
71
    public function getUserInfo(OpenIdTokeninfo $tokenInfo) : ?OpenIdUserinfo
72
    {
73
        try {
74
            $params = ['access_token' => $tokenInfo->getAccessToken()];
75
            $userInfo = OpenIdUserinfo::getUserinfo($params, $this->apiContext);
76
        } catch (Exception $e) {
77
            $this->logger->error('Error on PayPal::getUserInfo = ' . $e->getMessage());
78
            return null;
79
        }
80
        return $userInfo;
81
    }
82
83
    /**
84
     * @param string $refreshToken
85
     * @return OpenIdUserinfo|null
86
     */
87
    public function getUserInfoFromRefreshToken(string $refreshToken) : ?OpenIdUserinfo
88
    {
89
        try {
90
            $tokenInfo = $this->refreshToken($refreshToken);
91
            if ($tokenInfo) {
92
                $userInfo = $this->getUserInfo($tokenInfo);
93
            }
94
        } catch (Exception $e) {
95
            $this->logger->error('Error on PayPal::getUserInfoFromRefreshToken = ' . $e->getMessage());
96
            return null;
97
        }
98
        return $userInfo ?? null;
99
    }
100
}
101