mirror of
https://github.com/elyby/oauth2-server.git
synced 2025-01-01 01:40:21 +05:30
First commit of AuthCode grant and entity
This commit is contained in:
parent
2a524efff5
commit
c60b29d201
@ -176,7 +176,7 @@ abstract class AbstractToken
|
|||||||
* @param array $unformated Array of \League\OAuth2\Server\Entity\Scope
|
* @param array $unformated Array of \League\OAuth2\Server\Entity\Scope
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function formatScopes($unformated = [])
|
protected function formatScopes($unformated = [])
|
||||||
{
|
{
|
||||||
$scopes = [];
|
$scopes = [];
|
||||||
foreach ($unformated as $scope) {
|
foreach ($unformated as $scope) {
|
||||||
|
78
src/League/OAuth2/Server/Entity/AuthCode.php
Normal file
78
src/League/OAuth2/Server/Entity/AuthCode.php
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* OAuth 2.0 Auth code entity
|
||||||
|
*
|
||||||
|
* @package league/oauth2-server
|
||||||
|
* @author Alex Bilbie <hello@alexbilbie.com>
|
||||||
|
* @copyright Copyright (c) Alex Bilbie
|
||||||
|
* @license http://mit-license.org/
|
||||||
|
* @link http://github.com/php-loep/oauth2-server
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace League\OAuth2\Server\Entity;
|
||||||
|
|
||||||
|
use League\OAuth2\Server\Storage\SessionStorageInterface;
|
||||||
|
use League\OAuth2\Server\Storage\AccessTokenInterface;
|
||||||
|
use League\OAuth2\Server\Util\SecureKey;
|
||||||
|
use League\OAuth2\Server\Exception\InvalidAccessTokenException;
|
||||||
|
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Access token entity class
|
||||||
|
*/
|
||||||
|
class AuthCode extends AbstractToken
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getSession()
|
||||||
|
{
|
||||||
|
if ($this->session instanceof Session) {
|
||||||
|
return $this->session;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->session = $this->server->getStorage('session')->getByAuthCode($this->token);
|
||||||
|
return $this->session;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getScopes()
|
||||||
|
{
|
||||||
|
if ($this->scopes === null) {
|
||||||
|
$this->scopes = $this->formatScopes(
|
||||||
|
$this->server->getStorage('auth_code')->getScopes($this->getToken())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->scopes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function save()
|
||||||
|
{
|
||||||
|
$this->server->getStorage('auth_code')->create(
|
||||||
|
$this->getToken(),
|
||||||
|
$this->getExpireTime(),
|
||||||
|
$this->getSession()->getId()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Associate the scope with the token
|
||||||
|
foreach ($this->getScopes() as $scope) {
|
||||||
|
$this->server->getStorage('auth_code')->associateScope($this->getToken(), $scope->getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function expire()
|
||||||
|
{
|
||||||
|
$this->server->getStorage('auth_code')->delete($this->getToken());
|
||||||
|
}
|
||||||
|
}
|
51
tests/Entities/AuthCodeTest.php
Normal file
51
tests/Entities/AuthCodeTest.php
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace LeagueTests\Entities;
|
||||||
|
|
||||||
|
use League\OAuth2\Server\Entity\Scope;
|
||||||
|
use League\OAuth2\Server\Entity\Session;
|
||||||
|
use League\OAuth2\Server\Entity\AuthCode;
|
||||||
|
use League\OAuth2\Server\AuthorizationServer as Authorization;
|
||||||
|
use \Mockery as M;
|
||||||
|
|
||||||
|
class AuthCodeTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
function testSave()
|
||||||
|
{
|
||||||
|
$server = new Authorization();
|
||||||
|
|
||||||
|
$authCodeStorage = M::mock('League\OAuth2\Server\Storage\AuthCodeInterface');
|
||||||
|
$authCodeStorage->shouldReceive('create');
|
||||||
|
$authCodeStorage->shouldReceive('associateScope');
|
||||||
|
$authCodeStorage->shouldReceive('setServer');
|
||||||
|
$authCodeStorage->shouldReceive('getScopes')->andReturn([
|
||||||
|
(new Scope($server))->setId('foo')
|
||||||
|
]);
|
||||||
|
|
||||||
|
$sessionStorage = M::mock('League\OAuth2\Server\Storage\SessionInterface');
|
||||||
|
$sessionStorage->shouldReceive('getByAuthCode')->andReturn(
|
||||||
|
(new Session($server))
|
||||||
|
);
|
||||||
|
$sessionStorage->shouldReceive('setServer');
|
||||||
|
|
||||||
|
$server->setAuthCodeStorage($authCodeStorage);
|
||||||
|
$server->setSessionStorage($sessionStorage);
|
||||||
|
|
||||||
|
$entity = new AuthCode($server);
|
||||||
|
$this->assertTrue($entity->save() instanceof AuthCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testExpire()
|
||||||
|
{
|
||||||
|
$server = new Authorization();
|
||||||
|
|
||||||
|
$authCodeStorage = M::mock('League\OAuth2\Server\Storage\AuthCodeInterface');
|
||||||
|
$authCodeStorage->shouldReceive('delete');
|
||||||
|
$authCodeStorage->shouldReceive('setServer');
|
||||||
|
|
||||||
|
$server->setAuthCodeStorage($authCodeStorage);
|
||||||
|
|
||||||
|
$entity = new AuthCode($server);
|
||||||
|
$this->assertSame($entity->expire(), null);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user