diff --git a/Event/LdapUserEvent.php b/Event/LdapUserEvent.php index f0046b8..a3dd824 100644 --- a/Event/LdapUserEvent.php +++ b/Event/LdapUserEvent.php @@ -3,18 +3,17 @@ namespace IMAG\LdapBundle\Event; use Symfony\Component\EventDispatcher\Event; - -use Symfony\Component\Security\Core\User\UserInterface; - use IMAG\LdapBundle\User\LdapUserInterface; class LdapUserEvent extends Event { private $user; + private $token; - public function __construct(LdapUserInterface $user) + public function __construct(LdapUserInterface $user, $token = null) { $this->user = $user; + $this->token = $token; } public function getUser() @@ -28,4 +27,14 @@ public function setUser($user) return $this; } + + public function getToken() + { + return $this->token; + } + + public function setToken($token) + { + $this->token = $token; + } } diff --git a/Factory/LdapFactory.php b/Factory/LdapFactory.php index 8eacecc..06379f8 100644 --- a/Factory/LdapFactory.php +++ b/Factory/LdapFactory.php @@ -48,20 +48,23 @@ protected function getListenerId() protected function createAuthProvider(ContainerBuilder $container, $id, $config, $userProviderId) { $dao = 'security.authentication.provider.dao.'.$id; - $container + $definition = $container ->setDefinition($dao, new DefinitionDecorator('security.authentication.provider.dao')) ->replaceArgument(0, new Reference($userProviderId)) ->replaceArgument(2, $id) ; - + if ($container->hasDefinition('security.user_checker')) { + $definition + ->replaceArgument(1, new Reference('security.user_checker.'.$id)) + ; + } $provider = 'imag_ldap.security.authentication.provider.'.$id; $container ->setDefinition($provider, new DefinitionDecorator('imag_ldap.security.authentication.provider')) ->replaceArgument(0, new Reference($userProviderId)) ->replaceArgument(1, new Reference($dao)) ->replaceArgument(4, $id) - ; - + ; return $provider; } diff --git a/Provider/LdapAuthenticationProvider.php b/Provider/LdapAuthenticationProvider.php index 5eeeb99..c9b02db 100644 --- a/Provider/LdapAuthenticationProvider.php +++ b/Provider/LdapAuthenticationProvider.php @@ -99,7 +99,7 @@ public function authenticate(TokenInterface $token) */ private function ldapAuthenticate(LdapUserInterface $user, TokenInterface $token) { - $userEvent = new LdapUserEvent($user); + $userEvent = new LdapUserEvent($user, $token); if (null !== $this->dispatcher) { try { $this->dispatcher->dispatch(LdapEvents::PRE_BIND, $userEvent); @@ -119,7 +119,7 @@ private function ldapAuthenticate(LdapUserInterface $user, TokenInterface $token } if (null !== $this->dispatcher) { - $userEvent = new LdapUserEvent($user); + $userEvent = new LdapUserEvent($user, $token); try { $this->dispatcher->dispatch(LdapEvents::POST_BIND, $userEvent); } catch (AuthenticationException $authenticationException) { diff --git a/composer.json b/composer.json index 4504db8..235d48b 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "imag/ldap-bundle", + "name": "turnred/ldap-bundle", "description": "LDAP Bundle for Symfony 2", "homepage": "http://github.com/BorisMorel/LdapBundle", "license": "CeCILL",