Project

General

Profile

1
<?php
2
/**
3
 * PHPMailer - PHP email creation and transport class.
4
 * PHP Version 5.4
5
 * @package PHPMailer
6
 * @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
7
 * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
8
 * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
9
 * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
10
 * @author Brent R. Matzelle (original founder)
11
 * @copyright 2012 - 2014 Marcus Bointon
12
 * @copyright 2010 - 2012 Jim Jagielski
13
 * @copyright 2004 - 2009 Andy Prevost
14
 * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
15
 * @note This program is distributed in the hope that it will be useful - WITHOUT
16
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17
 * FITNESS FOR A PARTICULAR PURPOSE.
18
 */
19

    
20
/**
21
 * PHPMailerOAuthGoogle - Wrapper for League OAuth2 Google provider.
22
 * @package PHPMailer
23
 * @author @sherryl4george
24
 * @author Marcus Bointon (@Synchro) <phpmailer@synchromedia.co.uk>
25
 * @link https://github.com/thephpleague/oauth2-client
26
 */
27
class PHPMailerOAuthGoogle
28
{
29
    private $oauthUserEmail = '';
30
    private $oauthRefreshToken = '';
31
    private $oauthClientId = '';
32
    private $oauthClientSecret = '';
33

    
34
    /**
35
     * @param string $UserEmail
36
     * @param string $ClientSecret
37
     * @param string $ClientId
38
     * @param string $RefreshToken
39
     */
40
    public function __construct(
41
        $UserEmail,
42
        $ClientSecret,
43
        $ClientId,
44
        $RefreshToken
45
    ) {
46
        $this->oauthClientId = $ClientId;
47
        $this->oauthClientSecret = $ClientSecret;
48
        $this->oauthRefreshToken = $RefreshToken;
49
        $this->oauthUserEmail = $UserEmail;
50
    }
51

    
52
    private function getProvider()
53
    {
54
        return new League\OAuth2\Client\Provider\Google([
55
            'clientId' => $this->oauthClientId,
56
            'clientSecret' => $this->oauthClientSecret
57
        ]);
58
    }
59

    
60
    private function getGrant()
61
    {
62
        return new \League\OAuth2\Client\Grant\RefreshToken();
63
    }
64

    
65
    private function getToken()
66
    {
67
        $provider = $this->getProvider();
68
        $grant = $this->getGrant();
69
        return $provider->getAccessToken($grant, ['refresh_token' => $this->oauthRefreshToken]);
70
    }
71

    
72
    public function getOauth64()
73
    {
74
        $token = $this->getToken();
75
        return base64_encode("user=" . $this->oauthUserEmail . "\001auth=Bearer " . $token . "\001\001");
76
    }
77
}
(6-6/9)