Check password and create user manually with FOSUserBundle

Jade Jaber picture Jade Jaber · Feb 28, 2012 · Viewed 19.8k times · Source

I'm using FOSUserBundle in my application. I would like to do two things via HTTP services:

  1. Check password. The service could look like this (the password wouldn't be encrypted):

    public function checkPasswordValidity($userId, $password) {
        $user = $this->getDoctrine()
            ->getRepository('MyCompany\UserBundle\Entity\User')
            ->find($userId);
    
        if (specialFunction($user , $password))
            echo 'Valid Password';
        else
            echo 'Invalid Password';
    }
    
  2. Create a new user via another HTTP service. The parameters would be the username and the password.

Answer

user1288434 picture user1288434 · Mar 23, 2012
  1. Check password:

    $encoder_service = $this->get('security.encoder_factory');
    $encoder = $encoder_service->getEncoder($user);
    $encoded_pass = $encoder->encodePassword($password, $user->getSalt());
    
    //then compare    $user->getPassword() and $encoded_pass
    
  2. Create a new user:

    $userManager = $this->get('fos_user.user_manager');
    $user = $userManager->createUser();
    $user->setUsername($login);
    $user->setPlainPassword($pass);
    ...
    $userManager->updateUser($user);