Updated abstract server

This commit is contained in:
Alex Bilbie 2015-04-05 17:03:13 +01:00
parent 0b66fd1948
commit 1e39f1d84a

View File

@ -11,22 +11,24 @@
namespace League\OAuth2\Server; namespace League\OAuth2\Server;
use League\Event\Emitter; use League\Container\Container;
use League\OAuth2\Server\Storage\AccessTokenInterface; use League\Container\ContainerAwareInterface;
use League\OAuth2\Server\Storage\AuthCodeInterface; use League\Container\ContainerAwareTrait;
use League\OAuth2\Server\Storage\ClientInterface; use League\Event\EmitterAwareInterface;
use League\OAuth2\Server\Storage\MacTokenInterface; use League\Event\EmitterTrait;
use League\OAuth2\Server\Storage\RefreshTokenInterface; use League\OAuth2\Server\Repositories\ClientRepositoryInterface;
use League\OAuth2\Server\Storage\ScopeInterface; use League\OAuth2\Server\Repositories\RepositoryInterface;
use League\OAuth2\Server\Storage\SessionInterface; use League\OAuth2\Server\Repositories\ScopeRepositoryInterface;
use League\OAuth2\Server\TokenType\TokenTypeInterface; use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
/** /**
* OAuth 2.0 Resource Server * OAuth 2.0 Resource Server
*/ */
abstract class AbstractServer abstract class AbstractServer implements ContainerAwareInterface, EmitterAwareInterface
{ {
use EmitterTrait, ContainerAwareTrait;
/** /**
* The request object * The request object
* *
@ -35,107 +37,13 @@ abstract class AbstractServer
protected $request; protected $request;
/** /**
* Session storage * Setup the server
*
* @var \League\OAuth2\Server\Storage\SessionInterface
*/
protected $sessionStorage;
/**
* Access token storage
*
* @var \League\OAuth2\Server\Storage\AccessTokenInterface
*/
protected $accessTokenStorage;
/**
* Refresh token storage
*
* @var \League\OAuth2\Server\Storage\RefreshTokenInterface
*/
protected $refreshTokenStorage;
/**
* Auth code storage
*
* @var \League\OAuth2\Server\Storage\AuthCodeInterface
*/
protected $authCodeStorage;
/**
* Scope storage
*
* @var \League\OAuth2\Server\Storage\ScopeInterface
*/
protected $scopeStorage;
/**
* Client storage
*
* @var \League\OAuth2\Server\Storage\ClientInterface
*/
protected $clientStorage;
/**
* @var \League\OAuth2\Server\Storage\MacTokenInterface
*/
protected $macStorage;
/**
* Token type
*
* @var \League\OAuth2\Server\TokenType\TokenTypeInterface
*/
protected $tokenType;
/**
* Event emitter
*
* @var \League\Event\Emitter
*/
protected $eventEmitter;
/**
* Abstract server constructor
*/ */
public function __construct() public function __construct()
{ {
$this->setEventEmitter(); $this->setContainer(new Container());
} $this->getContainer()->singleton('emitter', $this->getEmitter());
$this->getContainer()->addServiceProvider('League\OAuth2\Server\ServiceProviders\ClientCredentialsGrantServerProvider');
/**
* Set an event emitter
*
* @param object $emitter Event emitter object
*/
public function setEventEmitter($emitter = null)
{
if ($emitter === null) {
$this->eventEmitter = new Emitter();
} else {
$this->eventEmitter = $emitter;
}
}
/**
* Add an event listener to the event emitter
*
* @param string $eventName Event name
* @param callable $listener Callable function or method
*/
public function addEventListener($eventName, callable $listener)
{
$this->eventEmitter->addListener($eventName, $listener);
}
/**
* Returns the event emitter
*
* @return \League\Event\Emitter
*/
public function getEventEmitter()
{
return $this->eventEmitter;
} }
/** /**
@ -144,6 +52,7 @@ abstract class AbstractServer
* @param \Symfony\Component\HttpFoundation\Request The Request Object * @param \Symfony\Component\HttpFoundation\Request The Request Object
* *
* @return self * @return self
* @deprecated
*/ */
public function setRequest($request) public function setRequest($request)
{ {
@ -156,6 +65,7 @@ abstract class AbstractServer
* Gets the Request object. It will create one from the globals if one is not set. * Gets the Request object. It will create one from the globals if one is not set.
* *
* @return \Symfony\Component\HttpFoundation\Request * @return \Symfony\Component\HttpFoundation\Request
* @deprecated
*/ */
public function getRequest() public function getRequest()
{ {
@ -167,191 +77,36 @@ abstract class AbstractServer
} }
/** /**
* Set the client storage * Add a repository to the server
* *
* @param \League\OAuth2\Server\Storage\ClientInterface $storage * @param RepositoryInterface $repository
*
* @return self
*/ */
public function setClientStorage(ClientInterface $storage) public function addRepository(RepositoryInterface $repository)
{ {
$storage->setServer($this); switch ($repository) {
$this->clientStorage = $storage; case ($repository instanceof AccessTokenRepositoryInterface):
$this->getContainer()->add('AccessTokenRepository', $repository);
return $this; break;
case ($repository instanceof ClientRepositoryInterface):
$this->getContainer()->add('ClientRepository', $repository);
break;
case ($repository instanceof ScopeRepositoryInterface):
$this->getContainer()->add('ScopeRepository', $repository);
break;
}
} }
/** /**
* Set the session storage * Get a hydrated grant
* *
* @param \League\OAuth2\Server\Storage\SessionInterface $storage * @param string $grant
* @param \DateInterval $tokenTTL
* *
* @return self * @return \League\OAuth2\Server\Repositories\RepositoryInterface
* @deprecated
*/ */
public function setSessionStorage(SessionInterface $storage) public function getGrant($grant, \DateInterval $tokenTTL)
{ {
$storage->setServer($this); return $this->getContainer()->get($grant, [$this->responseType, $tokenTTL]);
$this->sessionStorage = $storage;
return $this;
}
/**
* Set the access token storage
*
* @param \League\OAuth2\Server\Storage\AccessTokenInterface $storage
*
* @return self
*/
public function setAccessTokenStorage(AccessTokenInterface $storage)
{
$storage->setServer($this);
$this->accessTokenStorage = $storage;
return $this;
}
/**
* Set the refresh token storage
*
* @param \League\OAuth2\Server\Storage\RefreshTokenInterface $storage
*
* @return self
*/
public function setRefreshTokenStorage(RefreshTokenInterface $storage)
{
$storage->setServer($this);
$this->refreshTokenStorage = $storage;
return $this;
}
/**
* Set the auth code storage
*
* @param \League\OAuth2\Server\Storage\AuthCodeInterface $storage
*
* @return self
*/
public function setAuthCodeStorage(AuthCodeInterface $storage)
{
$storage->setServer($this);
$this->authCodeStorage = $storage;
return $this;
}
/**
* Set the scope storage
*
* @param \League\OAuth2\Server\Storage\ScopeInterface $storage
*
* @return self
*/
public function setScopeStorage(ScopeInterface $storage)
{
$storage->setServer($this);
$this->scopeStorage = $storage;
return $this;
}
/**
* Return the client storage
*
* @return \League\OAuth2\Server\Storage\ClientInterface
*/
public function getClientStorage()
{
return $this->clientStorage;
}
/**
* Return the scope storage
*
* @return \League\OAuth2\Server\Storage\ScopeInterface
*/
public function getScopeStorage()
{
return $this->scopeStorage;
}
/**
* Return the session storage
*
* @return \League\OAuth2\Server\Storage\SessionInterface
*/
public function getSessionStorage()
{
return $this->sessionStorage;
}
/**
* Return the refresh token storage
*
* @return \League\OAuth2\Server\Storage\RefreshTokenInterface
*/
public function getRefreshTokenStorage()
{
return $this->refreshTokenStorage;
}
/**
* Return the access token storage
*
* @return \League\OAuth2\Server\Storage\AccessTokenInterface
*/
public function getAccessTokenStorage()
{
return $this->accessTokenStorage;
}
/**
* Return the auth code storage
*
* @return \League\OAuth2\Server\Storage\AuthCodeInterface
*/
public function getAuthCodeStorage()
{
return $this->authCodeStorage;
}
/**
* Set the access token type
*
* @param TokenTypeInterface $tokenType The token type
*
* @return void
*/
public function setTokenType(TokenTypeInterface $tokenType)
{
$tokenType->setServer($this);
$this->tokenType = $tokenType;
}
/**
* Get the access token type
*
* @return TokenTypeInterface
*/
public function getTokenType()
{
return $this->tokenType;
}
/**
* @return MacTokenInterface
*/
public function getMacStorage()
{
return $this->macStorage;
}
/**
* @param MacTokenInterface $macStorage
*/
public function setMacStorage(MacTokenInterface $macStorage)
{
$this->macStorage = $macStorage;
} }
} }