1.0.7 merge

This commit is contained in:
Alex Bilbie 2013-03-04 13:22:01 +00:00
commit c003f699c7
5 changed files with 77 additions and 24 deletions

View File

@ -1,6 +1,11 @@
# Changelog # Changelog
## 1.0.6 (released 2013-02-) ## 1.0.7 (released 2013-03-04)
* Added method `requireStateParam()`
* Added method `requireScopeParam()`
## 1.0.6 (released 2013-02-22)
* Added links to tutorials in the README * Added links to tutorials in the README
* Added missing `state` parameter request to the `checkAuthoriseParams()` method. * Added missing `state` parameter request to the `checkAuthoriseParams()` method.
@ -24,4 +29,4 @@
## 1.0.0 (released 2013-02-15) ## 1.0.0 (released 2013-02-15)
* First release * First major release

View File

@ -1,7 +1,7 @@
{ {
"name": "lncd/oauth2", "name": "lncd/oauth2",
"description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants", "description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants",
"version": "1.0.6", "version": "1.0.7",
"homepage": "https://github.com/lncd/OAuth2", "homepage": "https://github.com/lncd/OAuth2",
"license": "MIT", "license": "MIT",
"require": { "require": {

View File

@ -57,6 +57,18 @@ class AuthServer
*/ */
static protected $grantTypes = array(); static protected $grantTypes = array();
/**
* Require the "scope" parameter to be in checkAuthoriseParams()
* @var boolean
*/
protected $requireScopeParam = true;
/**
* Require the "state" parameter to be in checkAuthoriseParams()
* @var boolean
*/
protected $requireStateParam = false;
/** /**
* The request object * The request object
* @var Util\RequestInterface * @var Util\RequestInterface
@ -164,6 +176,26 @@ class AuthServer
return (array_key_exists($identifier, self::$grantTypes)); return (array_key_exists($identifier, self::$grantTypes));
} }
/**
* Require the "scope" paremter in checkAuthoriseParams()
* @param boolean $require
* @return void
*/
public function requireScopeParam($require = true)
{
$this->requireScopeParam = $require;
}
/**
* Require the "state" paremter in checkAuthoriseParams()
* @param boolean $require
* @return void
*/
public function requireStateParam($require = false)
{
$this->requireStateParam = $require;
}
/** /**
* Get the scope delimeter * Get the scope delimeter
* *
@ -259,6 +291,10 @@ class AuthServer
throw new Exception\ClientException(sprintf(self::$exceptionMessages['invalid_request'], 'redirect_uri'), 0); throw new Exception\ClientException(sprintf(self::$exceptionMessages['invalid_request'], 'redirect_uri'), 0);
} }
if ($this->requireStateParam === true && is_null($authParams['redirect_uri'])) {
throw new Exception\ClientException(sprintf(self::$exceptionMessages['invalid_request'], 'redirect_uri'), 0);
}
// Validate client ID and redirect URI // Validate client ID and redirect URI
$clientDetails = self::getStorage('client')->getClient($authParams['client_id'], null, $authParams['redirect_uri']); $clientDetails = self::getStorage('client')->getClient($authParams['client_id'], null, $authParams['redirect_uri']);
@ -285,7 +321,7 @@ class AuthServer
if ($scopes[$i] === '') unset($scopes[$i]); // Remove any junk scopes if ($scopes[$i] === '') unset($scopes[$i]); // Remove any junk scopes
} }
if (count($scopes) === 0) { if ($this->requireScopeParam === true && count($scopes) === 0) {
throw new Exception\ClientException(sprintf(self::$exceptionMessages['invalid_request'], 'scope'), 0); throw new Exception\ClientException(sprintf(self::$exceptionMessages['invalid_request'], 'scope'), 0);
} }

View File

@ -105,25 +105,6 @@ interface SessionInterface
* redirect_uri = $redirectUri AND auth_code = $authCode * redirect_uri = $redirectUri AND auth_code = $authCode
* </code> * </code>
* *
* Response:
*
* <code>
* Array
* (
* [id] => (int) The session ID
* [client_id] => (string) The client ID
* [redirect_uri] => (string) The redirect URI
* [owner_type] => (string) The session owner type
* [owner_id] => (string) The session owner's ID
* [auth_code] => (string) The authorisation code
* [stage] => (string) The session's stage
* [first_requested] => (int) Unix timestamp of the time the session was
* first generated
* [last_updated] => (int) Unix timestamp of the time the session was
* last updated
* )
* </code>
*
* @param string $clientId The client ID * @param string $clientId The client ID
* @param string $redirectUri The redirect URI * @param string $redirectUri The redirect URI
* @param string $authCode The authorisation code * @param string $authCode The authorisation code
@ -201,7 +182,12 @@ interface SessionInterface
* @param int $accessTokenExpires The UNIX timestamp of when the new token expires * @param int $accessTokenExpires The UNIX timestamp of when the new token expires
* @return void * @return void
*/ */
public function updateRefreshToken($sessionId, $newAccessToken, $newRefreshToken, $accessTokenExpires); public function updateRefreshToken(
$sessionId,
$newAccessToken,
$newRefreshToken,
$accessTokenExpires
);
/** /**
* Associates a session with a scope * Associates a session with a scope

View File

@ -89,6 +89,32 @@ class Authorization_Server_test extends PHPUnit_Framework_TestCase
$this->assertEquals(';', $a->getScopeDelimeter()); $this->assertEquals(';', $a->getScopeDelimeter());
} }
public function test_requireScopeParam()
{
$a = $this->returnDefault();
$a->requireScopeParam(false);
$reflector = new ReflectionClass($a);
$requestProperty = $reflector->getProperty('requireScopeParam');
$requestProperty->setAccessible(true);
$v = $requestProperty->getValue($a);
$this->assertFalse($v);
}
public function test_requireStateParam()
{
$a = $this->returnDefault();
$a->requireStateParam(true);
$reflector = new ReflectionClass($a);
$requestProperty = $reflector->getProperty('requireStateParam');
$requestProperty->setAccessible(true);
$v = $requestProperty->getValue($a);
$this->assertTrue($v);
}
public function test_getExpiresIn() public function test_getExpiresIn()
{ {
$a = $this->returnDefault(); $a = $this->returnDefault();