[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / facteur / phpmailer-php5 / get_oauth_token.php
index 46eb28a..2c26d0f 100644 (file)
  * PHP Version 5.4
  */
 
+namespace League\OAuth2\Client\Provider;
+
 require 'vendor/autoload.php';
 
+use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
+use League\OAuth2\Client\Token\AccessToken;
+use League\OAuth2\Client\Tool\BearerAuthorizationTrait;
+use Psr\Http\Message\ResponseInterface;
+
 session_start();
 
 //If this automatic URL doesn't work, set it yourself manually
@@ -25,14 +32,109 @@ $redirectUri = isset($_SERVER['HTTPS']) ? 'https://' : 'http://' . $_SERVER['HTT
 $clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
 $clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
 
+class Google extends AbstractProvider
+{
+    use BearerAuthorizationTrait;
+
+    const ACCESS_TOKEN_RESOURCE_OWNER_ID = 'id';
+
+    /**
+     * @var string If set, this will be sent to google as the "access_type" parameter.
+     * @link https://developers.google.com/accounts/docs/OAuth2WebServer#offline
+     */
+    protected $accessType;
+
+    /**
+     * @var string If set, this will be sent to google as the "hd" parameter.
+     * @link https://developers.google.com/accounts/docs/OAuth2Login#hd-param
+     */
+    protected $hostedDomain;
+
+    /**
+     * @var string If set, this will be sent to google as the "scope" parameter.
+     * @link https://developers.google.com/gmail/api/auth/scopes
+     */
+    protected $scope;
+
+    public function getBaseAuthorizationUrl()
+    {
+        return 'https://accounts.google.com/o/oauth2/auth';
+    }
+
+    public function getBaseAccessTokenUrl(array $params)
+    {
+        return 'https://accounts.google.com/o/oauth2/token';
+    }
+
+    public function getResourceOwnerDetailsUrl(AccessToken $token)
+    {
+       return ' ';
+    }
+
+    protected function getAuthorizationParameters(array $options)
+    {
+       if (is_array($this->scope)) {
+            $separator = $this->getScopeSeparator();
+            $this->scope = implode($separator, $this->scope);
+        }
+
+        $params = array_merge(
+            parent::getAuthorizationParameters($options),
+            array_filter([
+                'hd'          => $this->hostedDomain,
+                'access_type' => $this->accessType,
+               'scope'       => $this->scope,
+                // if the user is logged in with more than one account ask which one to use for the login!
+                'authuser'    => '-1'
+            ])
+        );
+        return $params;
+    }
+
+    protected function getDefaultScopes()
+    {
+        return [
+            'email',
+            'openid',
+            'profile',
+        ];
+    }
+
+    protected function getScopeSeparator()
+    {
+        return ' ';
+    }
+
+    protected function checkResponse(ResponseInterface $response, $data)
+    {
+        if (!empty($data['error'])) {
+            $code  = 0;
+            $error = $data['error'];
+
+            if (is_array($error)) {
+                $code  = $error['code'];
+                $error = $error['message'];
+            }
+
+            throw new IdentityProviderException($error, $code, $data);
+        }
+    }
+
+    protected function createResourceOwner(array $response, AccessToken $token)
+    {
+        return new GoogleUser($response);
+    }
+}
+
+
 //Set Redirect URI in Developer Console as [https/http]://<yourdomain>/<folder>/get_oauth_token.php
-$provider = new League\OAuth2\Client\Provider\Google(
+$provider = new Google(
     array(
         'clientId' => $clientId,
         'clientSecret' => $clientSecret,
         'redirectUri' => $redirectUri,
-        'scopes' => array('https://mail.google.com/'),
-        'accessType' => 'offline'
+        'scope' => array('https://mail.google.com/'),
+       'accessType' => 'offline'
     )
 );