Skip to content

Commit

Permalink
Merge pull request lexik#45 from chalasr/use_requeststack
Browse files Browse the repository at this point in the history
Use RequestStack rather than deprecated Lexik *Event::getRequest()
  • Loading branch information
markitosgv authored Jul 24, 2016
2 parents 995e673 + 8d1b5f7 commit 458311d
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 10 deletions.
7 changes: 5 additions & 2 deletions EventListener/AttachRefreshTokenOnSuccessListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,28 @@
use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Component\HttpFoundation\RequestStack;

class AttachRefreshTokenOnSuccessListener
{
protected $userRefreshTokenManager;
protected $ttl;
protected $validator;
protected $requestStack;

public function __construct(RefreshTokenManagerInterface $refreshTokenManager, $ttl, ValidatorInterface $validator)
public function __construct(RefreshTokenManagerInterface $refreshTokenManager, $ttl, ValidatorInterface $validator, RequestStack $requestStack)
{
$this->refreshTokenManager = $refreshTokenManager;
$this->ttl = $ttl;
$this->validator = $validator;
$this->requestStack = $requestStack;
}

public function attachRefreshToken(AuthenticationSuccessEvent $event)
{
$data = $event->getData();
$user = $event->getUser();
$request = $event->getRequest();
$request = $this->requestStack->getCurrentRequest();

if (!$user instanceof UserInterface) {
return;
Expand Down
2 changes: 1 addition & 1 deletion Resources/config/services.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ parameters:
services:
gesdinet.jwtrefreshtoken.send_token:
class: Gesdinet\JWTRefreshTokenBundle\EventListener\AttachRefreshTokenOnSuccessListener
arguments: [ "@gesdinet.jwtrefreshtoken.refresh_token_manager", "%gesdinet_jwt_refresh_token.ttl%", "@validator" ]
arguments: [ "@gesdinet.jwtrefreshtoken.refresh_token_manager", "%gesdinet_jwt_refresh_token.ttl%", "@validator", "@request_stack" ]
tags:
- { name: kernel.event_listener, event: lexik_jwt_authentication.on_authentication_success, method: attachRefreshToken }

Expand Down
16 changes: 9 additions & 7 deletions spec/EventListener/AttachRefreshTokenOnSuccessListenerSpec.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,50 +10,53 @@
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Validator\ConstraintViolationList;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\HeaderBag;
use Symfony\Component\HttpFoundation\ParameterBag;

class AttachRefreshTokenOnSuccessListenerSpec extends ObjectBehavior
{
public function let(RefreshTokenManagerInterface $refreshTokenManager, ValidatorInterface $validator)
public function let(RefreshTokenManagerInterface $refreshTokenManager, ValidatorInterface $validator, RequestStack $requestStack)
{
$ttl = 2592000;
$this->beConstructedWith($refreshTokenManager, $ttl, $validator);
$this->beConstructedWith($refreshTokenManager, $ttl, $validator, $requestStack);
}

public function it_is_initializable()
{
$this->shouldHaveType('Gesdinet\JWTRefreshTokenBundle\EventListener\AttachRefreshTokenOnSuccessListener');
}

public function it_attach_token_on_refresh(Request $request, AuthenticationSuccessEvent $event, UserInterface $user, RefreshToken $refreshToken, $refreshTokenManager)
public function it_attach_token_on_refresh(AuthenticationSuccessEvent $event, UserInterface $user, RefreshToken $refreshToken, $refreshTokenManager, RequestStack $requestStack)
{
$event->getData()->willReturn(array());
$event->getUser()->willReturn($user);

$refreshTokenArray = array('refresh_token' => 'thepreviouslyissuedrefreshtoken');
$headers = new HeaderBag(array('content_type' => 'not-json'));
$request = new Request();
$request->headers = $headers;
$request->request = new ParameterBag($refreshTokenArray);

$event->getRequest()->willReturn($request);
$requestStack->getCurrentRequest()->willReturn($request);

$event->setData(Argument::exact($refreshTokenArray))->shouldBeCalled();

$this->attachRefreshToken($event);
}

public function it_attach_token_on_credentials_auth(Request $request, HeaderBag $headers, ParameterBag $requestBag, AuthenticationSuccessEvent $event, UserInterface $user, RefreshToken $refreshToken, $refreshTokenManager, $validator)
public function it_attach_token_on_credentials_auth(HeaderBag $headers, ParameterBag $requestBag, AuthenticationSuccessEvent $event, UserInterface $user, RefreshToken $refreshToken, $refreshTokenManager, $validator, RequestStack $requestStack)
{
$event->getData()->willReturn(array());
$event->getUser()->willReturn($user);

$headers = new HeaderBag(array('content_type' => 'not-json'));
$request = new Request();
$request->headers = $headers;
$request->request = new ParameterBag();

$event->getRequest()->willReturn($request);
$requestStack->getCurrentRequest()->willReturn($request);

$refreshTokenManager->create()->willReturn($refreshToken);

Expand All @@ -71,7 +74,6 @@ public function it_is_not_valid_user(AuthenticationSuccessEvent $event)
{
$event->getData()->willReturn(array());
$event->getUser()->willReturn(null);
$event->getRequest()->willReturn(null);

$this->attachRefreshToken($event);
}
Expand Down

0 comments on commit 458311d

Please sign in to comment.