app/library/OAuth/Adapter/League.php: add support for non-standard providers.
This commit is contained in:
parent
158cacdb8a
commit
4042b36422
1 changed files with 18 additions and 3 deletions
|
|
@ -7,6 +7,16 @@ use League\OAuth2\Client\Provider\AbstractProvider,
|
||||||
|
|
||||||
class League implements AdapterInterface
|
class League implements AdapterInterface
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* List of all supported providers and their class name.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $_providerClasses = array(
|
||||||
|
'github' => '\League\OAuth2\Client\Provider\Github',
|
||||||
|
'gitlab' => '\Omines\OAuth2\Client\Provider\Gitlab',
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var AbstractProvider
|
* @var AbstractProvider
|
||||||
*/
|
*/
|
||||||
|
|
@ -17,15 +27,19 @@ class League implements AdapterInterface
|
||||||
*/
|
*/
|
||||||
protected $_accessToken;
|
protected $_accessToken;
|
||||||
|
|
||||||
|
protected $_options;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function __construct($provider_name, $options)
|
public function __construct($provider_name, $options)
|
||||||
{
|
{
|
||||||
$provider_name = ucfirst($provider_name);
|
if (!array_key_exists($provider_name, $this->_providerClasses)) {
|
||||||
|
throw new Exception("Provider '{$provider_name}' is not supported.");
|
||||||
|
}
|
||||||
|
|
||||||
$className = 'League\OAuth2\Client\Provider\\' . $provider_name;
|
$className = $this->_providerClasses[$provider_name];
|
||||||
$provider = new $className($options);
|
$provider = new $className($options);
|
||||||
|
|
||||||
if (!($provider instanceof AbstractProvider)) {
|
if (!($provider instanceof AbstractProvider)) {
|
||||||
|
|
@ -34,6 +48,7 @@ class League implements AdapterInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_provider = $provider;
|
$this->_provider = $provider;
|
||||||
|
$this->_options = $options;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -49,7 +64,7 @@ class League implements AdapterInterface
|
||||||
*/
|
*/
|
||||||
public function getAuthorizationUrl()
|
public function getAuthorizationUrl()
|
||||||
{
|
{
|
||||||
return $this->_provider->getAuthorizationUrl();
|
return $this->_provider->getAuthorizationUrl($this->_options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Reference in a new issue