예제 #1
0
 /**
  * {@inheritDoc}
  */
 public function loadUserByUsername($username)
 {
     try {
         $user = parent::loadUserByUsername($username);
     } catch (UsernameNotFoundException $e) {
         $user = $this->createEntity($username);
         $this->em->persist($user);
         $this->em->flush();
     }
     return $user;
 }
 private function tryHTTPAuth(GetResponseEvent $event)
 {
     $request = $event->getRequest();
     $username = $request->server->get('PHP_AUTH_USER');
     $password = $request->server->get('PHP_AUTH_PW');
     if (!$username || !$password) {
         return false;
     }
     $user = $this->userProvider->loadUserByUsername($username);
     $providerKey = 'main';
     $token = new UsernamePasswordToken($user, $password, $providerKey, $user->getRoles());
     $encoder = $this->encodeFactory->getEncoder($user);
     $encodedPass = $encoder->encodePassword($password, $user->getSalt());
     //the authenticationManager always never throw an Exception with the UsernamePasswordToken so we validate it manually
     if ($user->getPassword() === $encodedPass) {
         $this->securityContext->setToken($token);
         return true;
     }
     $error = ['error' => 'authentication_error', 'error_description' => 'Invalid username and password combination'];
     $event->setResponse(new Response(json_encode($error)));
     return false;
 }
예제 #3
0
 /**
  * @expectedException \InvalidArgumentException
  */
 public function testLoadUserByUserNameShouldDeclineInvalidInterface()
 {
     $repository = $this->getMock('\\Symfony\\Component\\Security\\Core\\User\\AdvancedUserInterface');
     $provider = new EntityUserProvider($this->getManager($this->getObjectManager($repository)), 'Symfony\\Bridge\\Doctrine\\Tests\\Fixtures\\User');
     $provider->loadUserByUsername('name');
 }