[Security] removed usage of the deprecated SecurityContextInterface

This commit is contained in:
Fabien Potencier 2015-01-08 11:20:53 +01:00
parent 0ea8ae9205
commit 91d01d83f5
48 changed files with 463 additions and 378 deletions

View File

@ -13,6 +13,7 @@ namespace Symfony\Bridge\Twig\Extension;
use Symfony\Component\Security\Acl\Voter\FieldVote; use Symfony\Component\Security\Acl\Voter\FieldVote;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
/** /**
* SecurityExtension exposes security context features. * SecurityExtension exposes security context features.
@ -21,16 +22,21 @@ use Symfony\Component\Security\Core\SecurityContextInterface;
*/ */
class SecurityExtension extends \Twig_Extension class SecurityExtension extends \Twig_Extension
{ {
private $context; private $securityChecker;
public function __construct(SecurityContextInterface $context = null) /**
* @param SecurityContextInterface|AuthorizationCheckerInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($securityChecker = null)
{ {
$this->context = $context; $this->securityChecker = $securityChecker;
} }
public function isGranted($role, $object = null, $field = null) public function isGranted($role, $object = null, $field = null)
{ {
if (null === $this->context) { if (null === $this->securityChecker) {
return false; return false;
} }
@ -38,7 +44,7 @@ class SecurityExtension extends \Twig_Extension
$object = new FieldVote($object, $field); $object = new FieldVote($object, $field);
} }
return $this->context->isGranted($role, $object); return $this->securityChecker->isGranted($role, $object);
} }
/** /**

View File

@ -11,7 +11,7 @@
<service id="form.type_extension.csrf" class="Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension"> <service id="form.type_extension.csrf" class="Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension">
<tag name="form.type_extension" alias="form" /> <tag name="form.type_extension" alias="form" />
<argument type="service" id="form.csrf_provider" /> <argument type="service" id="security.csrf.token_manager" />
<argument>%form.type_extension.csrf.enabled%</argument> <argument>%form.type_extension.csrf.enabled%</argument>
<argument>%form.type_extension.csrf.field_name%</argument> <argument>%form.type_extension.csrf.field_name%</argument>
<argument type="service" id="translator.default" /> <argument type="service" id="translator.default" />

View File

@ -115,7 +115,7 @@
<service id="templating.form.renderer" class="%templating.form.renderer.class%" public="false"> <service id="templating.form.renderer" class="%templating.form.renderer.class%" public="false">
<argument type="service" id="templating.form.engine" /> <argument type="service" id="templating.form.engine" />
<argument type="service" id="form.csrf_provider" on-invalid="null" /> <argument type="service" id="security.csrf.token_manager" on-invalid="null" />
</service> </service>
<service id="templating.globals" class="%templating.globals.class%"> <service id="templating.globals" class="%templating.globals.class%">

View File

@ -52,7 +52,7 @@
<services> <services>
<service id="security.authentication.listener.anonymous" class="%security.authentication.listener.anonymous.class%" public="false"> <service id="security.authentication.listener.anonymous" class="%security.authentication.listener.anonymous.class%" public="false">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument /> <!-- Key --> <argument /> <!-- Key -->
<argument type="service" id="logger" on-invalid="null" /> <argument type="service" id="logger" on-invalid="null" />
<argument type="service" id="security.authentication.manager" /> <argument type="service" id="security.authentication.manager" />
@ -82,7 +82,7 @@
<service id="security.context_listener" class="%security.context_listener.class%" public="false"> <service id="security.context_listener" class="%security.context_listener.class%" public="false">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="collection"></argument> <argument type="collection"></argument>
<argument /> <!-- Provider Key --> <argument /> <!-- Provider Key -->
<argument type="service" id="logger" on-invalid="null" /> <argument type="service" id="logger" on-invalid="null" />
@ -90,7 +90,7 @@
</service> </service>
<service id="security.logout_listener" class="%security.logout_listener.class%" public="false" abstract="true"> <service id="security.logout_listener" class="%security.logout_listener.class%" public="false" abstract="true">
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="service" id="security.http_utils" /> <argument type="service" id="security.http_utils" />
<argument type="service" id="security.logout.success_handler" /> <argument type="service" id="security.logout.success_handler" />
<argument /> <!-- Options --> <argument /> <!-- Options -->
@ -109,7 +109,7 @@
<service id="security.authentication.listener.abstract" abstract="true" public="false"> <service id="security.authentication.listener.abstract" abstract="true" public="false">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="service" id="security.authentication.manager" /> <argument type="service" id="security.authentication.manager" />
<argument type="service" id="security.authentication.session_strategy" /> <argument type="service" id="security.authentication.session_strategy" />
<argument type="service" id="security.http_utils" /> <argument type="service" id="security.http_utils" />
@ -167,7 +167,7 @@
<service id="security.authentication.listener.simple_preauth" class="%security.authentication.listener.simple_preauth.class%" public="false" abstract="true"> <service id="security.authentication.listener.simple_preauth" class="%security.authentication.listener.simple_preauth.class%" public="false" abstract="true">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="service" id="security.authentication.manager" /> <argument type="service" id="security.authentication.manager" />
<argument /> <!-- Provider-shared Key --> <argument /> <!-- Provider-shared Key -->
<argument /> <!-- Authenticator --> <argument /> <!-- Authenticator -->
@ -177,7 +177,7 @@
<service id="security.authentication.listener.x509" class="%security.authentication.listener.x509.class%" public="false" abstract="true"> <service id="security.authentication.listener.x509" class="%security.authentication.listener.x509.class%" public="false" abstract="true">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="service" id="security.authentication.manager" /> <argument type="service" id="security.authentication.manager" />
<argument /> <!-- Provider-shared Key --> <argument /> <!-- Provider-shared Key -->
<argument /> <!-- x509 user --> <argument /> <!-- x509 user -->
@ -188,7 +188,7 @@
<service id="security.authentication.listener.remote_user" class="Symfony\Component\Security\Http\Firewall\RemoteUserAuthenticationListener" public="false" abstract="true"> <service id="security.authentication.listener.remote_user" class="Symfony\Component\Security\Http\Firewall\RemoteUserAuthenticationListener" public="false" abstract="true">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="service" id="security.authentication.manager" /> <argument type="service" id="security.authentication.manager" />
<argument /> <!-- Provider-shared Key --> <argument /> <!-- Provider-shared Key -->
<argument /> <!-- REMOTE_USER server env var --> <argument /> <!-- REMOTE_USER server env var -->
@ -198,7 +198,7 @@
<service id="security.authentication.listener.basic" class="%security.authentication.listener.basic.class%" public="false" abstract="true"> <service id="security.authentication.listener.basic" class="%security.authentication.listener.basic.class%" public="false" abstract="true">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="service" id="security.authentication.manager" /> <argument type="service" id="security.authentication.manager" />
<argument /> <!-- Provider-shared Key --> <argument /> <!-- Provider-shared Key -->
<argument /> <!-- Entry Point --> <argument /> <!-- Entry Point -->
@ -207,7 +207,7 @@
<service id="security.authentication.listener.digest" class="%security.authentication.listener.digest.class%" public="false" abstract="true"> <service id="security.authentication.listener.digest" class="%security.authentication.listener.digest.class%" public="false" abstract="true">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument /> <!-- User Provider --> <argument /> <!-- User Provider -->
<argument /> <!-- Provider-shared Key --> <argument /> <!-- Provider-shared Key -->
<argument /> <!-- Entry Point --> <argument /> <!-- Entry Point -->
@ -235,7 +235,7 @@
<service id="security.exception_listener" class="%security.exception_listener.class%" public="false" abstract="true"> <service id="security.exception_listener" class="%security.exception_listener.class%" public="false" abstract="true">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="service" id="security.authentication.trust_resolver" /> <argument type="service" id="security.authentication.trust_resolver" />
<argument type="service" id="security.http_utils" /> <argument type="service" id="security.http_utils" />
<argument /> <argument />
@ -247,7 +247,7 @@
<service id="security.authentication.switchuser_listener" class="%security.authentication.switchuser_listener.class%" public="false" abstract="true"> <service id="security.authentication.switchuser_listener" class="%security.authentication.switchuser_listener.class%" public="false" abstract="true">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument /> <!-- User Provider --> <argument /> <!-- User Provider -->
<argument type="service" id="security.user_checker" /> <argument type="service" id="security.user_checker" />
<argument /> <!-- Provider Key --> <argument /> <!-- Provider Key -->
@ -260,7 +260,7 @@
<service id="security.access_listener" class="%security.access_listener.class%" public="false"> <service id="security.access_listener" class="%security.access_listener.class%" public="false">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="service" id="security.access.decision_manager" /> <argument type="service" id="security.access.decision_manager" />
<argument type="service" id="security.access_map" /> <argument type="service" id="security.access_map" />
<argument type="service" id="security.authentication.manager" /> <argument type="service" id="security.authentication.manager" />

View File

@ -19,7 +19,7 @@
<services> <services>
<service id="security.authentication.listener.rememberme" class="%security.authentication.listener.rememberme.class%" public="false" abstract="true"> <service id="security.authentication.listener.rememberme" class="%security.authentication.listener.rememberme.class%" public="false" abstract="true">
<tag name="monolog.logger" channel="security" /> <tag name="monolog.logger" channel="security" />
<argument type="service" id="security.context" /> <argument type="service" id="security.token_storage" />
<argument type="service" id="security.authentication.rememberme" /> <argument type="service" id="security.authentication.rememberme" />
<argument type="service" id="security.authentication.manager" /> <argument type="service" id="security.authentication.manager" />
<argument type="service" id="logger" on-invalid="null" /> <argument type="service" id="logger" on-invalid="null" />

View File

@ -18,7 +18,7 @@
<service id="templating.helper.security" class="%templating.helper.security.class%"> <service id="templating.helper.security" class="%templating.helper.security.class%">
<tag name="templating.helper" alias="security" /> <tag name="templating.helper" alias="security" />
<argument type="service" id="security.context" on-invalid="ignore" /> <argument type="service" id="security.authorization_checker" on-invalid="ignore" />
</service> </service>
</services> </services>
</container> </container>

View File

@ -17,7 +17,7 @@
<service id="twig.extension.security" class="%twig.extension.security.class%" public="false"> <service id="twig.extension.security" class="%twig.extension.security.class%" public="false">
<tag name="twig.extension" /> <tag name="twig.extension" />
<argument type="service" id="security.context" on-invalid="ignore" /> <argument type="service" id="security.authorization_checker" on-invalid="ignore" />
</service> </service>
</services> </services>
</container> </container>

View File

@ -14,29 +14,30 @@ namespace Symfony\Bundle\SecurityBundle\Templating\Helper;
use Symfony\Component\Security\Acl\Voter\FieldVote; use Symfony\Component\Security\Acl\Voter\FieldVote;
use Symfony\Component\Templating\Helper\Helper; use Symfony\Component\Templating\Helper\Helper;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
/** /**
* SecurityHelper provides read-only access to the security context. * SecurityHelper provides read-only access to the security checker.
* *
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
*/ */
class SecurityHelper extends Helper class SecurityHelper extends Helper
{ {
private $context; private $securityChecker;
/** /**
* Constructor. * @param SecurityContextInterface|AuthorizationCheckerInterface
* *
* @param SecurityContextInterface $context A SecurityContext instance * Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/ */
public function __construct(SecurityContextInterface $context = null) public function __construct($securityChecker = null)
{ {
$this->context = $context; $this->securityChecker = $securityChecker;
} }
public function isGranted($role, $object = null, $field = null) public function isGranted($role, $object = null, $field = null)
{ {
if (null === $this->context) { if (null === $this->securityChecker) {
return false; return false;
} }
@ -44,7 +45,7 @@ class SecurityHelper extends Helper
$object = new FieldVote($object, $field); $object = new FieldVote($object, $field);
} }
return $this->context->isGranted($role, $object); return $this->securityChecker->isGranted($role, $object);
} }
/** /**

View File

@ -25,9 +25,9 @@ class SecurityDataCollectorTest extends \PHPUnit_Framework_TestCase
$this->assertEmpty($collector->getUser()); $this->assertEmpty($collector->getUser());
} }
/** @dataProvider provideTokenStorage */ public function testCollectWhenAuthenticationTokenIsNull()
public function testCollectWhenAuthenticationTokenIsNull($tokenStorage)
{ {
$tokenStorage = new TokenStorage();
$collector = new SecurityDataCollector($tokenStorage, $this->getRoleHierarchy()); $collector = new SecurityDataCollector($tokenStorage, $this->getRoleHierarchy());
$collector->collect($this->getRequest(), $this->getResponse()); $collector->collect($this->getRequest(), $this->getResponse());
@ -40,12 +40,21 @@ class SecurityDataCollectorTest extends \PHPUnit_Framework_TestCase
$this->assertEmpty($collector->getUser()); $this->assertEmpty($collector->getUser());
} }
public function provideTokenStorage() public function testLegacyCollectWhenAuthenticationTokenIsNull()
{ {
return array( $this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED);
array(new TokenStorage()),
array($this->getMock('Symfony\Component\Security\Core\SecurityContextInterface')), $tokenStorage = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface');
); $collector = new SecurityDataCollector($tokenStorage, $this->getRoleHierarchy());
$collector->collect($this->getRequest(), $this->getResponse());
$this->assertTrue($collector->isEnabled());
$this->assertFalse($collector->isAuthenticated());
$this->assertNull($collector->getTokenClass());
$this->assertTrue($collector->supportsRoleHierarchy());
$this->assertCount(0, $collector->getRoles());
$this->assertCount(0, $collector->getInheritedRoles());
$this->assertEmpty($collector->getUser());
} }
/** @dataProvider provideRoles */ /** @dataProvider provideRoles */

View File

@ -11,7 +11,7 @@
namespace Symfony\Bundle\SecurityBundle\Tests\Functional\Bundle\FormLoginBundle\Controller; namespace Symfony\Bundle\SecurityBundle\Tests\Functional\Bundle\FormLoginBundle\Controller;
use Symfony\Component\Security\Core\SecurityContext; use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\ContainerAware; use Symfony\Component\DependencyInjection\ContainerAware;
@ -21,15 +21,15 @@ class LocalizedController extends ContainerAware
public function loginAction(Request $request) public function loginAction(Request $request)
{ {
// get the login error if there is one // get the login error if there is one
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) { if ($request->attributes->has(Security::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR); $error = $request->attributes->get(Security::AUTHENTICATION_ERROR);
} else { } else {
$error = $request->getSession()->get(SecurityContext::AUTHENTICATION_ERROR); $error = $request->getSession()->get(Security::AUTHENTICATION_ERROR);
} }
return $this->container->get('templating')->renderResponse('FormLoginBundle:Localized:login.html.twig', array( return $this->container->get('templating')->renderResponse('FormLoginBundle:Localized:login.html.twig', array(
// last username entered by the user // last username entered by the user
'last_username' => $request->getSession()->get(SecurityContext::LAST_USERNAME), 'last_username' => $request->getSession()->get(Security::LAST_USERNAME),
'error' => $error, 'error' => $error,
)); ));
} }

View File

@ -14,7 +14,7 @@ namespace Symfony\Bundle\SecurityBundle\Tests\Functional\Bundle\FormLoginBundle\
use Symfony\Component\Security\Core\Exception\AccessDeniedException; use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\SecurityContext; use Symfony\Component\Security\Core\Security;
use Symfony\Component\DependencyInjection\ContainerAware; use Symfony\Component\DependencyInjection\ContainerAware;
class LoginController extends ContainerAware class LoginController extends ContainerAware
@ -22,15 +22,15 @@ class LoginController extends ContainerAware
public function loginAction(Request $request) public function loginAction(Request $request)
{ {
// get the login error if there is one // get the login error if there is one
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) { if ($request->attributes->has(Security::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR); $error = $request->attributes->get(Security::AUTHENTICATION_ERROR);
} else { } else {
$error = $request->getSession()->get(SecurityContext::AUTHENTICATION_ERROR); $error = $request->getSession()->get(Security::AUTHENTICATION_ERROR);
} }
return $this->container->get('templating')->renderResponse('FormLoginBundle:Login:login.html.twig', array( return $this->container->get('templating')->renderResponse('FormLoginBundle:Login:login.html.twig', array(
// last username entered by the user // last username entered by the user
'last_username' => $request->getSession()->get(SecurityContext::LAST_USERNAME), 'last_username' => $request->getSession()->get(Security::LAST_USERNAME),
'error' => $error, 'error' => $error,
)); ));
} }

View File

@ -17,7 +17,7 @@
], ],
"require": { "require": {
"php": ">=5.3.3", "php": ">=5.3.3",
"symfony/security": "~2.6|~3.0.0", "symfony/security": "~2.7|~3.0.0",
"symfony/http-kernel": "~2.2|~3.0.0" "symfony/http-kernel": "~2.2|~3.0.0"
}, },
"require-dev": { "require-dev": {

View File

@ -114,7 +114,7 @@
<service id="twig.form.renderer" class="%twig.form.renderer.class%" public="false"> <service id="twig.form.renderer" class="%twig.form.renderer.class%" public="false">
<argument type="service" id="twig.form.engine" /> <argument type="service" id="twig.form.engine" />
<argument type="service" id="form.csrf_provider" on-invalid="null" /> <argument type="service" id="security.csrf.token_manager" on-invalid="null" />
</service> </service>
<service id="twig.translation.extractor" class="%twig.translation.extractor.class%"> <service id="twig.translation.extractor" class="%twig.translation.extractor.class%">

View File

@ -11,8 +11,6 @@
namespace Symfony\Component\Form\Extension\Csrf\CsrfProvider; namespace Symfony\Component\Form\Extension\Csrf\CsrfProvider;
trigger_error('The '.__NAMESPACE__.'\CsrfTokenManagerAdapter is deprecated since version 2.4 and will be removed in version 3.0. Use the Symfony\Component\Security\Csrf\CsrfTokenManager class instead.', E_USER_DEPRECATED);
use Symfony\Component\Security\Csrf\CsrfToken; use Symfony\Component\Security\Csrf\CsrfToken;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
@ -36,8 +34,12 @@ class CsrfTokenManagerAdapter implements CsrfProviderInterface
$this->tokenManager = $tokenManager; $this->tokenManager = $tokenManager;
} }
public function getTokenManager() public function getTokenManager($triggerDeprecationError = true)
{ {
if ($triggerDeprecationError) {
trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in version 3.0. Use the Symfony\Component\Security\Csrf\CsrfTokenManager class instead.', E_USER_DEPRECATED);
}
return $this->tokenManager; return $this->tokenManager;
} }
@ -46,6 +48,8 @@ class CsrfTokenManagerAdapter implements CsrfProviderInterface
*/ */
public function generateCsrfToken($intention) public function generateCsrfToken($intention)
{ {
trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in version 3.0. Use the Symfony\Component\Security\Csrf\CsrfTokenManager class instead.', E_USER_DEPRECATED);
return $this->tokenManager->getToken($intention)->getValue(); return $this->tokenManager->getToken($intention)->getValue();
} }
@ -54,6 +58,8 @@ class CsrfTokenManagerAdapter implements CsrfProviderInterface
*/ */
public function isCsrfTokenValid($intention, $token) public function isCsrfTokenValid($intention, $token)
{ {
trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in version 3.0. Use the Symfony\Component\Security\Csrf\CsrfTokenManager class instead.', E_USER_DEPRECATED);
return $this->tokenManager->isTokenValid(new CsrfToken($intention, $token)); return $this->tokenManager->isTokenValid(new CsrfToken($intention, $token));
} }
} }

View File

@ -133,7 +133,7 @@ class FormTypeCsrfExtension extends AbstractTypeExtension
} }
return $options['csrf_provider'] instanceof CsrfTokenManagerAdapter return $options['csrf_provider'] instanceof CsrfTokenManagerAdapter
? $options['csrf_provider']->getTokenManager() ? $options['csrf_provider']->getTokenManager(false)
: new CsrfProviderAdapter($options['csrf_provider']); : new CsrfProviderAdapter($options['csrf_provider']);
}; };

View File

@ -11,6 +11,8 @@
namespace Symfony\Component\Security\Core; namespace Symfony\Component\Security\Core;
trigger_error('The '.__NAMESPACE__.'\SecurityContext class is deprecated since version 2.6 and will be removed in 3.0. Use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage or Symfony\Component\Security\Core\Authorization\AuthorizationChecker instead.', E_USER_DEPRECATED);
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
@ -76,8 +78,6 @@ class SecurityContext implements SecurityContextInterface
*/ */
public function getToken() public function getToken()
{ {
trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage::getToken() method instead.', E_USER_DEPRECATED);
return $this->tokenStorage->getToken(); return $this->tokenStorage->getToken();
} }
@ -88,8 +88,6 @@ class SecurityContext implements SecurityContextInterface
*/ */
public function setToken(TokenInterface $token = null) public function setToken(TokenInterface $token = null)
{ {
trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage::setToken() method instead.', E_USER_DEPRECATED);
return $this->tokenStorage->setToken($token); return $this->tokenStorage->setToken($token);
} }
@ -100,8 +98,6 @@ class SecurityContext implements SecurityContextInterface
*/ */
public function isGranted($attributes, $object = null) public function isGranted($attributes, $object = null)
{ {
trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface::isGranted() method instead.', E_USER_DEPRECATED);
return $this->authorizationChecker->isGranted($attributes, $object); return $this->authorizationChecker->isGranted($attributes, $object);
} }
} }

View File

@ -11,6 +11,8 @@
namespace Symfony\Component\Security\Core; namespace Symfony\Component\Security\Core;
trigger_error('The '.__NAMESPACE__.'\SecurityContextInterface interface is deprecated since version 2.6 and will be removed in 3.0.', E_USER_DEPRECATED);
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;

View File

@ -15,7 +15,7 @@ use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker; use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
use Symfony\Component\Security\Core\SecurityContext; use Symfony\Component\Security\Core\SecurityContext;
class SecurityContextTest extends \PHPUnit_Framework_TestCase class LegacySecurityContextTest extends \PHPUnit_Framework_TestCase
{ {
private $tokenStorage; private $tokenStorage;
private $authorizationChecker; private $authorizationChecker;
@ -23,6 +23,8 @@ class SecurityContextTest extends \PHPUnit_Framework_TestCase
public function setUp() public function setUp()
{ {
$this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED);
$this->tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface'); $this->tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$this->authorizationChecker = $this->getMock('Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface'); $this->authorizationChecker = $this->getMock('Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface');
$this->securityContext = new SecurityContext($this->tokenStorage, $this->authorizationChecker); $this->securityContext = new SecurityContext($this->tokenStorage, $this->authorizationChecker);

View File

@ -11,9 +11,9 @@
namespace Symfony\Component\Security\Core\Tests\Validator\Constraints; namespace Symfony\Component\Security\Core\Tests\Validator\Constraints;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
use Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface; use Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface;
use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Validator\Constraints\UserPassword; use Symfony\Component\Security\Core\Validator\Constraints\UserPassword;
use Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator; use Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator;
use Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest; use Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest;
@ -28,9 +28,9 @@ abstract class UserPasswordValidatorTest extends AbstractConstraintValidatorTest
const SALT = '^S4lt$'; const SALT = '^S4lt$';
/** /**
* @var SecurityContextInterface * @var TokenStorageInterface
*/ */
protected $securityContext; protected $tokenStorage;
/** /**
* @var PasswordEncoderInterface * @var PasswordEncoderInterface
@ -44,13 +44,13 @@ abstract class UserPasswordValidatorTest extends AbstractConstraintValidatorTest
protected function createValidator() protected function createValidator()
{ {
return new UserPasswordValidator($this->securityContext, $this->encoderFactory); return new UserPasswordValidator($this->tokenStorage, $this->encoderFactory);
} }
protected function setUp() protected function setUp()
{ {
$user = $this->createUser(); $user = $this->createUser();
$this->securityContext = $this->createSecurityContext($user); $this->tokenStorage = $this->createTokenStorage($user);
$this->encoder = $this->createPasswordEncoder(); $this->encoder = $this->createPasswordEncoder();
$this->encoderFactory = $this->createEncoderFactory($this->encoder); $this->encoderFactory = $this->createEncoderFactory($this->encoder);
@ -97,7 +97,7 @@ abstract class UserPasswordValidatorTest extends AbstractConstraintValidatorTest
{ {
$user = $this->getMock('Foo\Bar\User'); $user = $this->getMock('Foo\Bar\User');
$this->securityContext = $this->createSecurityContext($user); $this->tokenStorage = $this->createTokenStorage($user);
$this->validator = $this->createValidator(); $this->validator = $this->createValidator();
$this->validator->initialize($this->context); $this->validator->initialize($this->context);
@ -141,11 +141,11 @@ abstract class UserPasswordValidatorTest extends AbstractConstraintValidatorTest
return $mock; return $mock;
} }
protected function createSecurityContext($user = null) protected function createTokenStorage($user = null)
{ {
$token = $this->createAuthenticationToken($user); $token = $this->createAuthenticationToken($user);
$mock = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $mock = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$mock $mock
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')

View File

@ -14,6 +14,7 @@ namespace Symfony\Component\Security\Core\Validator\Constraints;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator; use Symfony\Component\Validator\ConstraintValidator;
use Symfony\Component\Validator\Exception\ConstraintDefinitionException; use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
@ -21,12 +22,17 @@ use Symfony\Component\Validator\Exception\UnexpectedTypeException;
class UserPasswordValidator extends ConstraintValidator class UserPasswordValidator extends ConstraintValidator
{ {
private $securityContext; private $tokenStorage;
private $encoderFactory; private $encoderFactory;
public function __construct(SecurityContextInterface $securityContext, EncoderFactoryInterface $encoderFactory) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, EncoderFactoryInterface $encoderFactory)
{ {
$this->securityContext = $securityContext; $this->tokenStorage = $tokenStorage;
$this->encoderFactory = $encoderFactory; $this->encoderFactory = $encoderFactory;
} }
@ -39,7 +45,7 @@ class UserPasswordValidator extends ConstraintValidator
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\UserPassword'); throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\UserPassword');
} }
$user = $this->securityContext->getToken()->getUser(); $user = $this->tokenStorage->getToken()->getUser();
if (!$user instanceof UserInterface) { if (!$user instanceof UserInterface) {
throw new ConstraintDefinitionException('The User object must implement the UserInterface interface.'); throw new ConstraintDefinitionException('The User object must implement the UserInterface interface.');

View File

@ -18,6 +18,7 @@ use Symfony\Component\Security\Http\RememberMe\RememberMeServicesInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\Exception\SessionUnavailableException; use Symfony\Component\Security\Core\Exception\SessionUnavailableException;
@ -56,7 +57,7 @@ abstract class AbstractAuthenticationListener implements ListenerInterface
protected $providerKey; protected $providerKey;
protected $httpUtils; protected $httpUtils;
private $securityContext; private $tokenStorage;
private $sessionStrategy; private $sessionStrategy;
private $dispatcher; private $dispatcher;
private $successHandler; private $successHandler;
@ -66,27 +67,29 @@ abstract class AbstractAuthenticationListener implements ListenerInterface
/** /**
* Constructor. * Constructor.
* *
* @param SecurityContextInterface $securityContext A SecurityContext instance * @param SecurityContextInterface|TokenStorageInterface $tokenStorage A SecurityContext or a TokenStorageInterface instance
* @param AuthenticationManagerInterface $authenticationManager An AuthenticationManagerInterface instance * @param AuthenticationManagerInterface $authenticationManager An AuthenticationManagerInterface instance
* @param SessionAuthenticationStrategyInterface $sessionStrategy * @param SessionAuthenticationStrategyInterface $sessionStrategy
* @param HttpUtils $httpUtils An HttpUtilsInterface instance * @param HttpUtils $httpUtils An HttpUtilsInterface instance
* @param string $providerKey * @param string $providerKey
* @param AuthenticationSuccessHandlerInterface $successHandler * @param AuthenticationSuccessHandlerInterface $successHandler
* @param AuthenticationFailureHandlerInterface $failureHandler * @param AuthenticationFailureHandlerInterface $failureHandler
* @param array $options An array of options for the processing of a * @param array $options An array of options for the processing of a
* successful, or failed authentication attempt * successful, or failed authentication attempt
* @param LoggerInterface $logger A LoggerInterface instance * @param LoggerInterface $logger A LoggerInterface instance
* @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance * @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance
* *
* @throws \InvalidArgumentException * @throws \InvalidArgumentException
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/ */
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) public function __construct($tokenStorage, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null)
{ {
if (empty($providerKey)) { if (empty($providerKey)) {
throw new \InvalidArgumentException('$providerKey must not be empty.'); throw new \InvalidArgumentException('$providerKey must not be empty.');
} }
$this->securityContext = $securityContext; $this->tokenStorage = $tokenStorage;
$this->authenticationManager = $authenticationManager; $this->authenticationManager = $authenticationManager;
$this->sessionStrategy = $sessionStrategy; $this->sessionStrategy = $sessionStrategy;
$this->providerKey = $providerKey; $this->providerKey = $providerKey;
@ -196,9 +199,9 @@ abstract class AbstractAuthenticationListener implements ListenerInterface
$this->logger->info(sprintf('Authentication request failed: %s', $failed->getMessage())); $this->logger->info(sprintf('Authentication request failed: %s', $failed->getMessage()));
} }
$token = $this->securityContext->getToken(); $token = $this->tokenStorage->getToken();
if ($token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey()) { if ($token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey()) {
$this->securityContext->setToken(null); $this->tokenStorage->setToken(null);
} }
$response = $this->failureHandler->onAuthenticationFailure($request, $failed); $response = $this->failureHandler->onAuthenticationFailure($request, $failed);
@ -216,7 +219,7 @@ abstract class AbstractAuthenticationListener implements ListenerInterface
$this->logger->info(sprintf('User "%s" has been authenticated successfully', $token->getUsername())); $this->logger->info(sprintf('User "%s" has been authenticated successfully', $token->getUsername()));
} }
$this->securityContext->setToken($token); $this->tokenStorage->setToken($token);
$session = $request->getSession(); $session = $request->getSession();
$session->remove(Security::AUTHENTICATION_ERROR); $session->remove(Security::AUTHENTICATION_ERROR);

View File

@ -14,6 +14,7 @@ namespace Symfony\Component\Security\Http\Firewall;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\PreAuthenticatedToken; use Symfony\Component\Security\Core\Authentication\Token\PreAuthenticatedToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Symfony\Component\Security\Http\SecurityEvents; use Symfony\Component\Security\Http\SecurityEvents;
@ -33,14 +34,19 @@ use Symfony\Component\Security\Core\Exception\BadCredentialsException;
abstract class AbstractPreAuthenticatedListener implements ListenerInterface abstract class AbstractPreAuthenticatedListener implements ListenerInterface
{ {
protected $logger; protected $logger;
private $securityContext; private $tokenStorage;
private $authenticationManager; private $authenticationManager;
private $providerKey; private $providerKey;
private $dispatcher; private $dispatcher;
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, $providerKey, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, AuthenticationManagerInterface $authenticationManager, $providerKey, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null)
{ {
$this->securityContext = $securityContext; $this->tokenStorage = $tokenStorage;
$this->authenticationManager = $authenticationManager; $this->authenticationManager = $authenticationManager;
$this->providerKey = $providerKey; $this->providerKey = $providerKey;
$this->logger = $logger; $this->logger = $logger;
@ -57,7 +63,7 @@ abstract class AbstractPreAuthenticatedListener implements ListenerInterface
$request = $event->getRequest(); $request = $event->getRequest();
if (null !== $this->logger) { if (null !== $this->logger) {
$this->logger->debug(sprintf('Checking secure context token: %s', $this->securityContext->getToken())); $this->logger->debug(sprintf('Checking secure context token: %s', $this->tokenStorage->getToken()));
} }
try { try {
@ -68,7 +74,7 @@ abstract class AbstractPreAuthenticatedListener implements ListenerInterface
return; return;
} }
if (null !== $token = $this->securityContext->getToken()) { if (null !== $token = $this->tokenStorage->getToken()) {
if ($token instanceof PreAuthenticatedToken && $this->providerKey == $token->getProviderKey() && $token->isAuthenticated() && $token->getUsername() === $user) { if ($token instanceof PreAuthenticatedToken && $this->providerKey == $token->getProviderKey() && $token->isAuthenticated() && $token->getUsername() === $user) {
return; return;
} }
@ -84,7 +90,7 @@ abstract class AbstractPreAuthenticatedListener implements ListenerInterface
if (null !== $this->logger) { if (null !== $this->logger) {
$this->logger->info(sprintf('Authentication success: %s', $token)); $this->logger->info(sprintf('Authentication success: %s', $token));
} }
$this->securityContext->setToken($token); $this->tokenStorage->setToken($token);
if (null !== $this->dispatcher) { if (null !== $this->dispatcher) {
$loginEvent = new InteractiveLoginEvent($request, $token); $loginEvent = new InteractiveLoginEvent($request, $token);
@ -102,9 +108,9 @@ abstract class AbstractPreAuthenticatedListener implements ListenerInterface
*/ */
private function clearToken(AuthenticationException $exception) private function clearToken(AuthenticationException $exception)
{ {
$token = $this->securityContext->getToken(); $token = $this->tokenStorage->getToken();
if ($token instanceof PreAuthenticatedToken && $this->providerKey === $token->getProviderKey()) { if ($token instanceof PreAuthenticatedToken && $this->providerKey === $token->getProviderKey()) {
$this->securityContext->setToken(null); $this->tokenStorage->setToken(null);
if (null !== $this->logger) { if (null !== $this->logger) {
$this->logger->info(sprintf("Cleared security context due to exception: %s", $exception->getMessage())); $this->logger->info(sprintf("Cleared security context due to exception: %s", $exception->getMessage()));

View File

@ -15,6 +15,7 @@ use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface; use Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface;
use Symfony\Component\Security\Http\AccessMapInterface; use Symfony\Component\Security\Http\AccessMapInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException; use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException;
use Symfony\Component\Security\Core\Exception\AccessDeniedException; use Symfony\Component\Security\Core\Exception\AccessDeniedException;
@ -26,14 +27,19 @@ use Symfony\Component\Security\Core\Exception\AccessDeniedException;
*/ */
class AccessListener implements ListenerInterface class AccessListener implements ListenerInterface
{ {
private $context; private $tokenStorage;
private $accessDecisionManager; private $accessDecisionManager;
private $map; private $map;
private $authManager; private $authManager;
public function __construct(SecurityContextInterface $context, AccessDecisionManagerInterface $accessDecisionManager, AccessMapInterface $map, AuthenticationManagerInterface $authManager) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, AccessDecisionManagerInterface $accessDecisionManager, AccessMapInterface $map, AuthenticationManagerInterface $authManager)
{ {
$this->context = $context; $this->tokenStorage = $tokenStorage;
$this->accessDecisionManager = $accessDecisionManager; $this->accessDecisionManager = $accessDecisionManager;
$this->map = $map; $this->map = $map;
$this->authManager = $authManager; $this->authManager = $authManager;
@ -49,7 +55,7 @@ class AccessListener implements ListenerInterface
*/ */
public function handle(GetResponseEvent $event) public function handle(GetResponseEvent $event)
{ {
if (null === $token = $this->context->getToken()) { if (null === $token = $this->tokenStorage->getToken()) {
throw new AuthenticationCredentialsNotFoundException('A Token was not found in the SecurityContext.'); throw new AuthenticationCredentialsNotFoundException('A Token was not found in the SecurityContext.');
} }
@ -63,7 +69,7 @@ class AccessListener implements ListenerInterface
if (!$token->isAuthenticated()) { if (!$token->isAuthenticated()) {
$token = $this->authManager->authenticate($token); $token = $this->authManager->authenticate($token);
$this->context->setToken($token); $this->tokenStorage->setToken($token);
} }
if (!$this->accessDecisionManager->decide($token, $attributes, $request)) { if (!$this->accessDecisionManager->decide($token, $attributes, $request)) {

View File

@ -12,6 +12,7 @@
namespace Symfony\Component\Security\Http\Firewall; namespace Symfony\Component\Security\Http\Firewall;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
@ -26,14 +27,19 @@ use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
*/ */
class AnonymousAuthenticationListener implements ListenerInterface class AnonymousAuthenticationListener implements ListenerInterface
{ {
private $context; private $tokenStorage;
private $key; private $key;
private $authenticationManager; private $authenticationManager;
private $logger; private $logger;
public function __construct(SecurityContextInterface $context, $key, LoggerInterface $logger = null, AuthenticationManagerInterface $authenticationManager = null) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, $key, LoggerInterface $logger = null, AuthenticationManagerInterface $authenticationManager = null)
{ {
$this->context = $context; $this->tokenStorage = $tokenStorage;
$this->key = $key; $this->key = $key;
$this->authenticationManager = $authenticationManager; $this->authenticationManager = $authenticationManager;
$this->logger = $logger; $this->logger = $logger;
@ -46,7 +52,7 @@ class AnonymousAuthenticationListener implements ListenerInterface
*/ */
public function handle(GetResponseEvent $event) public function handle(GetResponseEvent $event)
{ {
if (null !== $this->context->getToken()) { if (null !== $this->tokenStorage->getToken()) {
return; return;
} }
@ -56,10 +62,10 @@ class AnonymousAuthenticationListener implements ListenerInterface
$token = $this->authenticationManager->authenticate($token); $token = $this->authenticationManager->authenticate($token);
} }
$this->context->setToken($token); $this->tokenStorage->setToken($token);
if (null !== $this->logger) { if (null !== $this->logger) {
$this->logger->info('Populated SecurityContext with an anonymous Token'); $this->logger->info('Populated TokenStorage with an anonymous Token');
} }
} catch (AuthenticationException $failed) { } catch (AuthenticationException $failed) {
if (null !== $this->logger) { if (null !== $this->logger) {

View File

@ -13,6 +13,7 @@ namespace Symfony\Component\Security\Http\Firewall;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface; use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent;
@ -26,20 +27,25 @@ use Symfony\Component\Security\Core\Exception\AuthenticationException;
*/ */
class BasicAuthenticationListener implements ListenerInterface class BasicAuthenticationListener implements ListenerInterface
{ {
private $securityContext; private $tokenStorage;
private $authenticationManager; private $authenticationManager;
private $providerKey; private $providerKey;
private $authenticationEntryPoint; private $authenticationEntryPoint;
private $logger; private $logger;
private $ignoreFailure; private $ignoreFailure;
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, $providerKey, AuthenticationEntryPointInterface $authenticationEntryPoint, LoggerInterface $logger = null) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, AuthenticationManagerInterface $authenticationManager, $providerKey, AuthenticationEntryPointInterface $authenticationEntryPoint, LoggerInterface $logger = null)
{ {
if (empty($providerKey)) { if (empty($providerKey)) {
throw new \InvalidArgumentException('$providerKey must not be empty.'); throw new \InvalidArgumentException('$providerKey must not be empty.');
} }
$this->securityContext = $securityContext; $this->tokenStorage = $tokenStorage;
$this->authenticationManager = $authenticationManager; $this->authenticationManager = $authenticationManager;
$this->providerKey = $providerKey; $this->providerKey = $providerKey;
$this->authenticationEntryPoint = $authenticationEntryPoint; $this->authenticationEntryPoint = $authenticationEntryPoint;
@ -60,7 +66,7 @@ class BasicAuthenticationListener implements ListenerInterface
return; return;
} }
if (null !== $token = $this->securityContext->getToken()) { if (null !== $token = $this->tokenStorage->getToken()) {
if ($token instanceof UsernamePasswordToken && $token->isAuthenticated() && $token->getUsername() === $username) { if ($token instanceof UsernamePasswordToken && $token->isAuthenticated() && $token->getUsername() === $username) {
return; return;
} }
@ -72,11 +78,11 @@ class BasicAuthenticationListener implements ListenerInterface
try { try {
$token = $this->authenticationManager->authenticate(new UsernamePasswordToken($username, $request->headers->get('PHP_AUTH_PW'), $this->providerKey)); $token = $this->authenticationManager->authenticate(new UsernamePasswordToken($username, $request->headers->get('PHP_AUTH_PW'), $this->providerKey));
$this->securityContext->setToken($token); $this->tokenStorage->setToken($token);
} catch (AuthenticationException $failed) { } catch (AuthenticationException $failed) {
$token = $this->securityContext->getToken(); $token = $this->tokenStorage->getToken();
if ($token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey()) { if ($token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey()) {
$this->securityContext->setToken(null); $this->tokenStorage->setToken(null);
} }
if (null !== $this->logger) { if (null !== $this->logger) {

View File

@ -16,6 +16,7 @@ use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken; use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
@ -32,14 +33,19 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
*/ */
class ContextListener implements ListenerInterface class ContextListener implements ListenerInterface
{ {
private $context; private $tokenStorage;
private $contextKey; private $contextKey;
private $logger; private $logger;
private $userProviders; private $userProviders;
private $dispatcher; private $dispatcher;
private $registered; private $registered;
public function __construct(SecurityContextInterface $context, array $userProviders, $contextKey, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, array $userProviders, $contextKey, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null)
{ {
if (empty($contextKey)) { if (empty($contextKey)) {
throw new \InvalidArgumentException('$contextKey must not be empty.'); throw new \InvalidArgumentException('$contextKey must not be empty.');
@ -51,7 +57,7 @@ class ContextListener implements ListenerInterface
} }
} }
$this->context = $context; $this->tokenStorage = $tokenStorage;
$this->userProviders = $userProviders; $this->userProviders = $userProviders;
$this->contextKey = $contextKey; $this->contextKey = $contextKey;
$this->logger = $logger; $this->logger = $logger;
@ -74,7 +80,7 @@ class ContextListener implements ListenerInterface
$session = $request->hasPreviousSession() ? $request->getSession() : null; $session = $request->hasPreviousSession() ? $request->getSession() : null;
if (null === $session || null === $token = $session->get('_security_'.$this->contextKey)) { if (null === $session || null === $token = $session->get('_security_'.$this->contextKey)) {
$this->context->setToken(null); $this->tokenStorage->setToken(null);
return; return;
} }
@ -95,7 +101,7 @@ class ContextListener implements ListenerInterface
$token = null; $token = null;
} }
$this->context->setToken($token); $this->tokenStorage->setToken($token);
} }
/** /**
@ -124,7 +130,7 @@ class ContextListener implements ListenerInterface
return; return;
} }
if ((null === $token = $this->context->getToken()) || ($token instanceof AnonymousToken)) { if ((null === $token = $this->tokenStorage->getToken()) || ($token instanceof AnonymousToken)) {
if ($request->hasPreviousSession()) { if ($request->hasPreviousSession()) {
$session->remove('_security_'.$this->contextKey); $session->remove('_security_'.$this->contextKey);
} }

View File

@ -17,6 +17,7 @@ use Symfony\Component\Security\Http\EntryPoint\DigestAuthenticationEntryPoint;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\BadCredentialsException; use Symfony\Component\Security\Core\Exception\BadCredentialsException;
use Symfony\Component\Security\Core\Exception\AuthenticationServiceException; use Symfony\Component\Security\Core\Exception\AuthenticationServiceException;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
@ -31,19 +32,24 @@ use Symfony\Component\Security\Core\Exception\AuthenticationException;
*/ */
class DigestAuthenticationListener implements ListenerInterface class DigestAuthenticationListener implements ListenerInterface
{ {
private $securityContext; private $tokenStorage;
private $provider; private $provider;
private $providerKey; private $providerKey;
private $authenticationEntryPoint; private $authenticationEntryPoint;
private $logger; private $logger;
public function __construct(SecurityContextInterface $securityContext, UserProviderInterface $provider, $providerKey, DigestAuthenticationEntryPoint $authenticationEntryPoint, LoggerInterface $logger = null) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, UserProviderInterface $provider, $providerKey, DigestAuthenticationEntryPoint $authenticationEntryPoint, LoggerInterface $logger = null)
{ {
if (empty($providerKey)) { if (empty($providerKey)) {
throw new \InvalidArgumentException('$providerKey must not be empty.'); throw new \InvalidArgumentException('$providerKey must not be empty.');
} }
$this->securityContext = $securityContext; $this->tokenStorage = $tokenStorage;
$this->provider = $provider; $this->provider = $provider;
$this->providerKey = $providerKey; $this->providerKey = $providerKey;
$this->authenticationEntryPoint = $authenticationEntryPoint; $this->authenticationEntryPoint = $authenticationEntryPoint;
@ -67,7 +73,7 @@ class DigestAuthenticationListener implements ListenerInterface
$digestAuth = new DigestData($header); $digestAuth = new DigestData($header);
if (null !== $token = $this->securityContext->getToken()) { if (null !== $token = $this->tokenStorage->getToken()) {
if ($token instanceof UsernamePasswordToken && $token->isAuthenticated() && $token->getUsername() === $digestAuth->getUsername()) { if ($token instanceof UsernamePasswordToken && $token->isAuthenticated() && $token->getUsername() === $digestAuth->getUsername()) {
return; return;
} }
@ -119,14 +125,14 @@ class DigestAuthenticationListener implements ListenerInterface
$this->logger->info(sprintf('Authentication success for user "%s" with response "%s"', $digestAuth->getUsername(), $digestAuth->getResponse())); $this->logger->info(sprintf('Authentication success for user "%s" with response "%s"', $digestAuth->getUsername(), $digestAuth->getResponse()));
} }
$this->securityContext->setToken(new UsernamePasswordToken($user, $user->getPassword(), $this->providerKey)); $this->tokenStorage->setToken(new UsernamePasswordToken($user, $user->getPassword(), $this->providerKey));
} }
private function fail(GetResponseEvent $event, Request $request, AuthenticationException $authException) private function fail(GetResponseEvent $event, Request $request, AuthenticationException $authException)
{ {
$token = $this->securityContext->getToken(); $token = $this->tokenStorage->getToken();
if ($token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey()) { if ($token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey()) {
$this->securityContext->setToken(null); $this->tokenStorage->setToken(null);
} }
if (null !== $this->logger) { if (null !== $this->logger) {

View File

@ -16,6 +16,7 @@ use Symfony\Component\Security\Http\Authorization\AccessDeniedHandlerInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface; use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
use Symfony\Component\Security\Core\Exception\AccountStatusException; use Symfony\Component\Security\Core\Exception\AccountStatusException;
use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\AuthenticationException;
@ -39,7 +40,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
*/ */
class ExceptionListener class ExceptionListener
{ {
private $context; private $tokenStorage;
private $providerKey; private $providerKey;
private $accessDeniedHandler; private $accessDeniedHandler;
private $authenticationEntryPoint; private $authenticationEntryPoint;
@ -48,9 +49,14 @@ class ExceptionListener
private $logger; private $logger;
private $httpUtils; private $httpUtils;
public function __construct(SecurityContextInterface $context, AuthenticationTrustResolverInterface $trustResolver, HttpUtils $httpUtils, $providerKey, AuthenticationEntryPointInterface $authenticationEntryPoint = null, $errorPage = null, AccessDeniedHandlerInterface $accessDeniedHandler = null, LoggerInterface $logger = null) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, AuthenticationTrustResolverInterface $trustResolver, HttpUtils $httpUtils, $providerKey, AuthenticationEntryPointInterface $authenticationEntryPoint = null, $errorPage = null, AccessDeniedHandlerInterface $accessDeniedHandler = null, LoggerInterface $logger = null)
{ {
$this->context = $context; $this->tokenStorage = $tokenStorage;
$this->accessDeniedHandler = $accessDeniedHandler; $this->accessDeniedHandler = $accessDeniedHandler;
$this->httpUtils = $httpUtils; $this->httpUtils = $httpUtils;
$this->providerKey = $providerKey; $this->providerKey = $providerKey;
@ -116,7 +122,7 @@ class ExceptionListener
{ {
$event->setException(new AccessDeniedHttpException($exception->getMessage(), $exception)); $event->setException(new AccessDeniedHttpException($exception->getMessage(), $exception));
$token = $this->context->getToken(); $token = $this->tokenStorage->getToken();
if (!$this->authenticationTrustResolver->isFullFledged($token)) { if (!$this->authenticationTrustResolver->isFullFledged($token)) {
if (null !== $this->logger) { if (null !== $this->logger) {
$this->logger->debug(sprintf('Access is denied (user is not fully authenticated) by "%s" at line %s; redirecting to authentication entry point', $exception->getFile(), $exception->getLine())); $this->logger->debug(sprintf('Access is denied (user is not fully authenticated) by "%s" at line %s; redirecting to authentication entry point', $exception->getFile(), $exception->getLine()));
@ -189,7 +195,7 @@ class ExceptionListener
if ($authException instanceof AccountStatusException) { if ($authException instanceof AccountStatusException) {
// remove the security token to prevent infinite redirect loops // remove the security token to prevent infinite redirect loops
$this->context->setToken(null); $this->tokenStorage->setToken(null);
} }
return $this->authenticationEntryPoint->start($request, $authException); return $this->authenticationEntryPoint->start($request, $authException);

View File

@ -16,6 +16,7 @@ use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\InvalidArgumentException; use Symfony\Component\Security\Core\Exception\InvalidArgumentException;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Exception\LogoutException; use Symfony\Component\Security\Core\Exception\LogoutException;
@ -32,7 +33,7 @@ use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
*/ */
class LogoutListener implements ListenerInterface class LogoutListener implements ListenerInterface
{ {
private $securityContext; private $tokenStorage;
private $options; private $options;
private $handlers; private $handlers;
private $successHandler; private $successHandler;
@ -42,13 +43,15 @@ class LogoutListener implements ListenerInterface
/** /**
* Constructor. * Constructor.
* *
* @param SecurityContextInterface $securityContext * @param SecurityContextInterface|TokenStorageInterface $tokenStorage
* @param HttpUtils $httpUtils An HttpUtilsInterface instance * @param HttpUtils $httpUtils An HttpUtilsInterface instance
* @param LogoutSuccessHandlerInterface $successHandler A LogoutSuccessHandlerInterface instance * @param LogoutSuccessHandlerInterface $successHandler A LogoutSuccessHandlerInterface instance
* @param array $options An array of options to process a logout attempt * @param array $options An array of options to process a logout attempt
* @param CsrfTokenManagerInterface $csrfTokenManager A CsrfTokenManagerInterface instance * @param CsrfTokenManagerInterface $csrfTokenManager A CsrfTokenManagerInterface instance
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/ */
public function __construct(SecurityContextInterface $securityContext, HttpUtils $httpUtils, LogoutSuccessHandlerInterface $successHandler, array $options = array(), $csrfTokenManager = null) public function __construct($tokenStorage, HttpUtils $httpUtils, LogoutSuccessHandlerInterface $successHandler, array $options = array(), $csrfTokenManager = null)
{ {
if ($csrfTokenManager instanceof CsrfProviderInterface) { if ($csrfTokenManager instanceof CsrfProviderInterface) {
$csrfTokenManager = new CsrfProviderAdapter($csrfTokenManager); $csrfTokenManager = new CsrfProviderAdapter($csrfTokenManager);
@ -56,7 +59,7 @@ class LogoutListener implements ListenerInterface
throw new InvalidArgumentException('The CSRF token manager should be an instance of CsrfProviderInterface or CsrfTokenManagerInterface.'); throw new InvalidArgumentException('The CSRF token manager should be an instance of CsrfProviderInterface or CsrfTokenManagerInterface.');
} }
$this->securityContext = $securityContext; $this->tokenStorage = $tokenStorage;
$this->httpUtils = $httpUtils; $this->httpUtils = $httpUtils;
$this->options = array_merge(array( $this->options = array_merge(array(
'csrf_parameter' => '_csrf_token', 'csrf_parameter' => '_csrf_token',
@ -111,13 +114,13 @@ class LogoutListener implements ListenerInterface
} }
// handle multiple logout attempts gracefully // handle multiple logout attempts gracefully
if ($token = $this->securityContext->getToken()) { if ($token = $this->tokenStorage->getToken()) {
foreach ($this->handlers as $handler) { foreach ($this->handlers as $handler) {
$handler->logout($request, $response, $token); $handler->logout($request, $response, $token);
} }
} }
$this->securityContext->setToken(null); $this->tokenStorage->setToken(null);
$event->setResponse($response); $event->setResponse($response);
} }

View File

@ -14,6 +14,7 @@ namespace Symfony\Component\Security\Http\Firewall;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Http\RememberMe\RememberMeServicesInterface; use Symfony\Component\Security\Http\RememberMe\RememberMeServicesInterface;
@ -28,7 +29,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
*/ */
class RememberMeListener implements ListenerInterface class RememberMeListener implements ListenerInterface
{ {
private $securityContext; private $tokenStorage;
private $rememberMeServices; private $rememberMeServices;
private $authenticationManager; private $authenticationManager;
private $logger; private $logger;
@ -38,16 +39,18 @@ class RememberMeListener implements ListenerInterface
/** /**
* Constructor. * Constructor.
* *
* @param SecurityContextInterface $securityContext * @param SecurityContextInterface|TokenStorageInterface $tokenStorage
* @param RememberMeServicesInterface $rememberMeServices * @param RememberMeServicesInterface $rememberMeServices
* @param AuthenticationManagerInterface $authenticationManager * @param AuthenticationManagerInterface $authenticationManager
* @param LoggerInterface $logger * @param LoggerInterface $logger
* @param EventDispatcherInterface $dispatcher * @param EventDispatcherInterface $dispatcher
* @param bool $catchExceptions * @param bool $catchExceptions
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/ */
public function __construct(SecurityContextInterface $securityContext, RememberMeServicesInterface $rememberMeServices, AuthenticationManagerInterface $authenticationManager, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, $catchExceptions = true) public function __construct($tokenStorage, RememberMeServicesInterface $rememberMeServices, AuthenticationManagerInterface $authenticationManager, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, $catchExceptions = true)
{ {
$this->securityContext = $securityContext; $this->tokenStorage = $tokenStorage;
$this->rememberMeServices = $rememberMeServices; $this->rememberMeServices = $rememberMeServices;
$this->authenticationManager = $authenticationManager; $this->authenticationManager = $authenticationManager;
$this->logger = $logger; $this->logger = $logger;
@ -62,7 +65,7 @@ class RememberMeListener implements ListenerInterface
*/ */
public function handle(GetResponseEvent $event) public function handle(GetResponseEvent $event)
{ {
if (null !== $this->securityContext->getToken()) { if (null !== $this->tokenStorage->getToken()) {
return; return;
} }
@ -73,7 +76,7 @@ class RememberMeListener implements ListenerInterface
try { try {
$token = $this->authenticationManager->authenticate($token); $token = $this->authenticationManager->authenticate($token);
$this->securityContext->setToken($token); $this->tokenStorage->setToken($token);
if (null !== $this->dispatcher) { if (null !== $this->dispatcher) {
$loginEvent = new InteractiveLoginEvent($request, $token); $loginEvent = new InteractiveLoginEvent($request, $token);
@ -81,12 +84,12 @@ class RememberMeListener implements ListenerInterface
} }
if (null !== $this->logger) { if (null !== $this->logger) {
$this->logger->debug('SecurityContext populated with remember-me token.'); $this->logger->debug('Token storage populated with remember-me token.');
} }
} catch (AuthenticationException $failed) { } catch (AuthenticationException $failed) {
if (null !== $this->logger) { if (null !== $this->logger) {
$this->logger->warning( $this->logger->warning(
'SecurityContext not populated with remember-me token as the' 'Token storage not populated with remember-me token as the'
.' AuthenticationManager rejected the AuthenticationToken returned' .' AuthenticationManager rejected the AuthenticationToken returned'
.' by the RememberMeServices: '.$failed->getMessage() .' by the RememberMeServices: '.$failed->getMessage()
); );

View File

@ -13,6 +13,7 @@ namespace Symfony\Component\Security\Http\Firewall;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\BadCredentialsException; use Symfony\Component\Security\Core\Exception\BadCredentialsException;
@ -28,9 +29,14 @@ class RemoteUserAuthenticationListener extends AbstractPreAuthenticatedListener
{ {
private $userKey; private $userKey;
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, $providerKey, $userKey = 'REMOTE_USER', LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, AuthenticationManagerInterface $authenticationManager, $providerKey, $userKey = 'REMOTE_USER', LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null)
{ {
parent::__construct($securityContext, $authenticationManager, $providerKey, $logger, $dispatcher); parent::__construct($tokenStorage, $authenticationManager, $providerKey, $logger, $dispatcher);
$this->userKey = $userKey; $this->userKey = $userKey;
} }

View File

@ -23,6 +23,7 @@ use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerI
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\SimpleFormAuthenticatorInterface; use Symfony\Component\Security\Core\Authentication\SimpleFormAuthenticatorInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Http\HttpUtils; use Symfony\Component\Security\Http\HttpUtils;
@ -40,24 +41,26 @@ class SimpleFormAuthenticationListener extends AbstractAuthenticationListener
/** /**
* Constructor. * Constructor.
* *
* @param SecurityContextInterface $securityContext A SecurityContext instance * @param SecurityContextInterface|TokenStorageInterface $tokenStorage A SecurityContext or TokenStorageInterface instance
* @param AuthenticationManagerInterface $authenticationManager An AuthenticationManagerInterface instance * @param AuthenticationManagerInterface $authenticationManager An AuthenticationManagerInterface instance
* @param SessionAuthenticationStrategyInterface $sessionStrategy * @param SessionAuthenticationStrategyInterface $sessionStrategy
* @param HttpUtils $httpUtils An HttpUtilsInterface instance * @param HttpUtils $httpUtils An HttpUtilsInterface instance
* @param string $providerKey * @param string $providerKey
* @param AuthenticationSuccessHandlerInterface $successHandler * @param AuthenticationSuccessHandlerInterface $successHandler
* @param AuthenticationFailureHandlerInterface $failureHandler * @param AuthenticationFailureHandlerInterface $failureHandler
* @param array $options An array of options for the processing of a * @param array $options An array of options for the processing of a
* successful, or failed authentication attempt * successful, or failed authentication attempt
* @param LoggerInterface $logger A LoggerInterface instance * @param LoggerInterface $logger A LoggerInterface instance
* @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance * @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance
* @param CsrfTokenManagerInterface $csrfTokenManager A CsrfTokenManagerInterface instance * @param CsrfTokenManagerInterface $csrfTokenManager A CsrfTokenManagerInterface instance
* @param SimpleFormAuthenticatorInterface $simpleAuthenticator A SimpleFormAuthenticatorInterface instance * @param SimpleFormAuthenticatorInterface $simpleAuthenticator A SimpleFormAuthenticatorInterface instance
* *
* @throws \InvalidArgumentException In case no simple authenticator is provided * @throws \InvalidArgumentException In case no simple authenticator is provided
* @throws InvalidArgumentException In case an invalid CSRF token manager is passed * @throws InvalidArgumentException In case an invalid CSRF token manager is passed
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/ */
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, $csrfTokenManager = null, SimpleFormAuthenticatorInterface $simpleAuthenticator = null) public function __construct($tokenStorage, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, $csrfTokenManager = null, SimpleFormAuthenticatorInterface $simpleAuthenticator = null)
{ {
if (!$simpleAuthenticator) { if (!$simpleAuthenticator) {
throw new \InvalidArgumentException('Missing simple authenticator'); throw new \InvalidArgumentException('Missing simple authenticator');
@ -79,7 +82,8 @@ class SimpleFormAuthenticationListener extends AbstractAuthenticationListener
'intention' => 'authenticate', 'intention' => 'authenticate',
'post_only' => true, 'post_only' => true,
), $options); ), $options);
parent::__construct($securityContext, $authenticationManager, $sessionStrategy, $httpUtils, $providerKey, $successHandler, $failureHandler, $options, $logger, $dispatcher);
parent::__construct($tokenStorage, $authenticationManager, $sessionStrategy, $httpUtils, $providerKey, $successHandler, $failureHandler, $options, $logger, $dispatcher);
} }
/** /**

View File

@ -18,6 +18,7 @@ use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Authentication\SimplePreAuthenticatorInterface; use Symfony\Component\Security\Core\Authentication\SimplePreAuthenticatorInterface;
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken; use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
@ -32,7 +33,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
*/ */
class SimplePreAuthenticationListener implements ListenerInterface class SimplePreAuthenticationListener implements ListenerInterface
{ {
private $securityContext; private $tokenStorage;
private $authenticationManager; private $authenticationManager;
private $providerKey; private $providerKey;
private $simpleAuthenticator; private $simpleAuthenticator;
@ -42,20 +43,22 @@ class SimplePreAuthenticationListener implements ListenerInterface
/** /**
* Constructor. * Constructor.
* *
* @param SecurityContextInterface $securityContext A SecurityContext instance * @param SecurityContextInterface|TokenStorageInterface $tokenStorage A SecurityContext or TokenStorageInterface instance
* @param AuthenticationManagerInterface $authenticationManager An AuthenticationManagerInterface instance * @param AuthenticationManagerInterface $authenticationManager An AuthenticationManagerInterface instance
* @param string $providerKey * @param string $providerKey
* @param SimplePreAuthenticatorInterface $simpleAuthenticator A SimplePreAuthenticatorInterface instance * @param SimplePreAuthenticatorInterface $simpleAuthenticator A SimplePreAuthenticatorInterface instance
* @param LoggerInterface $logger A LoggerInterface instance * @param LoggerInterface $logger A LoggerInterface instance
* @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance * @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/ */
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, $providerKey, SimplePreAuthenticatorInterface $simpleAuthenticator, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) public function __construct($tokenStorage, AuthenticationManagerInterface $authenticationManager, $providerKey, SimplePreAuthenticatorInterface $simpleAuthenticator, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null)
{ {
if (empty($providerKey)) { if (empty($providerKey)) {
throw new \InvalidArgumentException('$providerKey must not be empty.'); throw new \InvalidArgumentException('$providerKey must not be empty.');
} }
$this->securityContext = $securityContext; $this->tokenStorage = $tokenStorage;
$this->authenticationManager = $authenticationManager; $this->authenticationManager = $authenticationManager;
$this->providerKey = $providerKey; $this->providerKey = $providerKey;
$this->simpleAuthenticator = $simpleAuthenticator; $this->simpleAuthenticator = $simpleAuthenticator;
@ -76,7 +79,7 @@ class SimplePreAuthenticationListener implements ListenerInterface
$this->logger->info(sprintf('Attempting simple pre-authorization %s', $this->providerKey)); $this->logger->info(sprintf('Attempting simple pre-authorization %s', $this->providerKey));
} }
if (null !== $this->securityContext->getToken() && !$this->securityContext->getToken() instanceof AnonymousToken) { if (null !== $this->tokenStorage->getToken() && !$this->tokenStorage->getToken() instanceof AnonymousToken) {
return; return;
} }
@ -89,14 +92,14 @@ class SimplePreAuthenticationListener implements ListenerInterface
} }
$token = $this->authenticationManager->authenticate($token); $token = $this->authenticationManager->authenticate($token);
$this->securityContext->setToken($token); $this->tokenStorage->setToken($token);
if (null !== $this->dispatcher) { if (null !== $this->dispatcher) {
$loginEvent = new InteractiveLoginEvent($request, $token); $loginEvent = new InteractiveLoginEvent($request, $token);
$this->dispatcher->dispatch(SecurityEvents::INTERACTIVE_LOGIN, $loginEvent); $this->dispatcher->dispatch(SecurityEvents::INTERACTIVE_LOGIN, $loginEvent);
} }
} catch (AuthenticationException $e) { } catch (AuthenticationException $e) {
$this->securityContext->setToken(null); $this->tokenStorage->setToken(null);
if (null !== $this->logger) { if (null !== $this->logger) {
$this->logger->info(sprintf('Authentication request failed: %s', $e->getMessage())); $this->logger->info(sprintf('Authentication request failed: %s', $e->getMessage()));

View File

@ -23,6 +23,7 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Role\SwitchUserRole; use Symfony\Component\Security\Core\Role\SwitchUserRole;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException; use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Http\Event\SwitchUserEvent; use Symfony\Component\Security\Http\Event\SwitchUserEvent;
@ -37,7 +38,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
*/ */
class SwitchUserListener implements ListenerInterface class SwitchUserListener implements ListenerInterface
{ {
private $securityContext; private $tokenStorage;
private $provider; private $provider;
private $userChecker; private $userChecker;
private $providerKey; private $providerKey;
@ -48,15 +49,17 @@ class SwitchUserListener implements ListenerInterface
private $dispatcher; private $dispatcher;
/** /**
* Constructor. * @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/ */
public function __construct(SecurityContextInterface $securityContext, UserProviderInterface $provider, UserCheckerInterface $userChecker, $providerKey, AccessDecisionManagerInterface $accessDecisionManager, LoggerInterface $logger = null, $usernameParameter = '_switch_user', $role = 'ROLE_ALLOWED_TO_SWITCH', EventDispatcherInterface $dispatcher = null) public function __construct($tokenStorage, UserProviderInterface $provider, UserCheckerInterface $userChecker, $providerKey, AccessDecisionManagerInterface $accessDecisionManager, LoggerInterface $logger = null, $usernameParameter = '_switch_user', $role = 'ROLE_ALLOWED_TO_SWITCH', EventDispatcherInterface $dispatcher = null)
{ {
if (empty($providerKey)) { if (empty($providerKey)) {
throw new \InvalidArgumentException('$providerKey must not be empty.'); throw new \InvalidArgumentException('$providerKey must not be empty.');
} }
$this->securityContext = $securityContext; $this->tokenStorage = $tokenStorage;
$this->provider = $provider; $this->provider = $provider;
$this->userChecker = $userChecker; $this->userChecker = $userChecker;
$this->providerKey = $providerKey; $this->providerKey = $providerKey;
@ -83,10 +86,10 @@ class SwitchUserListener implements ListenerInterface
} }
if ('_exit' === $request->get($this->usernameParameter)) { if ('_exit' === $request->get($this->usernameParameter)) {
$this->securityContext->setToken($this->attemptExitUser($request)); $this->tokenStorage->setToken($this->attemptExitUser($request));
} else { } else {
try { try {
$this->securityContext->setToken($this->attemptSwitchUser($request)); $this->tokenStorage->setToken($this->attemptSwitchUser($request));
} catch (AuthenticationException $e) { } catch (AuthenticationException $e) {
throw new \LogicException(sprintf('Switch User failed: "%s"', $e->getMessage())); throw new \LogicException(sprintf('Switch User failed: "%s"', $e->getMessage()));
} }
@ -112,7 +115,7 @@ class SwitchUserListener implements ListenerInterface
*/ */
private function attemptSwitchUser(Request $request) private function attemptSwitchUser(Request $request)
{ {
$token = $this->securityContext->getToken(); $token = $this->tokenStorage->getToken();
$originalToken = $this->getOriginalToken($token); $originalToken = $this->getOriginalToken($token);
if (false !== $originalToken) { if (false !== $originalToken) {
@ -137,7 +140,7 @@ class SwitchUserListener implements ListenerInterface
$this->userChecker->checkPostAuth($user); $this->userChecker->checkPostAuth($user);
$roles = $user->getRoles(); $roles = $user->getRoles();
$roles[] = new SwitchUserRole('ROLE_PREVIOUS_ADMIN', $this->securityContext->getToken()); $roles[] = new SwitchUserRole('ROLE_PREVIOUS_ADMIN', $this->tokenStorage->getToken());
$token = new UsernamePasswordToken($user, $user->getPassword(), $this->providerKey, $roles); $token = new UsernamePasswordToken($user, $user->getPassword(), $this->providerKey, $roles);
@ -160,7 +163,7 @@ class SwitchUserListener implements ListenerInterface
*/ */
private function attemptExitUser(Request $request) private function attemptExitUser(Request $request)
{ {
if (false === $original = $this->getOriginalToken($this->securityContext->getToken())) { if (false === $original = $this->getOriginalToken($this->tokenStorage->getToken())) {
throw new AuthenticationCredentialsNotFoundException('Could not find original Token object.'); throw new AuthenticationCredentialsNotFoundException('Could not find original Token object.');
} }

View File

@ -22,6 +22,7 @@ use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerI
use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface; use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface;
use Symfony\Component\Security\Http\HttpUtils; use Symfony\Component\Security\Http\HttpUtils;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\Exception\InvalidArgumentException; use Symfony\Component\Security\Core\Exception\InvalidArgumentException;
use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException; use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException;
@ -40,9 +41,11 @@ class UsernamePasswordFormAuthenticationListener extends AbstractAuthenticationL
private $csrfTokenManager; private $csrfTokenManager;
/** /**
* {@inheritdoc} * @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/ */
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, $csrfTokenManager = null) public function __construct($tokenStorage, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, $csrfTokenManager = null)
{ {
if ($csrfTokenManager instanceof CsrfProviderInterface) { if ($csrfTokenManager instanceof CsrfProviderInterface) {
$csrfTokenManager = new CsrfProviderAdapter($csrfTokenManager); $csrfTokenManager = new CsrfProviderAdapter($csrfTokenManager);
@ -50,7 +53,7 @@ class UsernamePasswordFormAuthenticationListener extends AbstractAuthenticationL
throw new InvalidArgumentException('The CSRF token manager should be an instance of CsrfProviderInterface or CsrfTokenManagerInterface.'); throw new InvalidArgumentException('The CSRF token manager should be an instance of CsrfProviderInterface or CsrfTokenManagerInterface.');
} }
parent::__construct($securityContext, $authenticationManager, $sessionStrategy, $httpUtils, $providerKey, $successHandler, $failureHandler, array_merge(array( parent::__construct($tokenStorage, $authenticationManager, $sessionStrategy, $httpUtils, $providerKey, $successHandler, $failureHandler, array_merge(array(
'username_parameter' => '_username', 'username_parameter' => '_username',
'password_parameter' => '_password', 'password_parameter' => '_password',
'csrf_parameter' => '_csrf_token', 'csrf_parameter' => '_csrf_token',

View File

@ -13,6 +13,7 @@ namespace Symfony\Component\Security\Http\Firewall;
use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\BadCredentialsException; use Symfony\Component\Security\Core\Exception\BadCredentialsException;
@ -28,9 +29,14 @@ class X509AuthenticationListener extends AbstractPreAuthenticatedListener
private $userKey; private $userKey;
private $credentialKey; private $credentialKey;
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, $providerKey, $userKey = 'SSL_CLIENT_S_DN_Email', $credentialKey = 'SSL_CLIENT_S_DN', LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) /**
* @param SecurityContextInterface|TokenStorageInterface
*
* Passing a SecurityContextInterface as a first argument was deprecated in 2.7 and will be removed in 3.0
*/
public function __construct($tokenStorage, AuthenticationManagerInterface $authenticationManager, $providerKey, $userKey = 'SSL_CLIENT_S_DN_Email', $credentialKey = 'SSL_CLIENT_S_DN', LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null)
{ {
parent::__construct($securityContext, $authenticationManager, $providerKey, $logger, $dispatcher); parent::__construct($tokenStorage, $authenticationManager, $providerKey, $logger, $dispatcher);
$this->userKey = $userKey; $this->userKey = $userKey;
$this->credentialKey = $credentialKey; $this->credentialKey = $credentialKey;

View File

@ -26,13 +26,13 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
$token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'); $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
; ;
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('setToken') ->method('setToken')
->with($this->equalTo($token)) ->with($this->equalTo($token))
@ -47,7 +47,7 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array( $listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey', 'TheProviderKey',
)); ));
@ -72,13 +72,13 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
$request = new Request(array(), array(), array(), array(), array(), array()); $request = new Request(array(), array(), array(), array(), array(), array());
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
; ;
$context $tokenStorage
->expects($this->never()) ->expects($this->never())
->method('setToken') ->method('setToken')
; ;
@ -93,7 +93,7 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array( $listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey', 'TheProviderKey',
)); ));
@ -120,13 +120,13 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
$request = new Request(array(), array(), array(), array(), array(), array()); $request = new Request(array(), array(), array(), array(), array(), array());
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($token)) ->will($this->returnValue($token))
; ;
$context $tokenStorage
->expects($this->never()) ->expects($this->never())
->method('setToken') ->method('setToken')
; ;
@ -141,7 +141,7 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array( $listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey', 'TheProviderKey',
)); ));
@ -168,8 +168,8 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
$token = new PreAuthenticatedToken('TheUser', 'TheCredentials', 'TheProviderKey', array('ROLE_FOO')); $token = new PreAuthenticatedToken('TheUser', 'TheCredentials', 'TheProviderKey', array('ROLE_FOO'));
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($token)) ->will($this->returnValue($token))
@ -182,7 +182,7 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array( $listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey', 'TheProviderKey',
)); ));
@ -209,13 +209,13 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
$token = new PreAuthenticatedToken('AnotherUser', 'TheCredentials', 'TheProviderKey', array('ROLE_FOO')); $token = new PreAuthenticatedToken('AnotherUser', 'TheCredentials', 'TheProviderKey', array('ROLE_FOO'));
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($token)) ->will($this->returnValue($token))
; ;
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('setToken') ->method('setToken')
->with($this->equalTo(null)) ->with($this->equalTo(null))
@ -231,7 +231,7 @@ class AbstractPreAuthenticatedListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array( $listener = $this->getMockForAbstractClass('Symfony\Component\Security\Http\Firewall\AbstractPreAuthenticatedListener', array(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey', 'TheProviderKey',
)); ));

View File

@ -37,8 +37,8 @@ class AccessListenerTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue(true)) ->will($this->returnValue(true))
; ;
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($token)) ->will($this->returnValue($token))
@ -53,7 +53,7 @@ class AccessListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = new AccessListener( $listener = new AccessListener(
$context, $tokenStorage,
$accessDecisionManager, $accessDecisionManager,
$accessMap, $accessMap,
$this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface') $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface')
@ -103,13 +103,13 @@ class AccessListenerTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue($authenticatedToken)) ->will($this->returnValue($authenticatedToken))
; ;
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($notAuthenticatedToken)) ->will($this->returnValue($notAuthenticatedToken))
; ;
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('setToken') ->method('setToken')
->with($this->equalTo($authenticatedToken)) ->with($this->equalTo($authenticatedToken))
@ -124,7 +124,7 @@ class AccessListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = new AccessListener( $listener = new AccessListener(
$context, $tokenStorage,
$accessDecisionManager, $accessDecisionManager,
$accessMap, $accessMap,
$authManager $authManager
@ -158,15 +158,15 @@ class AccessListenerTest extends \PHPUnit_Framework_TestCase
->method('isAuthenticated') ->method('isAuthenticated')
; ;
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($token)) ->will($this->returnValue($token))
; ;
$listener = new AccessListener( $listener = new AccessListener(
$context, $tokenStorage,
$this->getMock('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface'), $this->getMock('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface'),
$accessMap, $accessMap,
$this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface') $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface')
@ -185,17 +185,17 @@ class AccessListenerTest extends \PHPUnit_Framework_TestCase
/** /**
* @expectedException \Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException * @expectedException \Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException
*/ */
public function testHandleWhenTheSecurityContextHasNoToken() public function testHandleWhenTheSecurityTokenStorageHasNoToken()
{ {
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
; ;
$listener = new AccessListener( $listener = new AccessListener(
$context, $tokenStorage,
$this->getMock('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface'), $this->getMock('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface'),
$this->getMock('Symfony\Component\Security\Http\AccessMapInterface'), $this->getMock('Symfony\Component\Security\Http\AccessMapInterface'),
$this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface') $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface')

View File

@ -16,15 +16,15 @@ use Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener;
class AnonymousAuthenticationListenerTest extends \PHPUnit_Framework_TestCase class AnonymousAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
{ {
public function testHandleWithContextHavingAToken() public function testHandleWithTokenStorageHavingAToken()
{ {
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'))) ->will($this->returnValue($this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')))
; ;
$context $tokenStorage
->expects($this->never()) ->expects($this->never())
->method('setToken') ->method('setToken')
; ;
@ -35,14 +35,14 @@ class AnonymousAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
->method('authenticate') ->method('authenticate')
; ;
$listener = new AnonymousAuthenticationListener($context, 'TheKey', null, $authenticationManager); $listener = new AnonymousAuthenticationListener($tokenStorage, 'TheKey', null, $authenticationManager);
$listener->handle($this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false)); $listener->handle($this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false));
} }
public function testHandleWithContextHavingNoToken() public function testHandleWithTokenStorageHavingNoToken()
{ {
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
@ -61,28 +61,28 @@ class AnonymousAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue($anonymousToken)) ->will($this->returnValue($anonymousToken))
; ;
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('setToken') ->method('setToken')
->with($anonymousToken) ->with($anonymousToken)
; ;
$listener = new AnonymousAuthenticationListener($context, 'TheKey', null, $authenticationManager); $listener = new AnonymousAuthenticationListener($tokenStorage, 'TheKey', null, $authenticationManager);
$listener->handle($this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false)); $listener->handle($this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false));
} }
public function testHandledEventIsLogged() public function testHandledEventIsLogged()
{ {
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$logger = $this->getMock('Psr\Log\LoggerInterface'); $logger = $this->getMock('Psr\Log\LoggerInterface');
$logger->expects($this->once()) $logger->expects($this->once())
->method('info') ->method('info')
->with('Populated SecurityContext with an anonymous Token') ->with('Populated TokenStorage with an anonymous Token')
; ;
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'); $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
$listener = new AnonymousAuthenticationListener($context, 'TheKey', $logger, $authenticationManager); $listener = new AnonymousAuthenticationListener($tokenStorage, 'TheKey', $logger, $authenticationManager);
$listener->handle($this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false)); $listener->handle($this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false));
} }
} }

View File

@ -29,13 +29,13 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
$token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'); $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
; ;
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('setToken') ->method('setToken')
->with($this->equalTo($token)) ->with($this->equalTo($token))
@ -50,7 +50,7 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = new BasicAuthenticationListener( $listener = new BasicAuthenticationListener(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey', 'TheProviderKey',
$this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface') $this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface')
@ -75,13 +75,13 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
$token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'); $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
; ;
$context $tokenStorage
->expects($this->never()) ->expects($this->never())
->method('setToken') ->method('setToken')
; ;
@ -97,7 +97,7 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = new BasicAuthenticationListener( $listener = new BasicAuthenticationListener(
$context, $tokenStorage,
new AuthenticationProviderManager(array($this->getMock('Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface'))), new AuthenticationProviderManager(array($this->getMock('Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface'))),
'TheProviderKey', 'TheProviderKey',
$authenticationEntryPoint $authenticationEntryPoint
@ -122,14 +122,14 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
{ {
$request = new Request(); $request = new Request();
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->never()) ->expects($this->never())
->method('getToken') ->method('getToken')
; ;
$listener = new BasicAuthenticationListener( $listener = new BasicAuthenticationListener(
$context, $tokenStorage,
$this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'), $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'),
'TheProviderKey', 'TheProviderKey',
$this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface') $this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface')
@ -151,8 +151,8 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
$token = new UsernamePasswordToken('TheUsername', 'ThePassword', 'TheProviderKey', array('ROLE_FOO')); $token = new UsernamePasswordToken('TheUsername', 'ThePassword', 'TheProviderKey', array('ROLE_FOO'));
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($token)) ->will($this->returnValue($token))
@ -165,7 +165,7 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = new BasicAuthenticationListener( $listener = new BasicAuthenticationListener(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey', 'TheProviderKey',
$this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface') $this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface')
@ -188,7 +188,7 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
public function testItRequiresProviderKey() public function testItRequiresProviderKey()
{ {
new BasicAuthenticationListener( new BasicAuthenticationListener(
$this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'), $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface'),
$this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'), $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'),
'', '',
$this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface') $this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface')
@ -204,13 +204,13 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
$token = new PreAuthenticatedToken('TheUser', 'TheCredentials', 'TheProviderKey', array('ROLE_FOO')); $token = new PreAuthenticatedToken('TheUser', 'TheCredentials', 'TheProviderKey', array('ROLE_FOO'));
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context $tokenStorage
->expects($this->any()) ->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($token)) ->will($this->returnValue($token))
; ;
$context $tokenStorage
->expects($this->never()) ->expects($this->never())
->method('setToken') ->method('setToken')
; ;
@ -226,7 +226,7 @@ class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
; ;
$listener = new BasicAuthenticationListener( $listener = new BasicAuthenticationListener(
$context, $tokenStorage,
new AuthenticationProviderManager(array($this->getMock('Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface'))), new AuthenticationProviderManager(array($this->getMock('Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface'))),
'TheProviderKey', 'TheProviderKey',
$authenticationEntryPoint $authenticationEntryPoint

View File

@ -20,24 +20,10 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\Security\Http\Firewall\ContextListener; use Symfony\Component\Security\Http\Firewall\ContextListener;
class ContextListenerTest extends \PHPUnit_Framework_TestCase class ContextListenerTest extends \PHPUnit_Framework_TestCase
{ {
protected function setUp()
{
$this->securityContext = new SecurityContext(
new TokenStorage(),
$this->getMock('Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface')
);
}
protected function tearDown()
{
unset($this->securityContext);
}
/** /**
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
* @expectedExceptionMessage $contextKey must not be empty * @expectedExceptionMessage $contextKey must not be empty
@ -45,7 +31,7 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
public function testItRequiresContextKey() public function testItRequiresContextKey()
{ {
new ContextListener( new ContextListener(
$this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'), $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface'),
array(), array(),
'' ''
); );
@ -58,7 +44,7 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
public function testUserProvidersNeedToImplementAnInterface() public function testUserProvidersNeedToImplementAnInterface()
{ {
new ContextListener( new ContextListener(
$this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'), $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface'),
array(new \stdClass()), array(new \stdClass()),
'key123' 'key123'
); );
@ -100,7 +86,8 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
public function testOnKernelResponseWithoutSession() public function testOnKernelResponseWithoutSession()
{ {
$this->securityContext->setToken(new UsernamePasswordToken('test1', 'pass1', 'phpunit')); $tokenStorage = new TokenStorage();
$tokenStorage->setToken(new UsernamePasswordToken('test1', 'pass1', 'phpunit'));
$request = new Request(); $request = new Request();
$session = new Session(new MockArraySessionStorage()); $session = new Session(new MockArraySessionStorage());
$request->setSession($session); $request->setSession($session);
@ -112,7 +99,7 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
new Response() new Response()
); );
$listener = new ContextListener($this->securityContext, array(), 'session'); $listener = new ContextListener($tokenStorage, array(), 'session');
$listener->onKernelResponse($event); $listener->onKernelResponse($event);
$this->assertTrue($session->isStarted()); $this->assertTrue($session->isStarted());
@ -131,7 +118,7 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
new Response() new Response()
); );
$listener = new ContextListener($this->securityContext, array(), 'session'); $listener = new ContextListener(new TokenStorage(), array(), 'session');
$listener->onKernelResponse($event); $listener->onKernelResponse($event);
$this->assertFalse($session->isStarted()); $this->assertFalse($session->isStarted());
@ -142,7 +129,7 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
*/ */
public function testInvalidTokenInSession($token) public function testInvalidTokenInSession($token)
{ {
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent')
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
@ -162,11 +149,11 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
->method('get') ->method('get')
->with('_security_key123') ->with('_security_key123')
->will($this->returnValue($token)); ->will($this->returnValue($token));
$context->expects($this->once()) $tokenStorage->expects($this->once())
->method('setToken') ->method('setToken')
->with(null); ->with(null);
$listener = new ContextListener($context, array(), 'key123'); $listener = new ContextListener($tokenStorage, array(), 'key123');
$listener->handle($event); $listener->handle($event);
} }
@ -181,13 +168,13 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
public function testHandleAddsKernelResponseListener() public function testHandleAddsKernelResponseListener()
{ {
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$dispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface'); $dispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
$event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent')
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
$listener = new ContextListener($context, array(), 'key123', null, $dispatcher); $listener = new ContextListener($tokenStorage, array(), 'key123', null, $dispatcher);
$event->expects($this->any()) $event->expects($this->any())
->method('isMasterRequest') ->method('isMasterRequest')
@ -213,10 +200,10 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
->getMock(); ->getMock();
$event->expects($this->any())->method('getRequest')->will($this->returnValue($request)); $event->expects($this->any())->method('getRequest')->will($this->returnValue($request));
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context->expects($this->once())->method('setToken')->with(null); $tokenStorage->expects($this->once())->method('setToken')->with(null);
$listener = new ContextListener($context, array(), 'key123'); $listener = new ContextListener($tokenStorage, array(), 'key123');
$listener->handle($event); $listener->handle($event);
} }
@ -228,7 +215,8 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
$session->set('_security_session', $original); $session->set('_security_session', $original);
} }
$this->securityContext->setToken($newToken); $tokenStorage = new TokenStorage();
$tokenStorage->setToken($newToken);
$request = new Request(); $request = new Request();
$request->setSession($session); $request->setSession($session);
@ -241,7 +229,7 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
new Response() new Response()
); );
$listener = new ContextListener($this->securityContext, array(), 'session'); $listener = new ContextListener($tokenStorage, array(), 'session');
$listener->onKernelResponse($event); $listener->onKernelResponse($event);
return $session; return $session;

View File

@ -16,9 +16,9 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException; use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Http\Authorization\AccessDeniedHandlerInterface; use Symfony\Component\Security\Http\Authorization\AccessDeniedHandlerInterface;
use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface; use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
use Symfony\Component\Security\Http\Firewall\ExceptionListener; use Symfony\Component\Security\Http\Firewall\ExceptionListener;
@ -123,10 +123,10 @@ class ExceptionListenerTest extends \PHPUnit_Framework_TestCase
{ {
$event = $this->createEvent($exception); $event = $this->createEvent($exception);
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$context->expects($this->once())->method('getToken')->will($this->returnValue($this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'))); $tokenStorage->expects($this->once())->method('getToken')->will($this->returnValue($this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')));
$listener = $this->createExceptionListener($context, $this->createTrustResolver(false), null, $this->createEntryPoint()); $listener = $this->createExceptionListener($tokenStorage, $this->createTrustResolver(false), null, $this->createEntryPoint());
$listener->onKernelException($event); $listener->onKernelException($event);
$this->assertEquals('OK', $event->getResponse()->getContent()); $this->assertEquals('OK', $event->getResponse()->getContent());
@ -169,10 +169,10 @@ class ExceptionListenerTest extends \PHPUnit_Framework_TestCase
return new GetResponseForExceptionEvent($kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, $exception); return new GetResponseForExceptionEvent($kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, $exception);
} }
private function createExceptionListener(SecurityContextInterface $context = null, AuthenticationTrustResolverInterface $trustResolver = null, HttpUtils $httpUtils = null, AuthenticationEntryPointInterface $authenticationEntryPoint = null, $errorPage = null, AccessDeniedHandlerInterface $accessDeniedHandler = null) private function createExceptionListener(TokenStorageInterface $tokenStorage = null, AuthenticationTrustResolverInterface $trustResolver = null, HttpUtils $httpUtils = null, AuthenticationEntryPointInterface $authenticationEntryPoint = null, $errorPage = null, AccessDeniedHandlerInterface $accessDeniedHandler = null)
{ {
return new ExceptionListener( return new ExceptionListener(
$context ? $context : $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'), $tokenStorage ? $tokenStorage : $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface'),
$trustResolver ? $trustResolver : $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface'), $trustResolver ? $trustResolver : $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface'),
$httpUtils ? $httpUtils : $this->getMock('Symfony\Component\Security\Http\HttpUtils'), $httpUtils ? $httpUtils : $this->getMock('Symfony\Component\Security\Http\HttpUtils'),
'key', 'key',

View File

@ -19,7 +19,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
{ {
public function testHandleUnmatchedPath() public function testHandleUnmatchedPath()
{ {
list($listener, $context, $httpUtils, $options) = $this->getListener(); list($listener, $tokenStorage, $httpUtils, $options) = $this->getListener();
list($event, $request) = $this->getGetResponseEvent(); list($event, $request) = $this->getGetResponseEvent();
@ -39,7 +39,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
$successHandler = $this->getSuccessHandler(); $successHandler = $this->getSuccessHandler();
$tokenManager = $this->getTokenManager(); $tokenManager = $this->getTokenManager();
list($listener, $context, $httpUtils, $options) = $this->getListener($successHandler, $tokenManager); list($listener, $tokenStorage, $httpUtils, $options) = $this->getListener($successHandler, $tokenManager);
list($event, $request) = $this->getGetResponseEvent(); list($event, $request) = $this->getGetResponseEvent();
@ -59,7 +59,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
->with($request) ->with($request)
->will($this->returnValue($response = new Response())); ->will($this->returnValue($response = new Response()));
$context->expects($this->once()) $tokenStorage->expects($this->once())
->method('getToken') ->method('getToken')
->will($this->returnValue($token = $this->getToken())); ->will($this->returnValue($token = $this->getToken()));
@ -68,7 +68,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
->method('logout') ->method('logout')
->with($request, $response, $token); ->with($request, $response, $token);
$context->expects($this->once()) $tokenStorage->expects($this->once())
->method('setToken') ->method('setToken')
->with(null); ->with(null);
@ -85,7 +85,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
{ {
$successHandler = $this->getSuccessHandler(); $successHandler = $this->getSuccessHandler();
list($listener, $context, $httpUtils, $options) = $this->getListener($successHandler); list($listener, $tokenStorage, $httpUtils, $options) = $this->getListener($successHandler);
list($event, $request) = $this->getGetResponseEvent(); list($event, $request) = $this->getGetResponseEvent();
@ -99,7 +99,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
->with($request) ->with($request)
->will($this->returnValue($response = new Response())); ->will($this->returnValue($response = new Response()));
$context->expects($this->once()) $tokenStorage->expects($this->once())
->method('getToken') ->method('getToken')
->will($this->returnValue($token = $this->getToken())); ->will($this->returnValue($token = $this->getToken()));
@ -108,7 +108,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
->method('logout') ->method('logout')
->with($request, $response, $token); ->with($request, $response, $token);
$context->expects($this->once()) $tokenStorage->expects($this->once())
->method('setToken') ->method('setToken')
->with(null); ->with(null);
@ -128,7 +128,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
{ {
$successHandler = $this->getSuccessHandler(); $successHandler = $this->getSuccessHandler();
list($listener, $context, $httpUtils, $options) = $this->getListener($successHandler); list($listener, $tokenStorage, $httpUtils, $options) = $this->getListener($successHandler);
list($event, $request) = $this->getGetResponseEvent(); list($event, $request) = $this->getGetResponseEvent();
@ -152,7 +152,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
{ {
$tokenManager = $this->getTokenManager(); $tokenManager = $this->getTokenManager();
list($listener, $context, $httpUtils, $options) = $this->getListener(null, $tokenManager); list($listener, $tokenStorage, $httpUtils, $options) = $this->getListener(null, $tokenManager);
list($event, $request) = $this->getGetResponseEvent(); list($event, $request) = $this->getGetResponseEvent();
@ -175,11 +175,9 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
return $this->getMock('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface'); return $this->getMock('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface');
} }
private function getContext() private function getTokenStorage()
{ {
return $this->getMockBuilder('Symfony\Component\Security\Core\SecurityContext') return $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
->disableOriginalConstructor()
->getMock();
} }
private function getGetResponseEvent() private function getGetResponseEvent()
@ -210,7 +208,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
private function getListener($successHandler = null, $tokenManager = null) private function getListener($successHandler = null, $tokenManager = null)
{ {
$listener = new LogoutListener( $listener = new LogoutListener(
$context = $this->getContext(), $tokenStorage = $this->getTokenStorage(),
$httpUtils = $this->getHttpUtils(), $httpUtils = $this->getHttpUtils(),
$successHandler ?: $this->getSuccessHandler(), $successHandler ?: $this->getSuccessHandler(),
$options = array( $options = array(
@ -222,7 +220,7 @@ class LogoutListenerTest extends \PHPUnit_Framework_TestCase
$tokenManager $tokenManager
); );
return array($listener, $context, $httpUtils, $options); return array($listener, $tokenStorage, $httpUtils, $options);
} }
private function getSuccessHandler() private function getSuccessHandler()

View File

@ -18,17 +18,17 @@ use Symfony\Component\Security\Http\SecurityEvents;
class RememberMeListenerTest extends \PHPUnit_Framework_TestCase class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
{ {
public function testOnCoreSecurityDoesNotTryToPopulateNonEmptySecurityContext() public function testOnCoreSecurityDoesNotTryToPopulateNonEmptyTokenStorage()
{ {
list($listener, $context, , , ,) = $this->getListener(); list($listener, $tokenStorage, , , ,) = $this->getListener();
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('getToken') ->method('getToken')
->will($this->returnValue($this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'))) ->will($this->returnValue($this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')))
; ;
$context $tokenStorage
->expects($this->never()) ->expects($this->never())
->method('setToken') ->method('setToken')
; ;
@ -38,9 +38,9 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
public function testOnCoreSecurityDoesNothingWhenNoCookieIsSet() public function testOnCoreSecurityDoesNothingWhenNoCookieIsSet()
{ {
list($listener, $context, $service, ,) = $this->getListener(); list($listener, $tokenStorage, $service, ,) = $this->getListener();
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
@ -64,9 +64,9 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
public function testOnCoreSecurityIgnoresAuthenticationExceptionThrownByAuthenticationManagerImplementation() public function testOnCoreSecurityIgnoresAuthenticationExceptionThrownByAuthenticationManagerImplementation()
{ {
list($listener, $context, $service, $manager,) = $this->getListener(); list($listener, $tokenStorage, $service, $manager,) = $this->getListener();
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
@ -106,9 +106,9 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
*/ */
public function testOnCoreSecurityIgnoresAuthenticationOptionallyRethrowsExceptionThrownAuthenticationManagerImplementation() public function testOnCoreSecurityIgnoresAuthenticationOptionallyRethrowsExceptionThrownAuthenticationManagerImplementation()
{ {
list($listener, $context, $service, $manager,) = $this->getListener(false, false); list($listener, $tokenStorage, $service, $manager,) = $this->getListener(false, false);
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
@ -144,9 +144,9 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
public function testOnCoreSecurity() public function testOnCoreSecurity()
{ {
list($listener, $context, $service, $manager,) = $this->getListener(); list($listener, $tokenStorage, $service, $manager,) = $this->getListener();
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
@ -159,7 +159,7 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue($token)) ->will($this->returnValue($token))
; ;
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('setToken') ->method('setToken')
->with($this->equalTo($token)) ->with($this->equalTo($token))
@ -183,9 +183,9 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
public function testOnCoreSecurityInteractiveLoginEventIsDispatchedIfDispatcherIsPresent() public function testOnCoreSecurityInteractiveLoginEventIsDispatchedIfDispatcherIsPresent()
{ {
list($listener, $context, $service, $manager, , $dispatcher) = $this->getListener(true); list($listener, $tokenStorage, $service, $manager, , $dispatcher) = $this->getListener(true);
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('getToken') ->method('getToken')
->will($this->returnValue(null)) ->will($this->returnValue(null))
@ -198,7 +198,7 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue($token)) ->will($this->returnValue($token))
; ;
$context $tokenStorage
->expects($this->once()) ->expects($this->once())
->method('setToken') ->method('setToken')
->with($this->equalTo($token)) ->with($this->equalTo($token))
@ -243,7 +243,7 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
protected function getListener($withDispatcher = false, $catchExceptions = true) protected function getListener($withDispatcher = false, $catchExceptions = true)
{ {
$listener = new RememberMeListener( $listener = new RememberMeListener(
$context = $this->getContext(), $tokenStorage = $this->getTokenStorage(),
$service = $this->getService(), $service = $this->getService(),
$manager = $this->getManager(), $manager = $this->getManager(),
$logger = $this->getLogger(), $logger = $this->getLogger(),
@ -251,7 +251,7 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
$catchExceptions $catchExceptions
); );
return array($listener, $context, $service, $manager, $logger, $dispatcher); return array($listener, $tokenStorage, $service, $manager, $logger, $dispatcher);
} }
protected function getLogger() protected function getLogger()
@ -269,9 +269,9 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
return $this->getMock('Symfony\Component\Security\Http\RememberMe\RememberMeServicesInterface'); return $this->getMock('Symfony\Component\Security\Http\RememberMe\RememberMeServicesInterface');
} }
protected function getContext() protected function getTokenStorage()
{ {
return $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); return $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
} }
protected function getDispatcher() protected function getDispatcher()

View File

@ -24,12 +24,12 @@ class RemoteUserAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
$request = new Request(array(), array(), array(), array(), array(), $serverVars); $request = new Request(array(), array(), array(), array(), array(), $serverVars);
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'); $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
$listener = new RemoteUserAuthenticationListener( $listener = new RemoteUserAuthenticationListener(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey' 'TheProviderKey'
); );
@ -48,12 +48,12 @@ class RemoteUserAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
{ {
$request = new Request(array(), array(), array(), array(), array(), array()); $request = new Request(array(), array(), array(), array(), array(), array());
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'); $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
$listener = new RemoteUserAuthenticationListener( $listener = new RemoteUserAuthenticationListener(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey' 'TheProviderKey'
); );
@ -71,12 +71,12 @@ class RemoteUserAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
$request = new Request(array(), array(), array(), array(), array(), array( $request = new Request(array(), array(), array(), array(), array(), array(
'TheUserKey' => 'TheUser', 'TheUserKey' => 'TheUser',
)); ));
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'); $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
$listener = new RemoteUserAuthenticationListener( $listener = new RemoteUserAuthenticationListener(
$context, $tokenStorage,
$authenticationManager, $authenticationManager,
'TheProviderKey', 'TheProviderKey',
'TheUserKey' 'TheUserKey'

View File

@ -24,12 +24,12 @@ class SimplePreAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
private $event; private $event;
private $logger; private $logger;
private $request; private $request;
private $securityContext; private $tokenStorage;
private $token; private $token;
public function testHandle() public function testHandle()
{ {
$this->securityContext $this->tokenStorage
->expects($this->once()) ->expects($this->once())
->method('setToken') ->method('setToken')
->with($this->equalTo($this->token)) ->with($this->equalTo($this->token))
@ -58,7 +58,7 @@ class SimplePreAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
->with($this->equalTo(SecurityEvents::INTERACTIVE_LOGIN), $this->equalTo($loginEvent)) ->with($this->equalTo(SecurityEvents::INTERACTIVE_LOGIN), $this->equalTo($loginEvent))
; ;
$listener = new SimplePreAuthenticationListener($this->securityContext, $this->authenticationManager, 'secured_area', $simpleAuthenticator, $this->logger, $this->dispatcher); $listener = new SimplePreAuthenticationListener($this->tokenStorage, $this->authenticationManager, 'secured_area', $simpleAuthenticator, $this->logger, $this->dispatcher);
$listener->handle($this->event); $listener->handle($this->event);
} }
@ -74,7 +74,7 @@ class SimplePreAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
->will($this->throwException($exception)) ->will($this->throwException($exception))
; ;
$this->securityContext->expects($this->once()) $this->tokenStorage->expects($this->once())
->method('setToken') ->method('setToken')
->with($this->equalTo(null)) ->with($this->equalTo(null))
; ;
@ -87,7 +87,7 @@ class SimplePreAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue($this->token)) ->will($this->returnValue($this->token))
; ;
$listener = new SimplePreAuthenticationListener($this->securityContext, $this->authenticationManager, 'secured_area', $simpleAuthenticator, $this->logger, $this->dispatcher); $listener = new SimplePreAuthenticationListener($this->tokenStorage, $this->authenticationManager, 'secured_area', $simpleAuthenticator, $this->logger, $this->dispatcher);
$listener->handle($this->event); $listener->handle($this->event);
} }
@ -111,12 +111,7 @@ class SimplePreAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
; ;
$this->logger = $this->getMock('Psr\Log\LoggerInterface'); $this->logger = $this->getMock('Psr\Log\LoggerInterface');
$this->tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$this->securityContext = $this->getMockBuilder('Symfony\Component\Security\Core\SecurityContext')
->disableOriginalConstructor()
->getMock()
;
$this->token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'); $this->token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
} }
@ -127,7 +122,7 @@ class SimplePreAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
$this->event = null; $this->event = null;
$this->logger = null; $this->logger = null;
$this->request = null; $this->request = null;
$this->securityContext = null; $this->tokenStorage = null;
$this->token = null; $this->token = null;
} }
} }

View File

@ -15,7 +15,7 @@ use Symfony\Component\Security\Http\Firewall\SwitchUserListener;
class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
{ {
private $securityContext; private $tokenStorage;
private $userProvider; private $userProvider;
@ -29,7 +29,7 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
protected function setUp() protected function setUp()
{ {
$this->securityContext = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $this->tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$this->userProvider = $this->getMock('Symfony\Component\Security\Core\User\UserProviderInterface'); $this->userProvider = $this->getMock('Symfony\Component\Security\Core\User\UserProviderInterface');
$this->userChecker = $this->getMock('Symfony\Component\Security\Core\User\UserCheckerInterface'); $this->userChecker = $this->getMock('Symfony\Component\Security\Core\User\UserCheckerInterface');
$this->accessDecisionManager = $this->getMock('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface'); $this->accessDecisionManager = $this->getMock('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface');
@ -45,7 +45,7 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
*/ */
public function testProviderKeyIsRequired() public function testProviderKeyIsRequired()
{ {
new SwitchUserListener($this->securityContext, $this->userProvider, $this->userChecker, '', $this->accessDecisionManager); new SwitchUserListener($this->tokenStorage, $this->userProvider, $this->userChecker, '', $this->accessDecisionManager);
} }
public function testEventIsIgnoredIfUsernameIsNotPassedWithTheRequest() public function testEventIsIgnoredIfUsernameIsNotPassedWithTheRequest()
@ -53,9 +53,9 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
$this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue(null)); $this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue(null));
$this->event->expects($this->never())->method('setResponse'); $this->event->expects($this->never())->method('setResponse');
$this->securityContext->expects($this->never())->method('setToken'); $this->tokenStorage->expects($this->never())->method('setToken');
$listener = new SwitchUserListener($this->securityContext, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager); $listener = new SwitchUserListener($this->tokenStorage, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager);
$listener->handle($this->event); $listener->handle($this->event);
} }
@ -66,10 +66,10 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
{ {
$token = $this->getToken(array($this->getMock('Symfony\Component\Security\Core\Role\RoleInterface'))); $token = $this->getToken(array($this->getMock('Symfony\Component\Security\Core\Role\RoleInterface')));
$this->securityContext->expects($this->any())->method('getToken')->will($this->returnValue($token)); $this->tokenStorage->expects($this->any())->method('getToken')->will($this->returnValue($token));
$this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue('_exit')); $this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue('_exit'));
$listener = new SwitchUserListener($this->securityContext, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager); $listener = new SwitchUserListener($this->tokenStorage, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager);
$listener->handle($this->event); $listener->handle($this->event);
} }
@ -81,7 +81,7 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
->getMock(); ->getMock();
$role->expects($this->any())->method('getSource')->will($this->returnValue($originalToken)); $role->expects($this->any())->method('getSource')->will($this->returnValue($originalToken));
$this->securityContext->expects($this->any()) $this->tokenStorage->expects($this->any())
->method('getToken') ->method('getToken')
->will($this->returnValue($this->getToken(array($role)))); ->will($this->returnValue($this->getToken(array($role))));
@ -91,12 +91,12 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
$this->request->query->expects($this->any())->method('all')->will($this->returnValue(array())); $this->request->query->expects($this->any())->method('all')->will($this->returnValue(array()));
$this->request->server->expects($this->once())->method('set')->with('QUERY_STRING', ''); $this->request->server->expects($this->once())->method('set')->with('QUERY_STRING', '');
$this->securityContext->expects($this->once()) $this->tokenStorage->expects($this->once())
->method('setToken')->with($originalToken); ->method('setToken')->with($originalToken);
$this->event->expects($this->once()) $this->event->expects($this->once())
->method('setResponse')->with($this->isInstanceOf('Symfony\Component\HttpFoundation\RedirectResponse')); ->method('setResponse')->with($this->isInstanceOf('Symfony\Component\HttpFoundation\RedirectResponse'));
$listener = new SwitchUserListener($this->securityContext, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager); $listener = new SwitchUserListener($this->tokenStorage, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager);
$listener->handle($this->event); $listener->handle($this->event);
} }
@ -107,14 +107,14 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
{ {
$token = $this->getToken(array($this->getMock('Symfony\Component\Security\Core\Role\RoleInterface'))); $token = $this->getToken(array($this->getMock('Symfony\Component\Security\Core\Role\RoleInterface')));
$this->securityContext->expects($this->any())->method('getToken')->will($this->returnValue($token)); $this->tokenStorage->expects($this->any())->method('getToken')->will($this->returnValue($token));
$this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue('kuba')); $this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue('kuba'));
$this->accessDecisionManager->expects($this->once()) $this->accessDecisionManager->expects($this->once())
->method('decide')->with($token, array('ROLE_ALLOWED_TO_SWITCH')) ->method('decide')->with($token, array('ROLE_ALLOWED_TO_SWITCH'))
->will($this->returnValue(false)); ->will($this->returnValue(false));
$listener = new SwitchUserListener($this->securityContext, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager); $listener = new SwitchUserListener($this->tokenStorage, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager);
$listener->handle($this->event); $listener->handle($this->event);
} }
@ -124,7 +124,7 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
$user = $this->getMock('Symfony\Component\Security\Core\User\UserInterface'); $user = $this->getMock('Symfony\Component\Security\Core\User\UserInterface');
$user->expects($this->any())->method('getRoles')->will($this->returnValue(array())); $user->expects($this->any())->method('getRoles')->will($this->returnValue(array()));
$this->securityContext->expects($this->any())->method('getToken')->will($this->returnValue($token)); $this->tokenStorage->expects($this->any())->method('getToken')->will($this->returnValue($token));
$this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue('kuba')); $this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue('kuba'));
$this->request->query->expects($this->once())->method('remove', '_switch_user'); $this->request->query->expects($this->once())->method('remove', '_switch_user');
$this->request->query->expects($this->any())->method('all')->will($this->returnValue(array())); $this->request->query->expects($this->any())->method('all')->will($this->returnValue(array()));
@ -141,10 +141,10 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue($user)); ->will($this->returnValue($user));
$this->userChecker->expects($this->once()) $this->userChecker->expects($this->once())
->method('checkPostAuth')->with($user); ->method('checkPostAuth')->with($user);
$this->securityContext->expects($this->once()) $this->tokenStorage->expects($this->once())
->method('setToken')->with($this->isInstanceOf('Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken')); ->method('setToken')->with($this->isInstanceOf('Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken'));
$listener = new SwitchUserListener($this->securityContext, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager); $listener = new SwitchUserListener($this->tokenStorage, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager);
$listener->handle($this->event); $listener->handle($this->event);
} }
@ -154,7 +154,7 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
$user = $this->getMock('Symfony\Component\Security\Core\User\UserInterface'); $user = $this->getMock('Symfony\Component\Security\Core\User\UserInterface');
$user->expects($this->any())->method('getRoles')->will($this->returnValue(array())); $user->expects($this->any())->method('getRoles')->will($this->returnValue(array()));
$this->securityContext->expects($this->any())->method('getToken')->will($this->returnValue($token)); $this->tokenStorage->expects($this->any())->method('getToken')->will($this->returnValue($token));
$this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue('kuba')); $this->request->expects($this->any())->method('get')->with('_switch_user')->will($this->returnValue('kuba'));
$this->request->query->expects($this->once())->method('remove', '_switch_user'); $this->request->query->expects($this->once())->method('remove', '_switch_user');
$this->request->query->expects($this->any())->method('all')->will($this->returnValue(array('page' => 3, 'section' => 2))); $this->request->query->expects($this->any())->method('all')->will($this->returnValue(array('page' => 3, 'section' => 2)));
@ -170,10 +170,10 @@ class SwitchUserListenerTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue($user)); ->will($this->returnValue($user));
$this->userChecker->expects($this->once()) $this->userChecker->expects($this->once())
->method('checkPostAuth')->with($user); ->method('checkPostAuth')->with($user);
$this->securityContext->expects($this->once()) $this->tokenStorage->expects($this->once())
->method('setToken')->with($this->isInstanceOf('Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken')); ->method('setToken')->with($this->isInstanceOf('Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken'));
$listener = new SwitchUserListener($this->securityContext, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager); $listener = new SwitchUserListener($this->tokenStorage, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager);
$listener->handle($this->event); $listener->handle($this->event);
} }

View File

@ -31,11 +31,11 @@ class X509AuthenticationListenerTest extends \PHPUnit_Framework_TestCase
$request = new Request(array(), array(), array(), array(), array(), $serverVars); $request = new Request(array(), array(), array(), array(), array(), $serverVars);
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'); $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
$listener = new X509AuthenticationListener($context, $authenticationManager, 'TheProviderKey'); $listener = new X509AuthenticationListener($tokenStorage, $authenticationManager, 'TheProviderKey');
$method = new \ReflectionMethod($listener, 'getPreAuthenticatedData'); $method = new \ReflectionMethod($listener, 'getPreAuthenticatedData');
$method->setAccessible(true); $method->setAccessible(true);
@ -60,11 +60,11 @@ class X509AuthenticationListenerTest extends \PHPUnit_Framework_TestCase
$credentials = 'CN=Sample certificate DN/emailAddress='.$emailAddress; $credentials = 'CN=Sample certificate DN/emailAddress='.$emailAddress;
$request = new Request(array(), array(), array(), array(), array(), array('SSL_CLIENT_S_DN' => $credentials)); $request = new Request(array(), array(), array(), array(), array(), array('SSL_CLIENT_S_DN' => $credentials));
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'); $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
$listener = new X509AuthenticationListener($context, $authenticationManager, 'TheProviderKey'); $listener = new X509AuthenticationListener($tokenStorage, $authenticationManager, 'TheProviderKey');
$method = new \ReflectionMethod($listener, 'getPreAuthenticatedData'); $method = new \ReflectionMethod($listener, 'getPreAuthenticatedData');
$method->setAccessible(true); $method->setAccessible(true);
@ -88,11 +88,11 @@ class X509AuthenticationListenerTest extends \PHPUnit_Framework_TestCase
{ {
$request = new Request(array(), array(), array(), array(), array(), array()); $request = new Request(array(), array(), array(), array(), array(), array());
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'); $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
$listener = new X509AuthenticationListener($context, $authenticationManager, 'TheProviderKey'); $listener = new X509AuthenticationListener($tokenStorage, $authenticationManager, 'TheProviderKey');
$method = new \ReflectionMethod($listener, 'getPreAuthenticatedData'); $method = new \ReflectionMethod($listener, 'getPreAuthenticatedData');
$method->setAccessible(true); $method->setAccessible(true);
@ -108,11 +108,11 @@ class X509AuthenticationListenerTest extends \PHPUnit_Framework_TestCase
'TheUserKey' => 'TheUser', 'TheUserKey' => 'TheUser',
'TheCredentialsKey' => 'TheCredentials', 'TheCredentialsKey' => 'TheCredentials',
)); ));
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'); $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'); $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
$listener = new X509AuthenticationListener($context, $authenticationManager, 'TheProviderKey', 'TheUserKey', 'TheCredentialsKey'); $listener = new X509AuthenticationListener($tokenStorage, $authenticationManager, 'TheProviderKey', 'TheUserKey', 'TheCredentialsKey');
$method = new \ReflectionMethod($listener, 'getPreAuthenticatedData'); $method = new \ReflectionMethod($listener, 'getPreAuthenticatedData');
$method->setAccessible(true); $method->setAccessible(true);