forked from tohe/wmdeit_kaform
				
			
		
			
	
	
		
			139 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			139 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | /** | ||
|  |  * PHPMailer - PHP email creation and transport class. | ||
|  |  * PHP Version 5.5. | ||
|  |  * | ||
|  |  * @see       https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project | ||
|  |  * | ||
|  |  * @author    Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> | ||
|  |  * @author    Jim Jagielski (jimjag) <jimjag@gmail.com> | ||
|  |  * @author    Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> | ||
|  |  * @author    Brent R. Matzelle (original founder) | ||
|  |  * @copyright 2012 - 2015 Marcus Bointon | ||
|  |  * @copyright 2010 - 2012 Jim Jagielski | ||
|  |  * @copyright 2004 - 2009 Andy Prevost | ||
|  |  * @license   http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License | ||
|  |  * @note      This program is distributed in the hope that it will be useful - WITHOUT | ||
|  |  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
|  |  * FITNESS FOR A PARTICULAR PURPOSE. | ||
|  |  */ | ||
|  | 
 | ||
|  | namespace PHPMailer\PHPMailer; | ||
|  | 
 | ||
|  | use League\OAuth2\Client\Grant\RefreshToken; | ||
|  | use League\OAuth2\Client\Provider\AbstractProvider; | ||
|  | use League\OAuth2\Client\Token\AccessToken; | ||
|  | 
 | ||
|  | /** | ||
|  |  * OAuth - OAuth2 authentication wrapper class. | ||
|  |  * Uses the oauth2-client package from the League of Extraordinary Packages. | ||
|  |  * | ||
|  |  * @see     http://oauth2-client.thephpleague.com | ||
|  |  * | ||
|  |  * @author  Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> | ||
|  |  */ | ||
|  | class OAuth | ||
|  | { | ||
|  |     /** | ||
|  |      * An instance of the League OAuth Client Provider. | ||
|  |      * | ||
|  |      * @var AbstractProvider | ||
|  |      */ | ||
|  |     protected $provider; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * The current OAuth access token. | ||
|  |      * | ||
|  |      * @var AccessToken | ||
|  |      */ | ||
|  |     protected $oauthToken; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * The user's email address, usually used as the login ID | ||
|  |      * and also the from address when sending email. | ||
|  |      * | ||
|  |      * @var string | ||
|  |      */ | ||
|  |     protected $oauthUserEmail = ''; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * The client secret, generated in the app definition of the service you're connecting to. | ||
|  |      * | ||
|  |      * @var string | ||
|  |      */ | ||
|  |     protected $oauthClientSecret = ''; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * The client ID, generated in the app definition of the service you're connecting to. | ||
|  |      * | ||
|  |      * @var string | ||
|  |      */ | ||
|  |     protected $oauthClientId = ''; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * The refresh token, used to obtain new AccessTokens. | ||
|  |      * | ||
|  |      * @var string | ||
|  |      */ | ||
|  |     protected $oauthRefreshToken = ''; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * OAuth constructor. | ||
|  |      * | ||
|  |      * @param array $options Associative array containing | ||
|  |      *                       `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements | ||
|  |      */ | ||
|  |     public function __construct($options) | ||
|  |     { | ||
|  |         $this->provider = $options['provider']; | ||
|  |         $this->oauthUserEmail = $options['userName']; | ||
|  |         $this->oauthClientSecret = $options['clientSecret']; | ||
|  |         $this->oauthClientId = $options['clientId']; | ||
|  |         $this->oauthRefreshToken = $options['refreshToken']; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Get a new RefreshToken. | ||
|  |      * | ||
|  |      * @return RefreshToken | ||
|  |      */ | ||
|  |     protected function getGrant() | ||
|  |     { | ||
|  |         return new RefreshToken(); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Get a new AccessToken. | ||
|  |      * | ||
|  |      * @return AccessToken | ||
|  |      */ | ||
|  |     protected function getToken() | ||
|  |     { | ||
|  |         return $this->provider->getAccessToken( | ||
|  |             $this->getGrant(), | ||
|  |             ['refresh_token' => $this->oauthRefreshToken] | ||
|  |         ); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Generate a base64-encoded OAuth token. | ||
|  |      * | ||
|  |      * @return string | ||
|  |      */ | ||
|  |     public function getOauth64() | ||
|  |     { | ||
|  |         // Get a new token if it's not available or has expired
 | ||
|  |         if (null === $this->oauthToken || $this->oauthToken->hasExpired()) { | ||
|  |             $this->oauthToken = $this->getToken(); | ||
|  |         } | ||
|  | 
 | ||
|  |         return base64_encode( | ||
|  |             'user=' . | ||
|  |             $this->oauthUserEmail . | ||
|  |             "\001auth=Bearer " . | ||
|  |             $this->oauthToken . | ||
|  |             "\001\001" | ||
|  |         ); | ||
|  |     } | ||
|  | } |