Updated the interfaces and dropped oauth version
Seems the oauth lib's stable version is 3.2, dropped down from the 4 version to that.
This commit is contained in:
parent
c244e02d46
commit
dc06f37320
5 changed files with 128 additions and 2 deletions
|
@ -23,7 +23,7 @@
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.4",
|
"php": ">=5.4",
|
||||||
"league/oauth2-server": "4.*"
|
"league/oauth2-server": "3.2.*"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace Pickles\OAuth2;
|
namespace Pickles\OAuth2;
|
||||||
|
|
||||||
use \League\OAuth2\Server\Entity\AbstractTokenEntity;
|
use \League\OAuth2\Server\Entity\AbstractTokenEntity;
|
||||||
|
use \League\OAuth2\Server\Entity\AccessTokenEntity;
|
||||||
use \League\OAuth2\Server\Entity\ScopeEntity;
|
use \League\OAuth2\Server\Entity\ScopeEntity;
|
||||||
use \League\OAuth2\Server\Storage\AccessTokenInterface;
|
use \League\OAuth2\Server\Storage\AccessTokenInterface;
|
||||||
|
|
||||||
|
@ -10,27 +11,74 @@ class AccessTokenStorage extends StorageAdapter implements AccessTokenInterface
|
||||||
{
|
{
|
||||||
public function get($token)
|
public function get($token)
|
||||||
{
|
{
|
||||||
|
$sql = 'SELECT oauth_session_access_tokens.*'
|
||||||
|
. ' FROM oauth_session_access_tokens'
|
||||||
|
. ' WHERE access_token = ?'
|
||||||
|
. ' AND access_token_expires >= ?;';
|
||||||
|
|
||||||
|
$results = $this->db->fetch($sql, [$token, time()]);
|
||||||
|
|
||||||
|
if (count($results) === 1)
|
||||||
|
{
|
||||||
|
return (new AccessTokenEntity($this->server))
|
||||||
|
->setId($results[0]['access_token'])
|
||||||
|
->setExpireTime($results[0]['access_token_expires']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getScopes(AbstractTokenEntity $token)
|
public function getScopes(AbstractTokenEntity $token)
|
||||||
{
|
{
|
||||||
|
$sql = 'SELECT oauth_scopes.id, oauth_scopes.description'
|
||||||
|
. ' FROM oauth_session_token_scopes'
|
||||||
|
. ' INNER JOIN oauth_scopes'
|
||||||
|
. ' ON oauth_session_token_scopes.scope_id = oauth_scopes.id'
|
||||||
|
. ' WHERE oauth_session_token_scopes.session_access_token_id = ?;';
|
||||||
|
|
||||||
|
$results = $this->db->fetch($sql, [$token->getId()]);
|
||||||
|
$response = [];
|
||||||
|
|
||||||
|
if (count($results) > 0)
|
||||||
|
{
|
||||||
|
foreach ($results as $row)
|
||||||
|
{
|
||||||
|
$response[] = (new ScopeEntity($this->server))->hydrate([
|
||||||
|
'id' => $row['id'],
|
||||||
|
'description' => $row['description']
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create($token, $expiration, $session_id)
|
public function create($token, $expiration, $session_id)
|
||||||
{
|
{
|
||||||
|
$sql = 'INSERT INTO oauth_session_access_tokens'
|
||||||
|
. ' (access_token, session_id, access_token_expires)'
|
||||||
|
. ' VALUES'
|
||||||
|
. ' (?, ?, ?);';
|
||||||
|
|
||||||
|
$this->db->execute($sql, [$token, $session_id, $expiration]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function associateScope(AbstractTokenEntity $token, ScopeEntity $scope)
|
public function associateScope(AbstractTokenEntity $token, ScopeEntity $scope)
|
||||||
{
|
{
|
||||||
|
$sql = 'INSERT INTO oauth_session_token_scopes'
|
||||||
|
. ' (access_token, scope)'
|
||||||
|
. ' VALUES'
|
||||||
|
. ' (?, ?);';
|
||||||
|
|
||||||
|
$this->db->execute($sql, [$token->getId(), $scope->getId()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function delete(AbstractTokenEntity $token)
|
public function delete(AbstractTokenEntity $token)
|
||||||
{
|
{
|
||||||
|
$sql = 'DELETE FROM oauth_session_token_scopes'
|
||||||
|
. ' WHERE access_token = ?;';
|
||||||
|
|
||||||
|
$this->db->execute($sql, [$token->getId()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ class ClientStorage extends StorageAdapter implements ClientInterface
|
||||||
{
|
{
|
||||||
$sql = 'SELECT oauth_clients.id, oauth_clients.name'
|
$sql = 'SELECT oauth_clients.id, oauth_clients.name'
|
||||||
. ' FROM oauth_clients'
|
. ' FROM oauth_clients'
|
||||||
. ' JOIN oauth_sessions'
|
. ' INNER JOIN oauth_sessions'
|
||||||
. ' ON oauth_clients.id = oauth_sessions.client_id'
|
. ' ON oauth_clients.id = oauth_sessions.client_id'
|
||||||
. ' WHERE oauth_sessions.id = ?';
|
. ' WHERE oauth_sessions.id = ?';
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,18 @@ class ScopeStorage extends StorageAdapter implements ScopeInterface
|
||||||
{
|
{
|
||||||
public function get($scope, $grant_type = null, $client_id = null)
|
public function get($scope, $grant_type = null, $client_id = null)
|
||||||
{
|
{
|
||||||
|
$sql = 'SELECT * FROM oauth_scopes WHERE id = ?;';
|
||||||
|
$results = $this->db->fetch($sql, [$scope]);
|
||||||
|
|
||||||
|
if (count($results) === 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (new ScopeEntity($this->server))->hydrate([
|
||||||
|
'id' => $result[0]['id'],
|
||||||
|
'description' => $result[0]['description'],
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,27 +13,94 @@ class SessionStorage extends StorageAdapter implements SessionInterface
|
||||||
{
|
{
|
||||||
public function getByAccessToken(AccessTokenEntity $access_token)
|
public function getByAccessToken(AccessTokenEntity $access_token)
|
||||||
{
|
{
|
||||||
|
$sql = 'SELECT oauth_sessions.id, oauth_sessions.owner_type,'
|
||||||
|
. ' oauth_sessions.owner_id, oauth_sessions.client_id,'
|
||||||
|
. ' oauth_sessions.client_redirect_uri'
|
||||||
|
. ' FROM oauth_sessions'
|
||||||
|
. ' INNER JOIN oauth_session_access_tokens'
|
||||||
|
. ' ON oauth_session_access_tokens.session_id = oauth_sessions.id'
|
||||||
|
. ' WHERE oauth_session_access_tokens.access_token = ?;';
|
||||||
|
|
||||||
|
$results = $this->db->fetch($sql, [$access_token->getId()]);
|
||||||
|
|
||||||
|
if (count($results) === 1)
|
||||||
|
{
|
||||||
|
$session = new SessionEntity($this->server);
|
||||||
|
$session->setId($result[0]['id']);
|
||||||
|
$session->setOwner($result[0]['owner_type'], $result[0]['owner_id']);
|
||||||
|
|
||||||
|
return $session;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getByAuthCode(AuthCodeEntity $auth_code)
|
public function getByAuthCode(AuthCodeEntity $auth_code)
|
||||||
{
|
{
|
||||||
|
$sql = 'SELECT oauth_sessions.id, oauth_sessions.owner_type,'
|
||||||
|
. ' oauth_sessions.owner_id, oauth_sessions.client_id,'
|
||||||
|
. ' oauth_sessions.client_redirect_uri'
|
||||||
|
. ' FROM oauth_sessions'
|
||||||
|
. ' INNER JOIN oauth_authcodes'
|
||||||
|
. ' ON oauth_auth_codes.session_id = oauth_sessions.id'
|
||||||
|
. ' WHERE oauth_auth_codes.auth_code = ?;';
|
||||||
|
|
||||||
|
$results = $this->db->fetch($sql, [$auth_code->getId()]);
|
||||||
|
|
||||||
|
if (count($results) === 1)
|
||||||
|
{
|
||||||
|
$session = new SessionEntity($this->server);
|
||||||
|
$session->setId($result[0]['id']);
|
||||||
|
$session->setOwner($result[0]['owner_type'], $result[0]['owner_id']);
|
||||||
|
|
||||||
|
return $session;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getScopes(SessionEntity $session)
|
public function getScopes(SessionEntity $session)
|
||||||
{
|
{
|
||||||
|
$sql = 'SELECT oauth_sessions.*'
|
||||||
|
. ' FROM oauth_sessions'
|
||||||
|
. ' INNER JOIN oauth_session_token_scopes'
|
||||||
|
. ' ON oauth_sessions.id = oauth_session_token_scopes.session_access_token_id'
|
||||||
|
. ' INNER JOIN oauth_scopes'
|
||||||
|
. ' ON oauth_scopes.id = oauth_session_token_scopes.scope_id'
|
||||||
|
. ' WHERE oauth_sessions.id = ?;';
|
||||||
|
|
||||||
|
$results = $this->db->fetch($sql, [$session->getId()]);
|
||||||
|
$scopes = [];
|
||||||
|
|
||||||
|
foreach ($results as $scope)
|
||||||
|
{
|
||||||
|
$scopes[] = (new ScopeEntity($this->server))->hydrate([
|
||||||
|
'id' => $scope['id'],
|
||||||
|
'description' => $scope['description'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $scopes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create($owner_type, $owner_id, $client_id, $client_redirect_uri = null)
|
public function create($owner_type, $owner_id, $client_id, $client_redirect_uri = null)
|
||||||
{
|
{
|
||||||
|
$sql = 'INSERT INTO oauth_sessions'
|
||||||
|
. ' (owner_type, owner_id, client_id)'
|
||||||
|
. ' VALUES'
|
||||||
|
. ' (?, ?, ?);';
|
||||||
|
|
||||||
|
return $this->db->execute($sql, [$owner_type, $owner_id, $client_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function associateScope(SessionEntity $session, ScopeEntity $scope)
|
public function associateScope(SessionEntity $session, ScopeEntity $scope)
|
||||||
{
|
{
|
||||||
|
$sql = 'INSERT INTO oauth_session_token_scopes'
|
||||||
|
. ' (session_access_token_id, scope_id)'
|
||||||
|
. ' VALUES'
|
||||||
|
. ' (?, ?);';
|
||||||
|
|
||||||
|
$this->db->execute($sql, [$session->getId(), $scope->getId()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue