2014-03-05 80 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(); 
    } 

或者把它放在實體類的默認值。

相關問題