2014-01-08 5 views
3

У меня есть FOSUserBundle для управления моими пользователями и SonataAdminBundle для управления моим сайтом ... У меня есть проблема, когда я пытаюсь изменить/добавить пароль для любого пользователя, пароль не закодирован в sha512, но это происходит, когда пользователь регистрируется на странице регистрации fosuserbundle ...Symfony2 SonataAdminBundle Шифрование пароля пароля

Таким образом, нет проблем с конфигурацией Symfony2, ни с конфигурацией fosuserbundle, она может находиться внутри SonataAdminBundle где-то, а может быть, в моем классе администратора. .

<?php 
// src/Acme/DemoBundle/Admin/PostAdmin.php 

namespace Web\DificilBundle\Admin; 

use Sonata\AdminBundle\Admin\Admin; 
use Sonata\AdminBundle\Datagrid\ListMapper; 
use Sonata\AdminBundle\Datagrid\DatagridMapper; 
use Sonata\AdminBundle\Form\FormMapper; 
use Web; 

class UserAdmin extends Admin 
{ 
    // Fields to be shown on create/edit forms 
    protected function configureFormFields(FormMapper $formMapper) 
    { 
     $formMapper 
      ->add('firstname') 
      ->add('lastname') 
      ->add('username') 
      ->add('email') 
      ->add('password', 'password') // -> I WANT THIS TO BE ENCODED INTO SHA512! 
      ->add('roles','choice',array('choices'=>$this->getConfigurationPool()->getContainer()->getParameter('security.role_hierarchy.roles'),'multiple'=>true)); 

      //->add('body') 
     ; 
    } 

    // Fields to be shown on filter forms 
    protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
    { 
     $datagridMapper 
      ->add('firstname') 
      ->add('lastname') 
      ->add('username') 
      ->add('email') 
      ->add('password') 
     ; 
    } 

    // Fields to be shown on lists 
    protected function configureListFields(ListMapper $listMapper) 
    { 
     $listMapper 
      ->add('firstname') 
      ->add('lastname') 
      ->add('username') 
      ->add('password') 
      ->add('email') 
      ->add('facebookid') 
      ->add('roles'); 

      //->add('password', 'password') 
     ; 
    } 
} 
+0

же (включая решение ниже) относится пожаловать в Symfony3 – Bananaapple

ответ

8

Обнаружено решение для всех, у кого такая же проблема как я, только на классе администратора, где вы определяете свою форму Create/Update, используйте это и ваш пароль будет полностью зашифрован и готов войти в новый пользователь;)

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle')) 
     ->add('username', null, array('label' => 'form.username', 'translation_domain' => 'FOSUserBundle')) 
     ->add('plainPassword', 'repeated', array(
       'type' => 'password', 
       'options' => array('translation_domain' => 'FOSUserBundle'), 
       'first_options' => array('label' => 'form.password'), 
       'second_options' => array('label' => 'form.password_confirmation'), 
       'invalid_message' => 'fos_user.password.mismatch', 
     )) 
    ; 
} 
Смежные вопросы