Вход Регистрация
Файл: sngine-v2.8/Script/includes/libs/PHPMailer/OAuth.php
Строк: 147
<?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 PHPMailerPHPMailer;

use 
LeagueOAuth2ClientGrantRefreshToken;
use 
LeagueOAuth2ClientProviderAbstractProvider;
use 
LeagueOAuth2ClientTokenAccessToken;

/**
 * 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 .
            
"01auth=Bearer " .
            
$this->oauthToken .
            
"0101"
        
);
    }
}
Онлайн: 0
Реклама