function it_should_switch_the_domain_if_the_token_has_the_ldap_domain_set() { // It first grabs a copy of the domain context, then checks against it, then checks it at the end... $this->ldap->getDomainContext()->willReturn('foo.bar', 'foo.bar', 'example.local'); $this->token->hasAttribute('ldap_domain')->willReturn(true); $this->token->getAttribute('ldap_domain')->willReturn('example.local'); $this->ldap->switchDomain('example.local')->shouldBeCalledTimes(1); $this->ldap->switchDomain('foo.bar')->shouldBeCalledTimes(1); $this->authenticate($this->token)->shouldReturnAnInstanceOf('\\Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken'); }
function let(UserProviderInterface $userProvider, LdapUserChecker $userChecker, LdapManager $ldap, TokenInterface $token, LdapUser $user, LdapConnectionInterface $connection, AuthenticationResponse $response, \Symfony\Component\EventDispatcher\EventDispatcherInterface $dispatcher) { $this->operation = (new AuthenticationOperation())->setUsername('foo')->setPassword('bar'); $token->getUsername()->willReturn('foo'); $token->getCredentials()->willReturn('bar'); $token->hasAttribute('ldap_domain')->willReturn(false); $token->getAttributes()->willReturn([]); $token->getUser()->willReturn($user); $userProvider->loadUserByUsername('foo')->willReturn($user); $connection->getConfig()->willReturn(new DomainConfiguration('foo.bar')); $connection->execute($this->operation)->willReturn($response); $response->isAuthenticated()->willReturn(true); $ldap->getConnection()->willReturn($connection); $ldap->getDomainContext()->willReturn('foo.bar'); $user->getUsername()->willReturn('foo'); $user->getRoles()->willReturn(['ROLE_USER']); $user->isAccountNonLocked()->willReturn(true); $user->isEnabled()->willReturn(true); $user->isAccountNonExpired()->willReturn(true); $user->isCredentialsNonExpired()->willReturn(true); $this->beConstructedWith('restricted', true, $userProvider, new LdapUserChecker(), $ldap, $dispatcher); }
/** * If the domain needs to a different context for the request, then switch it. * * @param TokenInterface $token */ protected function switchDomainIfNeeded(TokenInterface $token) { if ($token->hasAttribute('ldap_domain') && $this->ldap->getDomainContext() !== $token->getAttribute('ldap_domain')) { $this->ldap->switchDomain($token->getAttribute('ldap_domain')); } }
public function hasAttribute($name) { return $this->innerToken->hasAttribute($name); }