2014-01-08 2 views
3

내 사용자를 관리하기 위해 FOSUserBundle을 사용하고 내 웹 사이트를 관리하기 위해 SonataAdminBundle을 사용하고 있습니다 ... 어떤 사용자에게도 암호를 변경/추가하려고하면 암호가 암호화되지 않습니다. sha512하지만 사용자가 fosuserbundle 등록 페이지에 등록하면 ...Symfony2 SonataAdminBundle 암호 필드 암호화

따라서 fosuserbundle 구성도 Symfony2 구성에도 문제가 없으므로 어딘가에 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

같은 문제가있는 모든 사람들을위한 해결책을 찾았습니다. 나만의 관리 클래스에서 작성/업데이트 양식을 정의하고 사용하면 비밀번호가 완벽하게 암호화되어 새 사용자로 로그인 할 준비가됩니다.)

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', 
     )) 
    ; 
}