2014-03-05 54 views
0

我有一个应用程序,只有管理员可以创建用户,我使用FOSUserBundle。无法使用FOSUserBundle在Symfony2中登录创建的用户

我可以创建用户,但我想要登录创建的用户时遇到了一些问题。

他们无法登录。

我使用FOSUserBundle的默认登录名,它可以与从命令行创建的用户一起使用。

我错过了什么?

这是从我的UserController的我createAction:

public function createAction(Request $request) 
{ 
    $user = new User(); 

    $form = $this->createForm(new UserType(), $user); 

    if ($request->getMethod() == 'POST') { 
     $form->handleRequest($request); 

     if ($form->isValid()) { 
      $em = $this->getDoctrine()->getManager(); 
      $em->persist($user); 
      $em->flush(); 
     } 

     $this->get('session')->getFlashBag()->add('success', 'The user has been added!'); 
     return $this->redirect($this->generateUrl('crm_users')); 
    } 

    return $this->render('LanCrmBundle:User:create.html.twig', array(
     'form' => $form->createView(), 
    )); 
} 

这是我buildForm:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('username') 
     ->add('email') 
     ->add('enabled') 
     ->add('password') 
     ->add('roles', 'choice', array('choices' => array('ROLE_USER' => 'User', 'ROLE_ADMIN' => 'Admin'),'multiple' => true)); 
} 

回答

2

在创建用户时未加密的口令。

更改内部形状有效的成功代码,

if ($form->isValid()) { 
    $em = $this->getDoctrine()->getManager(); 
    $userManager = $this->container->get('fos_user.user_manager'); 
    $user->setPlainPassword($user->getPassword()); 
    $userManager->updatePassword($user); 
    $em->persist($user); 
    $em->flush(); 
} 
0

也许您启用默认值为false。

尝试直接设置:

 if ($form->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 

     $user->setEnabled(true); 

     $em->persist($user); 
     $em->flush(); 
    } 

或者把它放在实体类的默认值。

相关问题