Cleaned up OAuth2 response
This commit is contained in:
parent
80a36aee99
commit
1e8e9efd95
4 changed files with 22 additions and 52 deletions
|
@ -4,6 +4,7 @@ namespace Pickles\OAuth2;
|
|||
|
||||
use \OAuth2\GrantType\UserCredentials;
|
||||
use \OAuth2\Request;
|
||||
use \OAuth2\Response;
|
||||
use \OAuth2\Server;
|
||||
use \Pickles\Config;
|
||||
|
||||
|
@ -24,23 +25,9 @@ class Resource extends \Pickles\Resource
|
|||
|
||||
switch (substr($_REQUEST['request'], strlen($_SERVER['__version']) + 2))
|
||||
{
|
||||
case 'oauth/access_token':
|
||||
case 'oauth2/token':
|
||||
try
|
||||
{
|
||||
$storage = new Storage($this->mongo, ['user_table' => 'user']);
|
||||
$server = new Server($storage);
|
||||
$server->addGrantType(new UserCredentials($storage));
|
||||
$server->handleTokenRequest(Request::createFromGlobals())->send();
|
||||
exit;
|
||||
|
||||
$server = new AuthorizationServer;
|
||||
|
||||
$server->setSessionStorage(new SessionStorage);
|
||||
$server->setAccessTokenStorage(new AccessTokenStorage);
|
||||
$server->setClientStorage(new ClientStorage);
|
||||
$server->setScopeStorage(new ScopeStorage);
|
||||
$server->setRefreshTokenStorage(new RefreshTokenStorage);
|
||||
|
||||
$grant_type = $_REQUEST['grant_type'];
|
||||
$grants = ['password'];
|
||||
|
||||
|
@ -54,7 +41,7 @@ class Resource extends \Pickles\Resource
|
|||
throw new \Exception('Unsupported grant type.', 403);
|
||||
}
|
||||
|
||||
// Defaults TTLs to 1 day and 1 week respectively
|
||||
// @todo Defaults TTLs to 1 day and 1 week respectively
|
||||
$token_ttl = 3600;
|
||||
$refresh_ttl = 604800;
|
||||
|
||||
|
@ -78,45 +65,34 @@ class Resource extends \Pickles\Resource
|
|||
break;
|
||||
|
||||
case 'password':
|
||||
$grant = new PasswordGrant;
|
||||
$grant->setAccessTokenTTL($token_ttl);
|
||||
$storage = new Storage($this->mongo, ['user_table' => 'user']);
|
||||
$server = new Server($storage);
|
||||
|
||||
$grant->setVerifyCredentialsCallback(function ($username, $password)
|
||||
$server->addGrantType(new UserCredentials($storage));
|
||||
|
||||
$request = Request::createFromGlobals();
|
||||
$response = new Response;
|
||||
$response = $server->handleTokenRequest($request, $response);
|
||||
$body = json_decode($response->getResponseBody(), true);
|
||||
|
||||
if (isset($body['error']))
|
||||
{
|
||||
$user = $this->mongo->user->findOne(['email' => $username]);
|
||||
return $user && password_verify($password, $user['password']);
|
||||
});
|
||||
$parameters = $response->getParameters();
|
||||
|
||||
throw new \Exception(
|
||||
$parameters['error_description'],
|
||||
$response->getStatusCode()
|
||||
);
|
||||
}
|
||||
|
||||
$response = $body;
|
||||
break;
|
||||
|
||||
case 'refresh_token':
|
||||
throw new \Exception('Not Implemented', 501);
|
||||
|
||||
// @todo Need to work through this, appears lib is busted
|
||||
$grant = new RefreshTokenGrant;
|
||||
//$grant->setAccessTokenTTL($refresh_ttl);
|
||||
$server->addGrantType($grant);
|
||||
break;
|
||||
}
|
||||
|
||||
$server->addGrantType($grant);
|
||||
|
||||
// Adds the refresh token grant if enabled
|
||||
if ($grant_type != 'refresh_token'
|
||||
&& in_array('refresh_token', $grants))
|
||||
{
|
||||
if (isset($config['ttl']['refresh_token']))
|
||||
{
|
||||
$refresh_ttl = $config['ttl']['refresh_token'];
|
||||
}
|
||||
|
||||
$grant = new RefreshTokenGrant;
|
||||
$grant->setAccessTokenTTL($refresh_ttl);
|
||||
$server->addGrantType($grant);
|
||||
}
|
||||
|
||||
$response = $server->issueAccessToken();
|
||||
|
||||
return $response;
|
||||
}
|
||||
catch (OAuthException $e)
|
||||
|
|
0
src/Redis.php
Normal file
0
src/Redis.php
Normal file
|
@ -14,12 +14,6 @@
|
|||
|
||||
namespace Pickles;
|
||||
|
||||
use \League\OAuth2\Server\ResourceServer;
|
||||
use Pickles\OAuth2\AccessTokenStorage;
|
||||
use Pickles\OAuth2\ClientStorage;
|
||||
use Pickles\OAuth2\ScopeStorage;
|
||||
use Pickles\OAuth2\SessionStorage;
|
||||
|
||||
/**
|
||||
* Resource Class
|
||||
*
|
||||
|
|
|
@ -54,7 +54,7 @@ class Router extends Object
|
|||
$_SERVER['__version'] = substr($version, 1);
|
||||
|
||||
// Checks if we're trying to rock some OAuth
|
||||
if ($components[0] == 'oauth')
|
||||
if ($components[0] == 'oauth2')
|
||||
{
|
||||
$class = 'Pickles\OAuth2\Resource';
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue