[Security] Removed get/setExtraInformation
, added get/set(Token|User)
This commit is contained in:
parent
837ae15102
commit
39da27a06d
@ -35,5 +35,6 @@ CHANGELOG
|
||||
* [BC BREAK] moved the default logout success handling to a separate class. The
|
||||
order of arguments in the constructor of `LogoutListener` has changed.
|
||||
* [BC BREAK] The constructor of `AuthenticationException` and all child
|
||||
classes now matches the constructor of `\Exception`. Extra information
|
||||
should be passed via the `setExtraInformation` setter.
|
||||
classes now matches the constructor of `\Exception`. The extra information
|
||||
getters and setters are removed. There are now dedicated getters/setters for
|
||||
token (`AuthenticationException') and user (`AccountStatusException`).
|
||||
|
@ -77,7 +77,7 @@ class AuthenticationProviderManager implements AuthenticationManagerInterface
|
||||
break;
|
||||
}
|
||||
} catch (AccountStatusException $e) {
|
||||
$e->setExtraInformation($token);
|
||||
$e->setToken($token);
|
||||
|
||||
throw $e;
|
||||
} catch (AuthenticationException $e) {
|
||||
@ -105,7 +105,7 @@ class AuthenticationProviderManager implements AuthenticationManagerInterface
|
||||
$this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_FAILURE, new AuthenticationFailureEvent($token, $lastException));
|
||||
}
|
||||
|
||||
$lastException->setExtraInformation($token);
|
||||
$lastException->setToken($token);
|
||||
|
||||
throw $lastException;
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ class DaoAuthenticationProvider extends UserAuthenticationProvider
|
||||
throw $notFound;
|
||||
} catch (\Exception $repositoryProblem) {
|
||||
$ex = new AuthenticationServiceException($repositoryProblem->getMessage(), 0, $repositoryProblem);
|
||||
$ex->setExtraInformation($token);
|
||||
$ex->setToken($token);
|
||||
throw $ex;
|
||||
}
|
||||
}
|
||||
|
@ -11,12 +11,36 @@
|
||||
|
||||
namespace Symfony\Component\Security\Core\Exception;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
|
||||
/**
|
||||
* AccountStatusException is the base class for authentication exceptions
|
||||
* caused by the user account status.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
abstract class AccountStatusException extends AuthenticationException
|
||||
{
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* Get the user.
|
||||
*
|
||||
* @return UserInterface
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the user.
|
||||
*
|
||||
* @param UserInterface $user
|
||||
*/
|
||||
public function setUser(UserInterface $user)
|
||||
{
|
||||
$this->user = $user;
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,8 @@
|
||||
|
||||
namespace Symfony\Component\Security\Core\Exception;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* AuthenticationException is the base class for all authentication exceptions.
|
||||
*
|
||||
@ -19,16 +21,26 @@ namespace Symfony\Component\Security\Core\Exception;
|
||||
*/
|
||||
class AuthenticationException extends \RuntimeException implements \Serializable
|
||||
{
|
||||
private $extraInformation;
|
||||
private $token;
|
||||
|
||||
public function getExtraInformation()
|
||||
/**
|
||||
* Get the token.
|
||||
*
|
||||
* @return TokenInterface
|
||||
*/
|
||||
public function getToken()
|
||||
{
|
||||
return $this->extraInformation;
|
||||
return $this->token;
|
||||
}
|
||||
|
||||
public function setExtraInformation($extraInformation)
|
||||
/**
|
||||
* Set the token.
|
||||
*
|
||||
* @param TokenInterface $token
|
||||
*/
|
||||
public function setToken(TokenInterface $token)
|
||||
{
|
||||
$this->extraInformation = $extraInformation;
|
||||
$this->token = $token;
|
||||
}
|
||||
|
||||
public function serialize()
|
||||
|
@ -34,7 +34,7 @@ class UserChecker implements UserCheckerInterface
|
||||
|
||||
if (!$user->isCredentialsNonExpired()) {
|
||||
$ex = new CredentialsExpiredException('User credentials have expired.');
|
||||
$ex->setExtraInformation($user);
|
||||
$ex->setUser($user);
|
||||
throw $ex;
|
||||
}
|
||||
}
|
||||
@ -50,19 +50,19 @@ class UserChecker implements UserCheckerInterface
|
||||
|
||||
if (!$user->isAccountNonLocked()) {
|
||||
$ex = new LockedException('User account is locked.');
|
||||
$ex->setExtraInformation($user);
|
||||
$ex->setUser($user);
|
||||
throw $ex;
|
||||
}
|
||||
|
||||
if (!$user->isEnabled()) {
|
||||
throw new DisabledException('User account is disabled.');
|
||||
$ex->setExtraInformation($user);
|
||||
$ex->setUser($user);
|
||||
throw $ex;
|
||||
}
|
||||
|
||||
if (!$user->isAccountNonExpired()) {
|
||||
$ex = new AccountExpiredException('User account has expired.');
|
||||
$ex->setExtraInformation($user);
|
||||
$ex->setUser($user);
|
||||
throw $ex;
|
||||
}
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ class ExceptionListener
|
||||
|
||||
try {
|
||||
$insufficientAuthenticationException = new InsufficientAuthenticationException('Full authentication is required to access this resource.', 0, $exception);
|
||||
$insufficientAuthenticationException->setExtraInformation($token);
|
||||
$insufficientAuthenticationException->setToken($token);
|
||||
$response = $this->startAuthentication($request, $insufficientAuthenticationException);
|
||||
} catch (\Exception $e) {
|
||||
$event->setException($e);
|
||||
|
@ -37,7 +37,7 @@ class AuthenticationProviderManagerTest extends \PHPUnit_Framework_TestCase
|
||||
$manager->authenticate($token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'));
|
||||
$this->fail();
|
||||
} catch (ProviderNotFoundException $e) {
|
||||
$this->assertSame($token, $e->getExtraInformation());
|
||||
$this->assertSame($token, $e->getToken());
|
||||
}
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@ class AuthenticationProviderManagerTest extends \PHPUnit_Framework_TestCase
|
||||
$manager->authenticate($token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'));
|
||||
$this->fail();
|
||||
} catch (AccountStatusException $e) {
|
||||
$this->assertSame($token, $e->getExtraInformation());
|
||||
$this->assertSame($token, $e->getToken());
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ class AuthenticationProviderManagerTest extends \PHPUnit_Framework_TestCase
|
||||
$manager->authenticate($token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'));
|
||||
$this->fail();
|
||||
} catch (AuthenticationException $e) {
|
||||
$this->assertSame($token, $e->getExtraInformation());
|
||||
$this->assertSame($token, $e->getToken());
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user