mirror of
https://github.com/elyby/oauth2-server.git
synced 2024-12-15 17:58:56 +05:30
Too many changes to describe
This commit is contained in:
parent
2d90a09f65
commit
0250d8d4d1
@ -6,11 +6,11 @@
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"symfony/http-foundation": "v2.4.*"
|
||||
"symfony/http-foundation": "2.4.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": ">=0.7.2",
|
||||
"league/phpunit-coverage-listener": "~1.0"
|
||||
"league/phpunit-coverage-listener": "~1.0",
|
||||
"phpdocumentor/phpdocumentor": "2.*"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Authorization Server
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
@ -16,6 +16,7 @@ use League\OAuth2\Server\Grant\GrantTypeInterface;
|
||||
use League\OAuth2\Server\Exception\ClientException;
|
||||
use League\OAuth2\Server\Exception\ServerException;
|
||||
use League\OAuth2\Server\Exception\InvalidGrantTypeException;
|
||||
use League\OAuth2\Server\Storage\StorageWrapper;
|
||||
use League\OAuth2\Server\Storage\ClientInterface;
|
||||
use League\OAuth2\Server\Storage\AccessTokenInterface;
|
||||
use League\OAuth2\Server\Storage\AuthCodeInterface;
|
||||
@ -231,45 +232,49 @@ class Authorization
|
||||
|
||||
/**
|
||||
* Set the client storage
|
||||
* @param ClientInterface $client
|
||||
* @param ClientInterface $storage
|
||||
* @return self
|
||||
*/
|
||||
public function setClientStorage(ClientInterface $client)
|
||||
public function setClientStorage(ClientInterface $storage)
|
||||
{
|
||||
$this->storages['client'] = $client;
|
||||
$storage->setServer($this);
|
||||
$this->storages['client'] = $storage;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the session storage
|
||||
* @param SessionInterface $session
|
||||
* @param SessionInterface $storage
|
||||
* @return self
|
||||
*/
|
||||
public function setSessionStorage(SessionInterface $session)
|
||||
public function setSessionStorage(SessionInterface $storage)
|
||||
{
|
||||
$this->storages['session'] = $session;
|
||||
$storage->setServer($this);
|
||||
$this->storages['session'] = $storage;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the access token storage
|
||||
* @param AccessTokenInterface $accessToken
|
||||
* @param AccessTokenInterface $storage
|
||||
* @return self
|
||||
*/
|
||||
public function setAccessTokenStorage(AccessTokenInterface $accessToken)
|
||||
public function setAccessTokenStorage(AccessTokenInterface $storage)
|
||||
{
|
||||
$this->storages['access_token'] = $accessToken;
|
||||
$storage->setServer($this);
|
||||
$this->storages['access_token'] = $storage;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the refresh token storage
|
||||
* @param RefreshTokenInteface $refreshToken
|
||||
* @param RefreshTokenInteface $storage
|
||||
* @return self
|
||||
*/
|
||||
public function setRefreshTokenStorage(RefreshTokenInterface $refreshToken)
|
||||
public function setRefreshTokenStorage(RefreshTokenInterface $storage)
|
||||
{
|
||||
$this->storages['refresh_token'] = $refreshToken;
|
||||
$storage->setServer($this);
|
||||
$this->storages['refresh_token'] = $storage;
|
||||
return $this;
|
||||
}
|
||||
|
||||
@ -280,18 +285,20 @@ class Authorization
|
||||
*/
|
||||
public function setAuthCodeStorage(AuthCodeInterface $authCode)
|
||||
{
|
||||
$storage->setServer($this);
|
||||
$this->storages['auth_code'] = $authCode;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the scope storage
|
||||
* @param ScopeInterface $scope
|
||||
* @param ScopeInterface $storage
|
||||
* @return self
|
||||
*/
|
||||
public function setScopeStorage(ScopeInterface $scope)
|
||||
public function setScopeStorage(ScopeInterface $storage)
|
||||
{
|
||||
$this->storages['scope'] = $scope;
|
||||
$storage->setServer($this);
|
||||
$this->storages['scope'] = $storage;
|
||||
return $this;
|
||||
}
|
||||
|
||||
@ -359,7 +366,8 @@ class Authorization
|
||||
}
|
||||
|
||||
/**
|
||||
* Default scope to be used if none is provided and requireScopeParam is false
|
||||
* Default scope to be used if none is provided and requireScopeParam() is false
|
||||
* @param string $default Name of the default scope
|
||||
* @param self
|
||||
*/
|
||||
public function setDefaultScope($default = null)
|
||||
|
@ -1,64 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* OAuth 2.0 Abstract token
|
||||
*
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Entities;
|
||||
|
||||
use League\OAuth2\Server\Storage\SessionStorageInterface;
|
||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||
use League\OAuth2\Server\Util\SecureKey;
|
||||
use League\OAuth2\Server\Exception\ServerException;
|
||||
use \League\OAuth2\Server\Authorization;
|
||||
use \League\OAuth2\Server\Resource;
|
||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||
|
||||
/**
|
||||
* Abstract token class
|
||||
*/
|
||||
abstract class AbstractToken
|
||||
{
|
||||
/**
|
||||
* Access token ID
|
||||
* @var string
|
||||
*/
|
||||
protected $token = null;
|
||||
protected $token;
|
||||
|
||||
/**
|
||||
* Access token storage
|
||||
* @var \League\OAuth2\Server\Storage\AccessTokenInterface
|
||||
* Session ID
|
||||
* @var string
|
||||
*/
|
||||
protected $storage = null;
|
||||
|
||||
/**
|
||||
* Session storage
|
||||
* @var \League\OAuth2\Server\Storage\SessionInterface
|
||||
*/
|
||||
protected $sessionStorage = null;
|
||||
protected $sessionId;
|
||||
|
||||
/**
|
||||
* Associated session
|
||||
* @var \League\OAuth2\Server\Session
|
||||
*/
|
||||
protected $session = null;
|
||||
protected $session;
|
||||
|
||||
/**
|
||||
* Session scopes
|
||||
* @var \Symfony\Component\HttpFoundation\ParameterBag
|
||||
*/
|
||||
protected $scopes = null;
|
||||
protected $scopes;
|
||||
|
||||
/**
|
||||
* Token expire time
|
||||
* @var int
|
||||
*/
|
||||
protected $expireTime = 0;
|
||||
|
||||
/**
|
||||
* Authorization or resource server
|
||||
* @var \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
/**
|
||||
* __construct
|
||||
* @param mixed $storage
|
||||
* @param \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource $server
|
||||
* @return self
|
||||
*/
|
||||
public function __construct($storage)
|
||||
public function __construct($server)
|
||||
{
|
||||
$this->storage = $storage;
|
||||
if (! $server instanceof Authorization && ! $server instanceof Resource) {
|
||||
throw new ServerException('No instance of Authorization or Resource server injected');
|
||||
}
|
||||
|
||||
$this->server = $server;
|
||||
$this->scopes = new ParameterBag();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get storage
|
||||
* @return AccessTokenInterface
|
||||
*/
|
||||
public function getStorage()
|
||||
{
|
||||
return $this->storage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set session
|
||||
* @param \League\OAuth2\Server\Session $session
|
||||
@ -76,55 +92,35 @@ abstract class AbstractToken
|
||||
*/
|
||||
public function getSession()
|
||||
{
|
||||
return $this->session;
|
||||
if ($this->session instanceof Session) {
|
||||
return $this->session;
|
||||
}
|
||||
|
||||
if ($this->sessionId !== null) {
|
||||
$session = $this->server->getStorage('session')->getSession($this->sessionId);
|
||||
}
|
||||
|
||||
throw new ServerException('No session ID set for this token');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set token TTL
|
||||
* @param integer $ttl TTL in seconds
|
||||
* Set the expire time of the token
|
||||
* @param integer $expireTime Unix time stamp
|
||||
* @return self
|
||||
*/
|
||||
public function setTTL($ttl = 0)
|
||||
public function setExpireTime($expireTime)
|
||||
{
|
||||
$this->ttl = $ttl;
|
||||
$this->expireTime = $expireTime;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get token TTL
|
||||
* @return integer
|
||||
*/
|
||||
public function getTTL()
|
||||
{
|
||||
return $this->ttl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the creation timestamp
|
||||
* @param integer $timestamp Unix timestamp
|
||||
* @return self
|
||||
*/
|
||||
public function setTimestamp($timestamp = 0)
|
||||
{
|
||||
$this->timestamp = $timestamp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get access token creation timestamp
|
||||
* @return integer Unix timestamp
|
||||
*/
|
||||
public function getTimestamp()
|
||||
{
|
||||
return $this->timestamp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return creation timestamp + TTL
|
||||
* Return token expire time
|
||||
* @return int
|
||||
*/
|
||||
public function getExpireTime()
|
||||
{
|
||||
return $this->getTimestamp() + $this->getTTL();
|
||||
return $this->expireTime;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -181,8 +177,14 @@ abstract class AbstractToken
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the token to the database
|
||||
* @return self
|
||||
* Expire the token
|
||||
* @return void
|
||||
*/
|
||||
abstract function save();
|
||||
abstract public function expire();
|
||||
|
||||
/**
|
||||
* Save the token
|
||||
* @return void
|
||||
*/
|
||||
abstract public function save();
|
||||
}
|
||||
|
@ -1,28 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* OAuth 2.0 Access token entity
|
||||
*
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Entities;
|
||||
|
||||
use League\OAuth2\Server\Storage\SessionStorageInterface;
|
||||
use League\OAuth2\Server\Storage\AccessTokenInterface;
|
||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||
use League\OAuth2\Server\Util\SecureKey;
|
||||
use League\OAuth2\Server\Exception\InvalidAccessTokenException;
|
||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||
|
||||
/**
|
||||
* Access token entity class
|
||||
*/
|
||||
class AccessToken extends AbstractToken
|
||||
{
|
||||
/**
|
||||
* __construct
|
||||
* @param AccessTokenInterface $storage
|
||||
* @return self
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct(AccessTokenInterface $storage)
|
||||
{
|
||||
parent::__construct($storage);
|
||||
}
|
||||
|
||||
public function save()
|
||||
{
|
||||
$this->getStorage()->createAccessToken(
|
||||
$this->server->getStorage('access_token')->createAccessToken(
|
||||
$this->getToken(),
|
||||
$this->getExpireTime(),
|
||||
$this->getSession()->getId()
|
||||
@ -30,7 +35,7 @@ class AccessToken extends AbstractToken
|
||||
|
||||
// Associate the scope with the token
|
||||
foreach ($this->getScopes() as $scope) {
|
||||
$this->getStorage()->associateScope($this->getToken(), $scope->getId());
|
||||
$this->server->getStorage('access_token')->associateScope($this->getToken(), $scope->getId());
|
||||
}
|
||||
|
||||
return $this;
|
||||
|
@ -1,58 +1,144 @@
|
||||
<?php
|
||||
/**
|
||||
* OAuth 2.0 Client entity
|
||||
*
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Entities;
|
||||
|
||||
use League\OAuth2\Server\Exception\ServerException;
|
||||
use League\OAuth2\Server\Authorization;
|
||||
use League\OAuth2\Server\Resource;
|
||||
|
||||
/**
|
||||
* Client entity class
|
||||
*/
|
||||
class Client
|
||||
{
|
||||
/**
|
||||
* Client identifier
|
||||
* @var string
|
||||
*/
|
||||
protected $id = null;
|
||||
|
||||
/**
|
||||
* Client secret
|
||||
* @var string
|
||||
*/
|
||||
protected $secret = null;
|
||||
|
||||
/**
|
||||
* Client name
|
||||
* @var string
|
||||
*/
|
||||
protected $name = null;
|
||||
|
||||
/**
|
||||
* Client redirect URI
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectUri = null;
|
||||
|
||||
/**
|
||||
* Authorization or resource server
|
||||
* @var \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
/**
|
||||
* __construct
|
||||
* @param \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource $server
|
||||
* @return self
|
||||
*/
|
||||
public function __construct($server)
|
||||
{
|
||||
if (! $server instanceof Authorization && ! $server instanceof Resource) {
|
||||
throw new ServerException('No instance of Authorization or Resource server injected');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the client identifier
|
||||
* @param string $id
|
||||
* @return self
|
||||
*/
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the client identifier
|
||||
* @return string
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the client secret
|
||||
* @param string $secret
|
||||
* @return self
|
||||
*/
|
||||
public function setSecret($secret)
|
||||
{
|
||||
$this->secret = $secret;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the client secret
|
||||
* @return string
|
||||
*/
|
||||
public function getSecret()
|
||||
{
|
||||
return $this->secret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the client name
|
||||
* @param string $name
|
||||
* @return self
|
||||
*/
|
||||
public function setName($name)
|
||||
{
|
||||
$this->name = $name;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the client name
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the client redirect URI
|
||||
* @param string $redirectUri
|
||||
* @return self
|
||||
*/
|
||||
public function setRedirectUri($redirectUri)
|
||||
{
|
||||
$this->redirectUri = $redirectUri;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returnt the client redirect URI
|
||||
* @return string
|
||||
*/
|
||||
public function getRedirectUri()
|
||||
{
|
||||
return $this->redirectUri;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,30 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* OAuth 2.0 Refresh token entity
|
||||
*
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Entities;
|
||||
|
||||
use League\OAuth2\Server\Storage\SessionStorageInterface;
|
||||
use League\OAuth2\Server\Storage\RefreshTokenInterface;
|
||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||
use League\OAuth2\Server\Util\SecureKey;
|
||||
use League\OAuth2\Server\Exception\InvalidAccessTokenException;
|
||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||
|
||||
/**
|
||||
* Refresh token entity class
|
||||
*/
|
||||
class RefreshToken extends AbstractToken
|
||||
{
|
||||
/**
|
||||
* Access token associated to refresh token
|
||||
* @var \League\OAuth2\Server\Entities\AccessToken
|
||||
*/
|
||||
protected $accessToken;
|
||||
|
||||
/**
|
||||
* __construct
|
||||
* @param RefreshTokenInterface $storage
|
||||
* @return self
|
||||
*/
|
||||
public function __construct(RefreshTokenInterface $storage)
|
||||
{
|
||||
parent::__construct($storage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Associate an access token
|
||||
* @param AccessToken $accessToken
|
||||
* @param \League\OAuth2\Server\Entities\AccessToken $accessToken
|
||||
* @return self
|
||||
*/
|
||||
public function setAccessToken(AccessToken $accessToken)
|
||||
@ -43,11 +49,11 @@ class RefreshToken extends AbstractToken
|
||||
}
|
||||
|
||||
/**
|
||||
* (@inheritdoc)
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
$this->getStorage()->createAccessToken(
|
||||
$this->server->getStorage('refresh_token')->createAccessToken(
|
||||
$this->getToken(),
|
||||
$this->getExpireTime(),
|
||||
$this->getAccessToken()->getToken()
|
||||
@ -55,7 +61,7 @@ class RefreshToken extends AbstractToken
|
||||
|
||||
// Associate the scope with the token
|
||||
foreach ($this->getScopes() as $scope) {
|
||||
$this->getStorage()->associateScope($this->getToken(), $scope->getId());
|
||||
$this->server->getStorage('refresh_token')->associateScope($this->getToken(), $scope->getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,30 +1,87 @@
|
||||
<?php
|
||||
/**
|
||||
* OAuth 2.0 scope entity
|
||||
*
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Entities;
|
||||
|
||||
/**
|
||||
* Scope entity class
|
||||
*/
|
||||
class Scope
|
||||
{
|
||||
protected $id = null;
|
||||
/**
|
||||
* Scope identifier
|
||||
* @var string
|
||||
*/
|
||||
protected $id;
|
||||
|
||||
protected $description = null;
|
||||
/**
|
||||
* Scope description
|
||||
* @var string
|
||||
*/
|
||||
protected $description;
|
||||
|
||||
/**
|
||||
* Authorization or resource server
|
||||
* @var \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
/**
|
||||
* __construct
|
||||
* @param \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource $server
|
||||
* @return self
|
||||
*/
|
||||
public function __construct($server)
|
||||
{
|
||||
if (! $server instanceof Authorization && ! $server instanceof Resource) {
|
||||
throw new ServerException('No instance of Authorization or Resource server injected');
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the scope identifer
|
||||
* @param string $id The scope identifier
|
||||
* @return self
|
||||
*/
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the scope identifer
|
||||
* @return string
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the scope's descripton
|
||||
* @param string $description
|
||||
* @return self
|
||||
*/
|
||||
public function setDescription($description)
|
||||
{
|
||||
$this->description = $description;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the scope's description
|
||||
* @return string
|
||||
*/
|
||||
public function getDescription()
|
||||
{
|
||||
return $this->description;
|
||||
|
@ -1,71 +1,112 @@
|
||||
<?php
|
||||
/**
|
||||
* OAuth 2.0 session entity
|
||||
*
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Entities;
|
||||
|
||||
use OutOfBoundsException;
|
||||
use League\OAuth2\Server\Exception\OAuth2Exception;
|
||||
use League\OAuth2\Server\Storage\SessionInterface;
|
||||
use League\OAuth2\Server\Exception\ServerException;
|
||||
use League\OAuth2\Server\Authorization;
|
||||
use League\OAuth2\Server\Resource;
|
||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||
|
||||
/**
|
||||
* Session entity grant
|
||||
*/
|
||||
class Session
|
||||
{
|
||||
/**
|
||||
* Session ID
|
||||
* Session identifier
|
||||
* @var string
|
||||
*/
|
||||
protected $id = null;
|
||||
|
||||
protected $clientId = null;
|
||||
|
||||
protected $ownerId = null;
|
||||
|
||||
protected $ownerType = null;
|
||||
|
||||
protected $authCode = null;
|
||||
|
||||
protected $accessToken = null;
|
||||
|
||||
protected $refreshToken = null;
|
||||
protected $id;
|
||||
|
||||
/**
|
||||
* Session storage
|
||||
* @var \League\OAuth2\Server\Storage\SessionInterface
|
||||
* Client identifier
|
||||
* @var string
|
||||
*/
|
||||
protected $storage = null;
|
||||
protected $clientId;
|
||||
|
||||
/**
|
||||
* Session owner identifier
|
||||
* @var string
|
||||
*/
|
||||
protected $ownerId;
|
||||
|
||||
/**
|
||||
* Session owner type (e.g. "user")
|
||||
* @var string
|
||||
*/
|
||||
protected $ownerType;
|
||||
|
||||
/**
|
||||
* Auth code
|
||||
* @var \League\OAuth2\Server\Entities\AuthCode
|
||||
*/
|
||||
protected $authCode;
|
||||
|
||||
/**
|
||||
* Access token
|
||||
* @var \League\OAuth2\Server\Entities\AccessToken
|
||||
*/
|
||||
protected $accessToken;
|
||||
|
||||
/**
|
||||
* Refresh token
|
||||
* @var \League\OAuth2\Server\Entities\RefreshToken
|
||||
*/
|
||||
protected $refreshToken;
|
||||
|
||||
/**
|
||||
* Session scopes
|
||||
* @var \Symfony\Component\HttpFoundation\ParameterBag
|
||||
*/
|
||||
protected $scopes = null;
|
||||
protected $scopes;
|
||||
|
||||
/**
|
||||
* Constuctor
|
||||
* @param SessionInterface $storage
|
||||
* Authorization or resource server
|
||||
* @var \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
/**
|
||||
* __construct
|
||||
* @param \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource $server
|
||||
* @return self
|
||||
*/
|
||||
public function __construct(SessionInterface $storage)
|
||||
public function __construct($server)
|
||||
{
|
||||
$this->storage = $storage;
|
||||
if (! $server instanceof Authorization && ! $server instanceof Resource) {
|
||||
throw new ServerException('No instance of Authorization or Resource server injected');
|
||||
}
|
||||
|
||||
$this->scopes = new ParameterBag();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get storage
|
||||
* @return SessionInterface
|
||||
* Set the session identifier
|
||||
* @param string $id
|
||||
* @return self
|
||||
*/
|
||||
public function getStorage()
|
||||
{
|
||||
return $this->storage;
|
||||
}
|
||||
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the session identifier
|
||||
* @return string
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
@ -95,41 +136,62 @@ class Session
|
||||
return $this->scopes->has($scope);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return all scopes associated with the session
|
||||
* @return array Array of \League\OAuth2\Server\Entities\Scope
|
||||
*/
|
||||
public function getScopes()
|
||||
{
|
||||
return $this->scopes;
|
||||
}
|
||||
|
||||
public function associateAccessToken(AccessToken $accessToken)
|
||||
{
|
||||
$this->accessToken = $accessToken;
|
||||
}
|
||||
|
||||
public function associateRefreshToken(RefreshToken $refreshToken)
|
||||
{
|
||||
$this->refreshToken = $refreshToken;
|
||||
}
|
||||
|
||||
public function associateAuthCode(AuthCode $authCode)
|
||||
{
|
||||
$this->authCode = $authCode;
|
||||
return $this->scopes->all();
|
||||
}
|
||||
|
||||
/**
|
||||
* Associate a client
|
||||
* @param League\OAuth2\Server\Client $client The client
|
||||
* Associate an access token with the session
|
||||
* @param \League\OAuth2\Server\Entities\AccessToken $accessToken
|
||||
* @return self
|
||||
*/
|
||||
public function associateAccessToken(AccessToken $accessToken)
|
||||
{
|
||||
$this->accessToken = $accessToken;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Associate a refresh token with the session
|
||||
* @param \League\OAuth2\Server\Entities\RefreshToken $refreshToken
|
||||
* @return self
|
||||
*/
|
||||
public function associateRefreshToken(RefreshToken $refreshToken)
|
||||
{
|
||||
$this->refreshToken = $refreshToken;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Associate an authorization code with the session
|
||||
* @param \League\OAuth2\Server\Entities\AuthCode $authCode
|
||||
* @return self
|
||||
*/
|
||||
public function associateAuthCode(AuthCode $authCode)
|
||||
{
|
||||
$this->authCode = $authCode;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Associate a client with the session
|
||||
* @param League\OAuth2\Server\Entities\Client $client The client
|
||||
* @return self
|
||||
*/
|
||||
public function associateClient(Client $client)
|
||||
{
|
||||
$this->client = $client;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return client
|
||||
* @return League\OAuth2\Server\Client
|
||||
* Return the session client
|
||||
* @return League\OAuth2\Server\Entities\Client
|
||||
*/
|
||||
public function getClient()
|
||||
{
|
||||
@ -139,7 +201,7 @@ class Session
|
||||
/**
|
||||
* Set the session owner
|
||||
* @param string $type The type of the owner (e.g. user, app)
|
||||
* @param string $id The ID of the owner
|
||||
* @param string $id The identifier of the owner
|
||||
* @return self
|
||||
*/
|
||||
public function setOwner($type, $id)
|
||||
@ -151,7 +213,7 @@ class Session
|
||||
}
|
||||
|
||||
/**
|
||||
* Return session owner ID
|
||||
* Return session owner identifier
|
||||
* @return string
|
||||
*/
|
||||
public function getOwnerId()
|
||||
@ -168,10 +230,14 @@ class Session
|
||||
return $this->ownerType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the session
|
||||
* @return void
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
// Save the session and get an ID
|
||||
$id = $this->getStorage()->createSession(
|
||||
// Save the session and get an identifier
|
||||
$id = $this->server->getStorage('session')->createSession(
|
||||
$this->getOwnerType(),
|
||||
$this->getOwnerId(),
|
||||
$this->getClient()->getId(),
|
||||
@ -182,7 +248,7 @@ class Session
|
||||
|
||||
// Associate the scope with the session
|
||||
foreach ($this->getScopes() as $scope) {
|
||||
$this->getStorage()->associateScope($this->getId(), $scope->getId());
|
||||
$this->server->getStorage('session')->associateScope($this->getId(), $scope->getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Client Exception
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Invalid Access Token Exception
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Invalid Grant Type Exception
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Base Exception
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Server Exception
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* OAuth 2.0 Client credentials grant
|
||||
* OAuth 2.0 Abstract grant
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
@ -12,16 +12,42 @@
|
||||
namespace League\OAuth2\Server\Grant;
|
||||
|
||||
use League\OAuth2\Server\Authorization;
|
||||
use League\OAuth2\Server\Entities\Scope;
|
||||
|
||||
trait GrantTrait {
|
||||
/**
|
||||
* Abstract grant class
|
||||
*/
|
||||
abstract class AbstractGrant implements GrantTypeInterface
|
||||
{
|
||||
/**
|
||||
* Grant identifier
|
||||
* @var string
|
||||
*/
|
||||
protected $identifier = '';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @return void
|
||||
* Response type
|
||||
* @var string
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
protected $responseType = null;
|
||||
|
||||
/**
|
||||
* Callback to authenticate a user's name and password
|
||||
* @var function
|
||||
*/
|
||||
protected $callback = null;
|
||||
|
||||
/**
|
||||
* AuthServer instance
|
||||
* @var AuthServer
|
||||
*/
|
||||
protected $server = null;
|
||||
|
||||
/**
|
||||
* Access token expires in override
|
||||
* @var int
|
||||
*/
|
||||
protected $accessTokenTTL = null;
|
||||
|
||||
/**
|
||||
* Return the identifier
|
||||
@ -74,6 +100,12 @@ trait GrantTrait {
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a list of scopes, validate them and return an arrary of Scope entities
|
||||
* @param string $scopeParam A string of scopes (e.g. "profile email birthday")
|
||||
* @return array
|
||||
* @throws ClientException If scope is invalid, or no scopes passed when required
|
||||
*/
|
||||
public function validateScopes($scopeParam = '')
|
||||
{
|
||||
$scopesList = explode($this->server->getScopeDelimeter(), $scopeParam);
|
||||
@ -100,24 +132,37 @@ trait GrantTrait {
|
||||
$scopes = [];
|
||||
|
||||
foreach ($scopesList as $scopeItem) {
|
||||
$scopeDetails = $this->server->getStorage('scope')->getScope(
|
||||
$scope = $this->server->getStorage('scope')->getScope(
|
||||
$scopeItem,
|
||||
$client->getId(),
|
||||
$this->getIdentifier()
|
||||
);
|
||||
|
||||
if ($scopeDetails === false) {
|
||||
if (($scope instanceof Scope) === false) {
|
||||
throw new ClientException(sprintf($this->server->getExceptionMessage('invalid_scope'), $scopeItem), 4);
|
||||
}
|
||||
|
||||
$scope = new Scope($this->server->getStorage('scope'));
|
||||
$scope->setId($scopeDetails['id']);
|
||||
$scope->setName($scopeDetails['name']);
|
||||
|
||||
$scopes[] = $scope;
|
||||
}
|
||||
|
||||
return $scopes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Complete the grant flow
|
||||
*
|
||||
* Example response:
|
||||
* <pre>
|
||||
* array(
|
||||
* 'access_token' => (string), // The access token
|
||||
* 'refresh_token' => (string), // The refresh token (only set if the refresh token grant is enabled)
|
||||
* 'token_type' => 'bearer', // Almost always "bearer" (exceptions: JWT, SAML)
|
||||
* 'expires' => (int), // The timestamp of when the access token will expire
|
||||
* 'expires_in' => (int) // The number of seconds before the access token will expire
|
||||
* )
|
||||
* </pre>
|
||||
*
|
||||
* @return array An array of parameters to be passed back to the client
|
||||
*/
|
||||
abstract public function completeFlow();
|
||||
|
||||
}
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Auth code grant
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Client credentials grant
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
@ -25,10 +25,8 @@ use League\OAuth2\Server\Storage\ScopeInterface;
|
||||
/**
|
||||
* Client credentials grant class
|
||||
*/
|
||||
class ClientCredentials implements GrantTypeInterface
|
||||
class ClientCredentials extends AbstractGrant
|
||||
{
|
||||
use GrantTrait;
|
||||
|
||||
/**
|
||||
* Grant identifier
|
||||
* @var string
|
||||
@ -78,35 +76,30 @@ class ClientCredentials implements GrantTypeInterface
|
||||
}
|
||||
|
||||
// Validate client ID and client secret
|
||||
$clientDetails = $this->server->getStorage('client')->getClient(
|
||||
$client = $this->server->getStorage('client')->getClient(
|
||||
$clientId,
|
||||
$clientSecret,
|
||||
null,
|
||||
$this->getIdentifier()
|
||||
);
|
||||
|
||||
if ($clientDetails === false) {
|
||||
if (($client instanceof Client) === false) {
|
||||
throw new ClientException(Authorization::getExceptionMessage('invalid_client'), 8);
|
||||
}
|
||||
|
||||
$client = new Client;
|
||||
$client->setId($clientDetails['id']);
|
||||
$client->setSecret($clientDetails['secret']);
|
||||
|
||||
// Validate any scopes that are in the request
|
||||
$scopeParam = $this->server->getRequest()->request->get('scope', '');
|
||||
$scopes = $this->validateScopes($scopeParam);
|
||||
|
||||
// Create a new session
|
||||
$session = new Session($this->server->getStorage('session'));
|
||||
$session = new Session();
|
||||
$session->setOwner('client', $client->getId());
|
||||
$session->associateClient($client);
|
||||
|
||||
// Generate an access token
|
||||
$accessToken = new AccessToken($this->server->getStorage('access_token'));
|
||||
$accessToken->setId(SecureKey::make());
|
||||
$accessToken->setTimestamp(time());
|
||||
$accessToken->setTTL($this->server->getAccessTokenTTL());
|
||||
$accessToken = new AccessToken();
|
||||
$accessToken->setToken(SecureKey::make());
|
||||
$accessToken->setExpireTime($this->server->getAccessTokenTTL() + time());
|
||||
|
||||
// Associate scopes with the session and access token
|
||||
foreach ($scopes as $scope) {
|
||||
@ -115,18 +108,17 @@ class ClientCredentials implements GrantTypeInterface
|
||||
}
|
||||
|
||||
// Save everything
|
||||
$session->save();
|
||||
$session->save($this->server->getStorage('session'));
|
||||
$accessToken->setSession($session);
|
||||
$accessToken->save();
|
||||
$accessToken->save($this->server->getStorage('access_token'));
|
||||
|
||||
$response = [
|
||||
'access_token' => $accessToken->getId(),
|
||||
'access_token' => $accessToken->getToken(),
|
||||
'token_type' => 'Bearer',
|
||||
'expires' => $accessToken->getExpireTime(),
|
||||
'expires_in' => $accessToken->getTTL()
|
||||
'expires_in' => $this->server->getAccessTokenTTL()
|
||||
];
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Grant type interface
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
@ -19,30 +19,14 @@ use League\OAuth2\Server\Storage\SessionInterface;
|
||||
use League\OAuth2\Server\Storage\ClientInterface;
|
||||
use League\OAuth2\Server\Storage\ScopeInterface;
|
||||
|
||||
/**
|
||||
* Grant type interface
|
||||
*/
|
||||
interface GrantTypeInterface
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct();
|
||||
|
||||
/**
|
||||
* Complete the grant flow
|
||||
*
|
||||
* Example response:
|
||||
* <code>
|
||||
* array(
|
||||
* 'access_token' => (string), // The access token
|
||||
* 'refresh_token' => (string), // The refresh token (only set if the refresh token grant is enabled)
|
||||
* 'token_type' => 'bearer', // Almost always "bearer" (exceptions: JWT, SAML)
|
||||
* 'expires' => (int), // The timestamp of when the access token will expire
|
||||
* 'expires_in' => (int) // The number of seconds before the access token will expire
|
||||
* )
|
||||
* </code>
|
||||
*
|
||||
* @return array An array of parameters to be passed back to the client
|
||||
* @return array
|
||||
*/
|
||||
public function completeFlow();
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 implicit grant
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
@ -52,10 +52,9 @@ class Implicit implements GrantTypeInterface {
|
||||
|
||||
/**
|
||||
* Complete the client credentials grant
|
||||
* @param null|array $inputParams
|
||||
* @return array
|
||||
*/
|
||||
public function completeFlow($authParams = null)
|
||||
public function completeFlow()
|
||||
{
|
||||
// Remove any old sessions the user might have
|
||||
$this->authServer->getStorage('session')->deleteSession($authParams['client_id'], 'user', $authParams['user_id']);
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Password grant
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
@ -27,10 +27,8 @@ use League\OAuth2\Server\Storage\ScopeInterface;
|
||||
/**
|
||||
* Password grant class
|
||||
*/
|
||||
class Password implements GrantTypeInterface {
|
||||
|
||||
use GrantTrait;
|
||||
|
||||
class Password extends AbstractGrant
|
||||
{
|
||||
/**
|
||||
* Grant identifier
|
||||
* @var string
|
||||
@ -109,23 +107,17 @@ class Password implements GrantTypeInterface {
|
||||
}
|
||||
|
||||
// Validate client ID and client secret
|
||||
$clientDetails = $this->server->getStorage('client')->getClient(
|
||||
$client = $this->server->getStorage('client')->getClient(
|
||||
$clientId,
|
||||
$clientSecret,
|
||||
null,
|
||||
$this->getIdentifier()
|
||||
);
|
||||
|
||||
if ($clientDetails === false) {
|
||||
if (($client instanceof Client) === false) {
|
||||
throw new ClientException(Authorization::getExceptionMessage('invalid_client'), 8);
|
||||
}
|
||||
|
||||
$client = new Client;
|
||||
$client->setId($clientDetails['id']);
|
||||
$client->setSecret($clientDetails['secret']);
|
||||
|
||||
|
||||
|
||||
$username = $this->server->getRequest()->request->get('username', null);
|
||||
if (is_null($username)) {
|
||||
throw new ClientException(
|
||||
@ -146,7 +138,7 @@ class Password implements GrantTypeInterface {
|
||||
$userId = call_user_func($this->getVerifyCredentialsCallback(), $username, $password);
|
||||
|
||||
if ($userId === false) {
|
||||
throw new Exception\ClientException($this->authServer->getExceptionMessage('invalid_credentials'), 0);
|
||||
throw new ClientException($this->server->getExceptionMessage('invalid_credentials'), 0);
|
||||
}
|
||||
|
||||
// Validate any scopes that are in the request
|
||||
@ -154,15 +146,14 @@ class Password implements GrantTypeInterface {
|
||||
$scopes = $this->validateScopes($scopeParam);
|
||||
|
||||
// Create a new session
|
||||
$session = new Session($this->server->getStorage('session'));
|
||||
$session = new Session($this->server);
|
||||
$session->setOwner('user', $userId);
|
||||
$session->associateClient($client);
|
||||
|
||||
// Generate an access token
|
||||
$accessToken = new AccessToken($this->server->getStorage('access_token'));
|
||||
$accessToken->setId(SecureKey::make());
|
||||
$accessToken->setTimestamp(time());
|
||||
$accessToken->setTTL($this->server->getAccessTokenTTL());
|
||||
$accessToken = new AccessToken($this->server);
|
||||
$accessToken->setToken(SecureKey::make());
|
||||
$accessToken->setExpireTime($this->server->getAccessTokenTTL() + time());
|
||||
|
||||
// Associate scopes with the session and access token
|
||||
foreach ($scopes as $scope) {
|
||||
@ -171,29 +162,28 @@ class Password implements GrantTypeInterface {
|
||||
}
|
||||
|
||||
$response = [
|
||||
'access_token' => $accessToken->getId(),
|
||||
'access_token' => $accessToken->getToken(),
|
||||
'token_type' => 'Bearer',
|
||||
'expires' => $accessToken->getExpireTime(),
|
||||
'expires_in' => $accessToken->getTTL()
|
||||
'expires_in' => $this->server->getAccessTokenTTL()
|
||||
];
|
||||
|
||||
// Associate a refresh token if set
|
||||
if ($this->server->hasGrantType('refresh_token')) {
|
||||
$refreshToken = new RefreshToken($this->server->getStorage('refresh_token'));
|
||||
$refreshToken->setId(SecureKey::make());
|
||||
$refreshToken->setTimestamp(time());
|
||||
$refreshToken->setTTL($this->server->getGrantType('refresh_token')->getRefreshTokenTTL());
|
||||
$response['refresh_token'] = $refreshToken->getId();
|
||||
$refreshToken = new RefreshToken($this->server);
|
||||
$refreshToken->setToken(SecureKey::make());
|
||||
$refreshToken->setExpireTime($this->server->getGrantType('refresh_token')->getRefreshTokenTTL() + time());
|
||||
$response['refresh_token'] = $refreshToken->getToken();
|
||||
}
|
||||
|
||||
// Save everything
|
||||
$session->save();
|
||||
$session->save($this->server->getStorage('session'));
|
||||
$accessToken->setSession($session);
|
||||
$accessToken->save();
|
||||
$accessToken->save($this->server->getStorage('access_token'));
|
||||
|
||||
if ($this->server->hasGrantType('refresh_token')) {
|
||||
$refreshToken->setAccessToken($accessToken);
|
||||
$refreshToken->save();
|
||||
$refreshToken->save($this->server->getStorage('refresh_token'));
|
||||
}
|
||||
|
||||
return $response;
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Refresh token grant
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
@ -18,50 +18,27 @@ use League\OAuth2\Server\Util\SecureKey;
|
||||
use League\OAuth2\Server\Storage\SessionInterface;
|
||||
use League\OAuth2\Server\Storage\ClientInterface;
|
||||
use League\OAuth2\Server\Storage\ScopeInterface;
|
||||
use League\OAuth2\Server\Entities\RefreshToken as RT;
|
||||
use League\OAuth2\Server\Entities\AccessToken;
|
||||
use League\OAuth2\Server\Entities\Session;
|
||||
use League\OAuth2\Server\Exception\ClientException;
|
||||
|
||||
/**
|
||||
* Referesh token grant
|
||||
*/
|
||||
class RefreshToken implements GrantTypeInterface {
|
||||
|
||||
use GrantTrait;
|
||||
|
||||
class RefreshToken extends AbstractGrant
|
||||
{
|
||||
/**
|
||||
* Grant identifier
|
||||
* @var string
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $identifier = 'refresh_token';
|
||||
|
||||
/**
|
||||
* Response type
|
||||
* @var string
|
||||
*/
|
||||
protected $responseType = null;
|
||||
|
||||
/**
|
||||
* AuthServer instance
|
||||
* @var AuthServer
|
||||
*/
|
||||
protected $authServer = null;
|
||||
|
||||
/**
|
||||
* Access token expires in override
|
||||
* @var int
|
||||
*/
|
||||
protected $accessTokenTTL = null;
|
||||
|
||||
/**
|
||||
* Refresh token TTL
|
||||
* Refresh token TTL (default = 604800 | 1 week)
|
||||
* @var integer
|
||||
*/
|
||||
protected $refreshTokenTTL = 604800;
|
||||
|
||||
/**
|
||||
* Rotate refresh tokens
|
||||
* @var boolean
|
||||
*/
|
||||
protected $rotateRefreshTokens = false;
|
||||
|
||||
/**
|
||||
* Set the TTL of the refresh token
|
||||
* @param int $refreshTokenTTL
|
||||
@ -82,126 +59,110 @@ class RefreshToken implements GrantTypeInterface {
|
||||
}
|
||||
|
||||
/**
|
||||
* When a new access is token, expire the refresh token used and issue a new one.
|
||||
* @param boolean $rotateRefreshTokens Set to true to enable (default = false)
|
||||
* @return void
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function rotateRefreshTokens($rotateRefreshTokens = false)
|
||||
public function completeFlow()
|
||||
{
|
||||
$this->rotateRefreshTokens = $rotateRefreshTokens;
|
||||
}
|
||||
|
||||
/**
|
||||
* Complete the refresh token grant
|
||||
* @param null|array $inputParams
|
||||
* @return array
|
||||
*/
|
||||
public function completeFlow($inputParams = null)
|
||||
{
|
||||
// Get the required params
|
||||
$authParams = $this->authServer->getParam(array('client_id', 'client_secret', 'refresh_token', 'scope'), 'post', $inputParams);
|
||||
|
||||
if (is_null($authParams['client_id'])) {
|
||||
throw new Exception\ClientException(sprintf($this->authServer->getExceptionMessage('invalid_request'), 'client_id'), 0);
|
||||
$clientId = $this->server->getRequest()->request->get('client_id', null);
|
||||
if (is_null($clientId)) {
|
||||
throw new Exception\ClientException(
|
||||
sprintf($this->server->getExceptionMessage('invalid_request'), 'client_id'),
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
if (is_null($authParams['client_secret'])) {
|
||||
throw new Exception\ClientException(sprintf($this->authServer->getExceptionMessage('invalid_request'), 'client_secret'), 0);
|
||||
$clientSecret = $this->server->getRequest()->request->get('client_secret', null);
|
||||
if (is_null($clientSecret)) {
|
||||
throw new Exception\ClientException(
|
||||
sprintf($this->server->getExceptionMessage('invalid_request'), 'client_secret'),
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
// Validate client ID and client secret
|
||||
$clientDetails = $this->authServer->getStorage('client')->getClient($authParams['client_id'], $authParams['client_secret'], null, $this->identifier);
|
||||
$client = $this->server->getStorage('client')->getClient(
|
||||
$clientId,
|
||||
$clientSecret,
|
||||
null,
|
||||
$this->getIdentifier()
|
||||
);
|
||||
|
||||
if ($clientDetails === false) {
|
||||
throw new Exception\ClientException($this->authServer->getExceptionMessage('invalid_client'), 8);
|
||||
if ($client === null) {
|
||||
throw new ClientException(Authorization::getExceptionMessage('invalid_client'), 8);
|
||||
}
|
||||
|
||||
$authParams['client_details'] = $clientDetails;
|
||||
|
||||
if (is_null($authParams['refresh_token'])) {
|
||||
throw new Exception\ClientException(sprintf($this->authServer->getExceptionMessage('invalid_request'), 'refresh_token'), 0);
|
||||
$oldRefreshTokenParam = $this->server->getRequest()->request->get('refresh_token', null);
|
||||
if ($oldRefreshTokenParam === null) {
|
||||
throw new Exception\ClientException(
|
||||
sprintf($this->server->getExceptionMessage('invalid_request'), 'refresh_token'),
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
// Validate refresh token
|
||||
$accessTokenId = $this->authServer->getStorage('session')->validateRefreshToken($authParams['refresh_token'], $authParams['client_id']);
|
||||
$oldRefreshToken = $this->server->getStorage('refresh_token')->getToken($oldRefreshTokenParam);
|
||||
|
||||
if ($accessTokenId === false) {
|
||||
throw new Exception\ClientException($this->authServer->getExceptionMessage('invalid_refresh'), 0);
|
||||
if (($oldRefreshToken instanceof RT) === false) {
|
||||
throw new Exception\ClientException($this->server->getExceptionMessage('invalid_refresh'), 0);
|
||||
}
|
||||
|
||||
// Get the existing access token
|
||||
$accessTokenDetails = $this->authServer->getStorage('session')->getAccessToken($accessTokenId);
|
||||
$oldAccessToken = $oldRefreshToken->getAccessToken();
|
||||
|
||||
// Get the scopes for the existing access token
|
||||
$scopes = $this->authServer->getStorage('session')->getScopes($accessTokenDetails['access_token']);
|
||||
// Get the scopes for the original session
|
||||
$session = $oldAccessToken->getSession();
|
||||
$scopes = $session->getScopes();
|
||||
|
||||
// Generate new tokens and associate them to the session
|
||||
$accessToken = SecureKey::make();
|
||||
$accessTokenExpiresIn = ($this->accessTokenTTL !== null) ? $this->accessTokenTTL : $this->authServer->getAccessTokenTTL();
|
||||
$accessTokenExpires = time() + $accessTokenExpiresIn;
|
||||
// Get and validate any requested scopes
|
||||
$requestedScopesString = $this->server->getRequest()->request->get('scope', '');
|
||||
$requestedScopes = $this->validateScopes($requestedScopesString);
|
||||
|
||||
// Associate the new access token with the session
|
||||
$newAccessTokenId = $this->authServer->getStorage('session')->associateAccessToken($accessTokenDetails['session_id'], $accessToken, $accessTokenExpires);
|
||||
// If no new scopes are requested then give the access token the original session scopes
|
||||
if (count($requestedScopes) === 0) {
|
||||
$newScopes = $scopes;
|
||||
} else {
|
||||
// The OAuth spec says that a refreshed access token can have the original scopes or fewer so ensure
|
||||
// the request doesn't include any new scopes
|
||||
|
||||
if ($this->rotateRefreshTokens === true) {
|
||||
foreach ($requestedScopes as $requestedScope) {
|
||||
// if ()
|
||||
}
|
||||
|
||||
// Generate a new refresh token
|
||||
$refreshToken = SecureKey::make();
|
||||
$refreshTokenExpires = time() + $this->getRefreshTokenTTL();
|
||||
|
||||
// Revoke the old refresh token
|
||||
$this->authServer->getStorage('session')->removeRefreshToken($authParams['refresh_token']);
|
||||
|
||||
// Associate the new refresh token with the new access token
|
||||
$this->authServer->getStorage('session')->associateRefreshToken($newAccessTokenId, $refreshToken, $refreshTokenExpires, $authParams['client_id']);
|
||||
$newScopes = $requestedScopes;
|
||||
}
|
||||
|
||||
// There isn't a request for reduced scopes so assign the original ones (or we're not rotating scopes)
|
||||
if ( ! isset($authParams['scope'])) {
|
||||
// Generate a new access token and assign it the correct sessions
|
||||
$newAccessToken = new AccessToken();
|
||||
$newAccessToken->setToken(SecureKey::make());
|
||||
$newAccessToken->setExpireTime($this->server->getAccessTokenTTL() + time());
|
||||
$newAccessToken->setSession($session);
|
||||
|
||||
foreach ($scopes as $scope) {
|
||||
$this->authServer->getStorage('session')->associateScope($newAccessTokenId, $scope['id']);
|
||||
}
|
||||
|
||||
} elseif ( isset($authParams['scope']) && $this->rotateRefreshTokens === true) {
|
||||
|
||||
// The request is asking for reduced scopes and rotate tokens is enabled
|
||||
$reqestedScopes = explode($this->authServer->getScopeDelimeter(), $authParams['scope']);
|
||||
|
||||
for ($i = 0; $i < count($reqestedScopes); $i++) {
|
||||
$reqestedScopes[$i] = trim($reqestedScopes[$i]);
|
||||
if ($reqestedScopes[$i] === '') unset($reqestedScopes[$i]); // Remove any junk scopes
|
||||
}
|
||||
|
||||
// Check that there aren't any new scopes being included
|
||||
$existingScopes = array();
|
||||
foreach ($scopes as $s) {
|
||||
$existingScopes[] = $s['scope'];
|
||||
}
|
||||
|
||||
foreach ($reqestedScopes as $reqScope) {
|
||||
if ( ! in_array($reqScope, $existingScopes)) {
|
||||
throw new Exception\ClientException(sprintf($this->authServer->getExceptionMessage('invalid_request'), 'scope'), 0);
|
||||
}
|
||||
|
||||
// Associate with the new access token
|
||||
$scopeDetails = $this->authServer->getStorage('scope')->getScope($reqScope, $authParams['client_id'], $this->identifier);
|
||||
$this->authServer->getStorage('session')->associateScope($newAccessTokenId, $scopeDetails['id']);
|
||||
}
|
||||
foreach ($newScopes as $newScope) {
|
||||
$newAccessToken->associateScope($newScope);
|
||||
}
|
||||
|
||||
$response = array(
|
||||
'access_token' => $accessToken,
|
||||
'token_type' => 'bearer',
|
||||
'expires' => $accessTokenExpires,
|
||||
'expires_in' => $accessTokenExpiresIn
|
||||
);
|
||||
// Expire the old token and save the new one
|
||||
$oldAccessToken->expire($this->server->getStorage('access_token'));
|
||||
$newAccessToken->save($this->server->getStorage('access_token'));
|
||||
|
||||
if ($this->rotateRefreshTokens === true) {
|
||||
$response['refresh_token'] = $refreshToken;
|
||||
}
|
||||
$response = [
|
||||
'access_token' => $newAccessToken->getToken(),
|
||||
'token_type' => 'Bearer',
|
||||
'expires' => $newAccessToken->getExpireTime(),
|
||||
'expires_in' => $this->server->getAccessTokenTTL()
|
||||
];
|
||||
|
||||
// Expire the old refresh token
|
||||
$oldRefreshToken->expire($this->server->getStorage('refresh_token'));
|
||||
|
||||
// Generate a new refresh token
|
||||
$newRefreshToken = new RT();
|
||||
$newRefreshToken->setToken(SecureKey::make());
|
||||
$newRefreshToken->setExpireTime($this->getRefreshTokenTTL() + time());
|
||||
$newRefreshToken->setAccessToken($newAccessToken);
|
||||
$newRefreshToken->save($this->server->getStorage('refresh_token'));
|
||||
|
||||
$response['refresh_token'] = $newRefreshToken->getToken();
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Resource Server
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
@ -257,10 +257,8 @@ class Resource
|
||||
|
||||
/**
|
||||
* Checks if the presented access token has the given scope(s)
|
||||
*
|
||||
* @param array|string An array of scopes or a single scope as a string
|
||||
*
|
||||
* @return bool Returns bool if all scopes are found, false if any fail
|
||||
* @param array|string $scopes An array of scopes or a single scope as a string
|
||||
* @return bool Returns bool if all scopes are found, false if any fail
|
||||
*/
|
||||
public function hasScope($scopes)
|
||||
{
|
||||
|
@ -1,24 +1,56 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* OAuth 2.0 Access token storage interface
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Storage;
|
||||
|
||||
/**
|
||||
* Access token interface
|
||||
*/
|
||||
interface AccessTokenInterface
|
||||
{
|
||||
/**
|
||||
* Get an instance of Entites\AccessToken
|
||||
* @param string $token The access token
|
||||
* @return \League\OAuth2\Server\Entities\AccessToken
|
||||
*/
|
||||
public function getToken($token);
|
||||
|
||||
/**
|
||||
* Get the scopes for an access token
|
||||
* @param string $token The access token
|
||||
* @return array Array of \League\OAuth2\Server\Entities\Scope
|
||||
*/
|
||||
public function getTokenScopes($token);
|
||||
|
||||
/**
|
||||
* Creates a new access token
|
||||
* @param string $token The access token
|
||||
* @param integer $expireTime The expire time expressed as a unix timestamp
|
||||
* @param string|integer $sessionId The session ID
|
||||
* @return \League\OAuth2\Server\Entities\AccessToken
|
||||
*/
|
||||
public function createAccessToken($token, $expireTime, $sessionId);
|
||||
|
||||
public function associateScope($token, $scopeId);
|
||||
/**
|
||||
* Associate a scope with an acess token
|
||||
* @param string $token The access token
|
||||
* @param string $scope The scope
|
||||
* @return void
|
||||
*/
|
||||
public function associateScope($token, $scope);
|
||||
|
||||
/**
|
||||
* Delete an access token
|
||||
* @param string $token The access token to delete
|
||||
* @return void
|
||||
*/
|
||||
public function delete($token);
|
||||
}
|
||||
|
43
src/League/OAuth2/Server/Storage/Adapter.php
Normal file
43
src/League/OAuth2/Server/Storage/Adapter.php
Normal file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* OAuth 2.0 storage adapter
|
||||
*
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Storage;
|
||||
|
||||
/**
|
||||
* Storage adapter class
|
||||
*/
|
||||
class Adapter
|
||||
{
|
||||
/**
|
||||
* Server
|
||||
* @var \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource $server
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
/**
|
||||
* Set the server
|
||||
* @param \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource $server
|
||||
*/
|
||||
public function setServer($server)
|
||||
{
|
||||
$this->server = $server;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the server
|
||||
* @return \League\OAuth2\Server\Authorization|\League\OAuth2\Server\Resource
|
||||
*/
|
||||
protected function getServer()
|
||||
{
|
||||
return $this->server;
|
||||
}
|
||||
}
|
@ -1,18 +1,25 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* OAuth 2.0 Refresh token storage interface
|
||||
* OAuth 2.0 Auth code storage interface
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Storage;
|
||||
|
||||
/**
|
||||
* Auth code storage interface
|
||||
*/
|
||||
interface AuthCodeInterface
|
||||
{
|
||||
/**
|
||||
* Get the auth code
|
||||
* @param string $code
|
||||
* @return \League\OAuth2\Server\Entities\AuthCode
|
||||
*/
|
||||
public function getCode($code);
|
||||
}
|
||||
|
@ -2,15 +2,18 @@
|
||||
/**
|
||||
* OAuth 2.0 Client storage interface
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Storage;
|
||||
|
||||
/**
|
||||
* Client storage interface
|
||||
*/
|
||||
interface ClientInterface
|
||||
{
|
||||
/**
|
||||
@ -38,23 +41,11 @@ interface ClientInterface
|
||||
* oauth_client_endpoints.redirect_uri = :redirectUri
|
||||
* </code>
|
||||
*
|
||||
* Response:
|
||||
*
|
||||
* <code>
|
||||
* Array
|
||||
* (
|
||||
* [id] => (string) The client ID
|
||||
* [secret] => (string) The client secret
|
||||
* [redirect_uri] => (string) The redirect URI used in this request
|
||||
* [name] => (string) The name of the client
|
||||
* )
|
||||
* </code>
|
||||
*
|
||||
* @param string $clientId The client's ID
|
||||
* @param string $clientSecret The client's secret (default = "null")
|
||||
* @param string $redirectUri The client's redirect URI (default = "null")
|
||||
* @param string $grantType The grant type used in the request (default = "null")
|
||||
* @return bool|array Returns false if the validation fails, array on success
|
||||
* @return League\OAuth2\Server\Entities\Client|null
|
||||
*/
|
||||
public function getClient($clientId, $clientSecret = null, $redirectUri = null, $grantType = null);
|
||||
}
|
||||
|
@ -1,18 +1,41 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* OAuth 2.0 Refresh token storage interface
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Storage;
|
||||
|
||||
/**
|
||||
* Refresh token interface
|
||||
*/
|
||||
interface RefreshTokenInterface
|
||||
{
|
||||
public function getToken($token, $clientId);
|
||||
/**
|
||||
* Return a new instance of \League\OAuth2\Server\Entities\RefreshToken
|
||||
* @param string $token
|
||||
* @return \League\OAuth2\Server\Entities\RefreshToken
|
||||
*/
|
||||
public function getToken($token);
|
||||
|
||||
/**
|
||||
* Create a new refresh token_name
|
||||
* @param string $token
|
||||
* @param integer $expireTime
|
||||
* @param string $accessToken
|
||||
* @return \League\OAuth2\Server\Entities\RefreshToken
|
||||
*/
|
||||
public function createRefreshToken($token, $expireTime, $accessToken);
|
||||
|
||||
/**
|
||||
* Delete the refresh token
|
||||
* @param string $token
|
||||
* @return void
|
||||
*/
|
||||
public function delete($token);
|
||||
}
|
||||
|
@ -2,15 +2,18 @@
|
||||
/**
|
||||
* OAuth 2.0 Scope storage interface
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Storage;
|
||||
|
||||
/**
|
||||
* Scope interface
|
||||
*/
|
||||
interface ScopeInterface
|
||||
{
|
||||
/**
|
||||
@ -22,22 +25,9 @@ interface ScopeInterface
|
||||
* SELECT * FROM oauth_scopes WHERE scope = :scope
|
||||
* </code>
|
||||
*
|
||||
* Response:
|
||||
*
|
||||
* <code>
|
||||
* Array
|
||||
* (
|
||||
* [id] => (int) The scope's ID
|
||||
* [scope] => (string) The scope itself
|
||||
* [name] => (string) The scope's name
|
||||
* [description] => (string) The scope's description
|
||||
* )
|
||||
* </code>
|
||||
*
|
||||
* @param string $scope The scope
|
||||
* @param string $clientId The client ID (default = "null")
|
||||
* @param string $grantType The grant type used in the request (default = "null")
|
||||
* @return bool|array If the scope doesn't exist return false
|
||||
*/
|
||||
public function getScope($scope, $clientId = null, $grantType = null);
|
||||
public function getScope($scope, $grantType = null);
|
||||
}
|
||||
|
@ -1,27 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* OAuth 2.0 Session storage interface
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Storage;
|
||||
|
||||
/**
|
||||
* Session storage interface
|
||||
*/
|
||||
interface SessionInterface
|
||||
{
|
||||
/**
|
||||
* Get a session
|
||||
*
|
||||
* Response:
|
||||
* <code>
|
||||
*
|
||||
* </code>
|
||||
*
|
||||
* @param int $sessionId
|
||||
* @return array (As described above)
|
||||
*/
|
||||
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Redirect URI generator
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
@ -1,29 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* OAuth 2.0 Request class interface
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Server\Util;
|
||||
|
||||
interface RequestInterface
|
||||
{
|
||||
|
||||
public function get($index = null);
|
||||
|
||||
public function post($index = null);
|
||||
|
||||
public function cookie($index = null);
|
||||
|
||||
public function file($index = null);
|
||||
|
||||
public function server($index = null);
|
||||
|
||||
public function header($index = null);
|
||||
|
||||
}
|
@ -2,9 +2,9 @@
|
||||
/**
|
||||
* OAuth 2.0 Secure key generator
|
||||
*
|
||||
* @package php-loep/oauth2-server
|
||||
* @package league/oauth2-server
|
||||
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||
* @copyright Copyright (c) 2013 PHP League of Extraordinary Packages
|
||||
* @copyright Copyright (c) PHP League of Extraordinary Packages
|
||||
* @license http://mit-license.org/
|
||||
* @link http://github.com/php-loep/oauth2-server
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user