78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * PHPMailer - PHP email creation and transport class.
 | 
						|
 * PHP Version 5.4
 | 
						|
 * @package PHPMailer
 | 
						|
 * @link 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 - 2014 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.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * PHPMailerOAuthGoogle - Wrapper for League OAuth2 Google provider.
 | 
						|
 * @package PHPMailer
 | 
						|
 * @author @sherryl4george
 | 
						|
 * @author Marcus Bointon (@Synchro) <phpmailer@synchromedia.co.uk>
 | 
						|
 * @link https://github.com/thephpleague/oauth2-client
 | 
						|
 */
 | 
						|
class PHPMailerOAuthGoogle
 | 
						|
{
 | 
						|
    private $oauthUserEmail = '';
 | 
						|
    private $oauthRefreshToken = '';
 | 
						|
    private $oauthClientId = '';
 | 
						|
    private $oauthClientSecret = '';
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param string $UserEmail
 | 
						|
     * @param string $ClientSecret
 | 
						|
     * @param string $ClientId
 | 
						|
     * @param string $RefreshToken
 | 
						|
     */
 | 
						|
    public function __construct(
 | 
						|
        $UserEmail,
 | 
						|
        $ClientSecret,
 | 
						|
        $ClientId,
 | 
						|
        $RefreshToken
 | 
						|
    ) {
 | 
						|
        $this->oauthClientId = $ClientId;
 | 
						|
        $this->oauthClientSecret = $ClientSecret;
 | 
						|
        $this->oauthRefreshToken = $RefreshToken;
 | 
						|
        $this->oauthUserEmail = $UserEmail;
 | 
						|
    }
 | 
						|
 | 
						|
    private function getProvider()
 | 
						|
    {
 | 
						|
        return new League\OAuth2\Client\Provider\Google([
 | 
						|
            'clientId' => $this->oauthClientId,
 | 
						|
            'clientSecret' => $this->oauthClientSecret
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
 | 
						|
    private function getGrant()
 | 
						|
    {
 | 
						|
        return new \League\OAuth2\Client\Grant\RefreshToken();
 | 
						|
    }
 | 
						|
 | 
						|
    private function getToken()
 | 
						|
    {
 | 
						|
        $provider = $this->getProvider();
 | 
						|
        $grant = $this->getGrant();
 | 
						|
        return $provider->getAccessToken($grant, ['refresh_token' => $this->oauthRefreshToken]);
 | 
						|
    }
 | 
						|
 | 
						|
    public function getOauth64()
 | 
						|
    {
 | 
						|
        $token = $this->getToken();
 | 
						|
        return base64_encode("user=" . $this->oauthUserEmail . "\001auth=Bearer " . $token . "\001\001");
 | 
						|
    }
 | 
						|
}
 |