Added league/event and implemented SessionOwnerEvent

This commit is contained in:
Alex Bilbie 2014-07-11 15:13:28 +01:00
parent 33c68a2103
commit 954f29f879
6 changed files with 91 additions and 1 deletions

View File

@ -5,7 +5,8 @@
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": ">=5.4.0", "php": ">=5.4.0",
"symfony/http-foundation": "~2.1" "symfony/http-foundation": "~2.1",
"league/event": "0.1"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~4.0", "phpunit/phpunit": "~4.0",

View File

@ -14,6 +14,7 @@ namespace League\OAuth2\Server;
use League\OAuth2\Server\Exception; use League\OAuth2\Server\Exception;
use League\OAuth2\Server\TokenType\TokenTypeInterface; use League\OAuth2\Server\TokenType\TokenTypeInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use League\Event\Emitter;
/** /**
* OAuth 2.0 Resource Server * OAuth 2.0 Resource Server
@ -40,6 +41,37 @@ abstract class AbstractServer
*/ */
protected $tokenType; protected $tokenType;
/**
* Event emitter
*/
protected $eventEmitter;
/**
* Abstract server constructor
*/
public function __construct()
{
$this->eventEmitter = $this->setEventEmitter();
}
/**
* 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;
}
}
public function addEventListener($eventName, callable $listener)
{
$this->eventEmitter->addListener($eventName, $listener);
}
/** /**
* Sets the Request Object * Sets the Request Object
* @param \Symfony\Component\HttpFoundation\Request The Request Object * @param \Symfony\Component\HttpFoundation\Request The Request Object

View File

@ -80,6 +80,8 @@ class AuthorizationServer extends AbstractServer
// Set Bearer as the default token type // Set Bearer as the default token type
$this->setTokenType(new Bearer); $this->setTokenType(new Bearer);
parent::__construct();
return $this; return $this;
} }

View File

@ -228,6 +228,8 @@ class SessionEntity
$this->ownerType = $type; $this->ownerType = $type;
$this->ownerId = $id; $this->ownerId = $id;
$this->server->eventEmitter->emit(new Event\SessionOwnerEvent($this));
return $this; return $this;
} }

View File

@ -0,0 +1,51 @@
<?php
/**
* OAuth 2.0 session owner event
*
* @package league/oauth2-server
* @author Alex Bilbie <hello@alexbilbie.com>
* @copyright Copyright (c) Alex Bilbie
* @license http://mit-license.org/
* @link https://github.com/thephpleague/oauth2-server
*/
namespace League\OAuth2\Server\Event;
use League\Event\EventAbstract;
use League\OAuth2\Server\Entity\SessionEntity;
class SessionOwnerEvent extends EventAbstract
{
/**
* Session entity
* @var \League\OAuth2\Server\Entity\SessionEntity
*/
private $session;
/**
* Init the event with a session
* @param \League\OAuth2\Server\Entity\SessionEntity $session
*/
public function __construct(SessionEntity $session)
{
$this->session = $session;
}
/**
* The name of the event
* @return string
*/
public function getName()
{
return 'session.owner';
}
/**
* Return session
* @return \League\OAuth2\Server\Entity\SessionEntity
*/
public function getSession()
{
return $this->session;
}
}

View File

@ -66,6 +66,8 @@ class ResourceServer extends AbstractServer
// Set Bearer as the default token type // Set Bearer as the default token type
$this->setTokenType(new Bearer); $this->setTokenType(new Bearer);
parent::__construct();
return $this; return $this;
} }