oauth2.php
3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
/**
* @package Joomla.Platform
* @subpackage Google
*
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die;
use Joomla\Registry\Registry;
/**
* Google OAuth authentication class
*
* @since 3.1.4
* @deprecated 4.0 Use the `joomla/google` package via Composer instead
*/
class JGoogleAuthOauth2 extends JGoogleAuth
{
/**
* @var JOAuth2Client OAuth client for the Google authentication object.
* @since 3.1.4
*/
protected $client;
/**
* Constructor.
*
* @param Registry $options JGoogleAuth options object.
* @param JOAuth2Client $client OAuth client for Google authentication.
*
* @since 3.1.4
*/
public function __construct(Registry $options = null, JOAuth2Client $client = null)
{
$this->options = isset($options) ? $options : new Registry;
$this->client = isset($client) ? $client : new JOAuth2Client($this->options);
}
/**
* Method to authenticate to Google
*
* @return boolean True on success.
*
* @since 3.1.4
*/
public function authenticate()
{
$this->googlize();
return $this->client->authenticate();
}
/**
* Verify if the client has been authenticated
*
* @return boolean Is authenticated
*
* @since 3.1.4
*/
public function isAuthenticated()
{
return $this->client->isAuthenticated();
}
/**
* Method to retrieve data from Google
*
* @param string $url The URL for the request.
* @param mixed $data The data to include in the request.
* @param array $headers The headers to send with the request.
* @param string $method The type of http request to send.
*
* @return mixed Data from Google.
*
* @since 3.1.4
*/
public function query($url, $data = null, $headers = null, $method = 'get')
{
$this->googlize();
return $this->client->query($url, $data, $headers, $method);
}
/**
* Method to fill in Google-specific OAuth settings
*
* @return JOAuth2Client Google-configured Oauth2 client.
*
* @since 3.1.4
*/
protected function googlize()
{
if (!$this->client->getOption('authurl'))
{
$this->client->setOption('authurl', 'https://accounts.google.com/o/oauth2/auth');
}
if (!$this->client->getOption('tokenurl'))
{
$this->client->setOption('tokenurl', 'https://accounts.google.com/o/oauth2/token');
}
if (!$this->client->getOption('requestparams'))
{
$this->client->setOption('requestparams', array());
}
$params = $this->client->getOption('requestparams');
if (!array_key_exists('access_type', $params))
{
$params['access_type'] = 'offline';
}
if ($params['access_type'] == 'offline' && $this->client->getOption('userefresh') === null)
{
$this->client->setOption('userefresh', true);
}
if (!array_key_exists('approval_prompt', $params))
{
$params['approval_prompt'] = 'auto';
}
$this->client->setOption('requestparams', $params);
return $this->client;
}
}