Diff: STRATO-apps/wordpress_03/app/wp-includes/PHPMailer/OAuth.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
3
+
/**
4
+
* PHPMailer - PHP email creation and transport class.
5
+
* PHP Version 5.5.
6
+
*
7
+
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
8
+
*
9
+
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
10
+
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
11
+
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
12
+
* @author Brent R. Matzelle (original founder)
13
+
* @copyright 2012 - 2020 Marcus Bointon
14
+
* @copyright 2010 - 2012 Jim Jagielski
15
+
* @copyright 2004 - 2009 Andy Prevost
16
+
* @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
17
+
* @note This program is distributed in the hope that it will be useful - WITHOUT
18
+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19
+
* FITNESS FOR A PARTICULAR PURPOSE.
20
+
*/
21
+
22
+
namespace PHPMailer\PHPMailer;
23
+
24
+
use League\OAuth2\Client\Grant\RefreshToken;
25
+
use League\OAuth2\Client\Provider\AbstractProvider;
26
+
use League\OAuth2\Client\Token\AccessToken;
27
+
28
+
/**
29
+
* OAuth - OAuth2 authentication wrapper class.
30
+
* Uses the oauth2-client package from the League of Extraordinary Packages.
31
+
*
32
+
* @see https://oauth2-client.thephpleague.com
33
+
*
34
+
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
35
+
*/
36
+
class OAuth implements OAuthTokenProvider
37
+
{
38
+
/**
39
+
* An instance of the League OAuth Client Provider.
40
+
*
41
+
* @var AbstractProvider
42
+
*/
43
+
protected $provider;
44
+
45
+
/**
46
+
* The current OAuth access token.
47
+
*
48
+
* @var AccessToken
49
+
*/
50
+
protected $oauthToken;
51
+
52
+
/**
53
+
* The user's email address, usually used as the login ID
54
+
* and also the from address when sending email.
55
+
*
56
+
* @var string
57
+
*/
58
+
protected $oauthUserEmail = '';
59
+
60
+
/**
61
+
* The client secret, generated in the app definition of the service you're connecting to.
62
+
*
63
+
* @var string
64
+
*/
65
+
protected $oauthClientSecret = '';
66
+
67
+
/**
68
+
* The client ID, generated in the app definition of the service you're connecting to.
69
+
*
70
+
* @var string
71
+
*/
72
+
protected $oauthClientId = '';
73
+
74
+
/**
75
+
* The refresh token, used to obtain new AccessTokens.
76
+
*
77
+
* @var string
78
+
*/
79
+
protected $oauthRefreshToken = '';
80
+
81
+
/**
82
+
* OAuth constructor.
83
+
*
84
+
* @param array $options Associative array containing
85
+
* `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements
86
+
*/
87
+
public function __construct($options)
88
+
{
89
+
$this->provider = $options['provider'];
90
+
$this->oauthUserEmail = $options['userName'];
91
+
$this->oauthClientSecret = $options['clientSecret'];
92
+
$this->oauthClientId = $options['clientId'];
93
+
$this->oauthRefreshToken = $options['refreshToken'];
94
+
}
95
+
96
+
/**
97
+
* Get a new RefreshToken.
98
+
*
99
+
* @return RefreshToken
100
+
*/
101
+
protected function getGrant()
102
+
{
103
+
return new RefreshToken();
104
+
}
105
+
106
+
/**
107
+
* Get a new AccessToken.
108
+
*
109
+
* @return AccessToken
110
+
*/
111
+
protected function getToken()
112
+
{
113
+
return $this->provider->getAccessToken(
114
+
$this->getGrant(),
115
+
['refresh_token' => $this->oauthRefreshToken]
116
+
);
117
+
}
118
+
119
+
/**
120
+
* Generate a base64-encoded OAuth token.
121
+
*
122
+
* @return string
123
+
*/
124
+
public function getOauth64()
125
+
{
126
+
//Get a new token if it's not available or has expired
127
+
if (null === $this->oauthToken || $this->oauthToken->hasExpired()) {
128
+
$this->oauthToken = $this->getToken();
129
+
}
130
+
131
+
return base64_encode(
132
+
'user=' .
133
+
$this->oauthUserEmail .
134
+
"\001auth=Bearer " .
135
+
$this->oauthToken .
136
+
"\001\001"
137
+
);
138
+
}
139
+
}
140
+