summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKacper Gunia <cakper@gmail.com>2014-04-11 16:33:31 +0100
committerKacper Gunia <cakper@gmail.com>2014-04-11 16:33:31 +0100
commit96a74b6c35c7ce8fd3450fbb117b7c7134849eb2 (patch)
tree0a76cce9389238ba52c9e1df1ba9afefd8289007
parentf70d3420f4f5bdb9b98ce3c880c7fcd8ccc46918 (diff)
downloadsymfony-security-96a74b6c35c7ce8fd3450fbb117b7c7134849eb2.zip
symfony-security-96a74b6c35c7ce8fd3450fbb117b7c7134849eb2.tar.gz
symfony-security-96a74b6c35c7ce8fd3450fbb117b7c7134849eb2.tar.bz2
Call AuthenticationManager in AnonymousAuthenticationListener
-rw-r--r--Http/Firewall/AnonymousAuthenticationListener.php25
-rw-r--r--Http/Tests/Firewall/AnonymousAuthenticationListenerTest.php34
2 files changed, 45 insertions, 14 deletions
diff --git a/Http/Firewall/AnonymousAuthenticationListener.php b/Http/Firewall/AnonymousAuthenticationListener.php
index 59f05ff..986c9a8 100644
--- a/Http/Firewall/AnonymousAuthenticationListener.php
+++ b/Http/Firewall/AnonymousAuthenticationListener.php
@@ -11,6 +11,8 @@
namespace Symfony\Component\Security\Http\Firewall;
+use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
+use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\SecurityContextInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
@@ -26,13 +28,15 @@ class AnonymousAuthenticationListener implements ListenerInterface
{
private $context;
private $key;
+ private $authenticationManager;
private $logger;
- public function __construct(SecurityContextInterface $context, $key, LoggerInterface $logger = null)
+ public function __construct(SecurityContextInterface $context, $key, AuthenticationManagerInterface $authenticationManager, LoggerInterface $logger = null)
{
- $this->context = $context;
- $this->key = $key;
- $this->logger = $logger;
+ $this->context = $context;
+ $this->key = $key;
+ $this->authenticationManager = $authenticationManager;
+ $this->logger = $logger;
}
/**
@@ -46,10 +50,17 @@ class AnonymousAuthenticationListener implements ListenerInterface
return;
}
- $this->context->setToken(new AnonymousToken($this->key, 'anon.', array()));
+ try {
+ $token = $this->authenticationManager->authenticate(new AnonymousToken($this->key, 'anon.', array()));
+ $this->context->setToken($token);
- if (null !== $this->logger) {
- $this->logger->info('Populated SecurityContext with an anonymous Token');
+ if (null !== $this->logger) {
+ $this->logger->info('Populated SecurityContext with an anonymous Token');
+ }
+ } catch (AuthenticationException $failed) {
+ if (null !== $this->logger) {
+ $this->logger->info(sprintf('Anonymous authentication failed: %s', $failed->getMessage()));
+ }
}
}
}
diff --git a/Http/Tests/Firewall/AnonymousAuthenticationListenerTest.php b/Http/Tests/Firewall/AnonymousAuthenticationListenerTest.php
index 1fb7350..e6bab4e 100644
--- a/Http/Tests/Firewall/AnonymousAuthenticationListenerTest.php
+++ b/Http/Tests/Firewall/AnonymousAuthenticationListenerTest.php
@@ -11,6 +11,7 @@
namespace Symfony\Component\Security\Http\Tests\Firewall;
+use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener;
class AnonymousAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
@@ -28,7 +29,13 @@ class AnonymousAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
->method('setToken')
;
- $listener = new AnonymousAuthenticationListener($context, 'TheKey');
+ $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
+ $authenticationManager
+ ->expects($this->never())
+ ->method('authenticate')
+ ;
+
+ $listener = new AnonymousAuthenticationListener($context, 'TheKey', $authenticationManager);
$listener->handle($this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false));
}
@@ -40,16 +47,27 @@ class AnonymousAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
->method('getToken')
->will($this->returnValue(null))
;
- $context
+
+ $anonymousToken = new AnonymousToken('TheKey', 'anon.', array());
+
+ $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
+ $authenticationManager
->expects($this->once())
- ->method('setToken')
+ ->method('authenticate')
->with(self::logicalAnd(
- $this->isInstanceOf('Symfony\Component\Security\Core\Authentication\Token\AnonymousToken'),
- $this->attributeEqualTo('key', 'TheKey')
+ $this->isInstanceOf('Symfony\Component\Security\Core\Authentication\Token\AnonymousToken'),
+ $this->attributeEqualTo('key', 'TheKey')
))
+ ->will($this->returnValue($anonymousToken))
;
- $listener = new AnonymousAuthenticationListener($context, 'TheKey');
+ $context
+ ->expects($this->once())
+ ->method('setToken')
+ ->with($anonymousToken)
+ ;
+
+ $listener = new AnonymousAuthenticationListener($context, 'TheKey', $authenticationManager);
$listener->handle($this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false));
}
@@ -66,7 +84,9 @@ class AnonymousAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
->with('Populated SecurityContext with an anonymous Token')
;
- $listener = new AnonymousAuthenticationListener($context, 'TheKey', $logger);
+ $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
+
+ $listener = new AnonymousAuthenticationListener($context, 'TheKey', $authenticationManager, $logger);
$listener->handle($this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false));
}
}