Archived
1
0
Fork 0

rename app/library/OAuth.php to app/library/OAuth/Client.php and change implementation to use Adapter classes.

This commit is contained in:
Henrik Hautakoski 2018-04-06 11:39:13 +02:00
parent 21c869a06a
commit b3eb25d221
2 changed files with 59 additions and 103 deletions

View file

@ -1,103 +0,0 @@
<?php
namespace Httpcb;
use Phalcon\Mvc\User\Component;
use Opauth;
class OAuth extends Component
{
/**
* Configuration
*
* @var array
*/
protected $_config = array(
'path' => '/oauth/',
'callback_url' => '/oauth/callback'
);
protected $_oauth;
protected $_callbackName = 'callback';
public function __construct($config)
{
$config = $this->objectToArray($config->oauth);
$this->_config = array_merge($this->_config, $config);
$this->_oauth = new Opauth($this->_config, false);
}
/**
* @return mixed|null|void
*/
public function perform()
{
$strategy = $this->dispatcher->getParam('strategy', null, false);
if ($strategy == $this->_callbackName) {
return $this->getResponse();
}
$this->_oauth->run();
exit;
}
/**
* @return array|string
*/
public function getResponse()
{
$response = null;
switch($this->_oauth->env['callback_transport']) {
case 'session':
$response = $this->session->get('opauth');
$this->session->remove('opauth');
break;
case 'post':
$response = unserialize(base64_decode( $_POST['opauth'] ));
break;
case 'get':
$response = unserialize(base64_decode( $_GET['opauth'] ));
break;
}
$ret = $this->_validate($response, $reason);
if ($ret === false) {
return $reason;
}
return $response;
}
public function objectToArray($object)
{
if(!is_object($object) && !is_array($object))
{
return $object;
}
if(is_object($object))
{
$object = get_object_vars( $object );
}
return array_map(array($this,"objectToArray"), $object );
}
protected function _validate($response, &$reason)
{
if (isset($response['auth']) &&
isset($response['timestamp']) &&
isset($response['signature'])) {
$hash = sha1(print_r($response['auth'], true));
return $this->_oauth->validate($hash, $response['timestamp'],
$response['signature'], $reason);
}
$reason = "Invalid auth response";
return false;
}
}

View file

@ -0,0 +1,59 @@
<?php
namespace Httpcb\OAuth;
use Httpcb\OAuth\Adapter\AdapterInterface;
class Client
{
/**
* Adapter to use.
*
* @var AdapterInterface
*/
protected $_adapter;
/**
* Access Token
*
* @var string
*/
protected $_token;
public function __construct(AdapterInterface $adapter)
{
$this->_adapter = $adapter;
}
public function getAuthorizationUrl()
{
return $this->_adapter->getAuthorizationUrl();
}
/**
* @param string $code
* @return UserDataInterface
*/
public function authenticate($code)
{
$this->_adapter->fetchAccessToken($code);
return $this->getUserData();
}
/**
* @return UserDataInterface
*/
public function getUserData()
{
$data = $this->_adapter->getResourceData();
return $this->_createUserData($data);
}
protected function _createUserData(array $data)
{
$name = $this->_adapter->getProviderName();
$class = "Httpcb\\OAuth\\UserData\\{$name}";
return new $class($data);
}
}