Skip to content

Commit

Permalink
Added specialized exceptions (markitosgv#239)
Browse files Browse the repository at this point in the history
* Added specialized exceptions

* Fixed styling

* Fixed styling

* Fixed styling

Co-authored-by: Vyacheslav Mankevich <[email protected]>
  • Loading branch information
Igorut and Vyacheslav Mankevich authored Jul 2, 2021
1 parent 80eca74 commit d77b3d9
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 3 deletions.
9 changes: 9 additions & 0 deletions Exception/InvalidRefreshTokenException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

namespace Gesdinet\JWTRefreshTokenBundle\Exception;

use Symfony\Component\Security\Core\Exception\AuthenticationException;

class InvalidRefreshTokenException extends AuthenticationException
{
}
9 changes: 9 additions & 0 deletions Exception/UnknownRefreshTokenException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

namespace Gesdinet\JWTRefreshTokenBundle\Exception;

use Symfony\Component\Security\Core\Exception\AuthenticationException;

class UnknownRefreshTokenException extends AuthenticationException
{
}
9 changes: 9 additions & 0 deletions Exception/UnknownUserFromRefreshTokenException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

namespace Gesdinet\JWTRefreshTokenBundle\Exception;

use Symfony\Component\Security\Core\Exception\AuthenticationException;

class UnknownUserFromRefreshTokenException extends AuthenticationException
{
}
6 changes: 4 additions & 2 deletions Security/Authenticator/RefreshTokenAuthenticator.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
namespace Gesdinet\JWTRefreshTokenBundle\Security\Authenticator;

use Gesdinet\JWTRefreshTokenBundle\Request\RequestRefreshToken;
use Gesdinet\JWTRefreshTokenBundle\Exception\UnknownRefreshTokenException;
use Gesdinet\JWTRefreshTokenBundle\Exception\UnknownUserFromRefreshTokenException;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
Expand Down Expand Up @@ -76,13 +78,13 @@ public function getUser($credentials, UserProviderInterface $userProvider)
$username = $userProvider->getUsernameForRefreshToken($refreshToken);

if (null === $username) {
throw new AuthenticationException(sprintf('Refresh token "%s" does not exist.', $refreshToken));
throw new UnknownRefreshTokenException(sprintf('Refresh token "%s" does not exist.', $refreshToken));
}

$user = $userProvider->loadUserByUsername($username);

if (null === $user) {
throw new AuthenticationException(sprintf('User with refresh token "%s" does not exist.', $refreshToken));
throw new UnknownUserFromRefreshTokenException(sprintf('User with refresh token "%s" does not exist.', $refreshToken));
}

$this->userChecker->checkPreAuth($user);
Expand Down
3 changes: 2 additions & 1 deletion Service/RefreshToken.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

use Gesdinet\JWTRefreshTokenBundle\Event\RefreshEvent;
use Gesdinet\JWTRefreshTokenBundle\Security\Authenticator\RefreshTokenAuthenticator;
use Gesdinet\JWTRefreshTokenBundle\Exception\InvalidRefreshTokenException;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface as ContractsEventDispatcherInterface;
use InvalidArgumentException;
Expand Down Expand Up @@ -133,7 +134,7 @@ public function refresh(Request $request)
if (null === $refreshToken || !$refreshToken->isValid()) {
return $this->failureHandler->onAuthenticationFailure(
$request,
new AuthenticationException(
new InvalidRefreshTokenException(
sprintf('Refresh token "%s" is invalid.', $refreshToken)
)
);
Expand Down

0 comments on commit d77b3d9

Please sign in to comment.