Я использую Symfony 3.4 с FOSUserBundle и EasyAdminBundle .
Я застрял на некоторое время над следующей проблемой: когдаЯ создаю нового пользователя с помощью EasyAdmin, введенный пароль не хэшируется, он остается открытым в базе данных и в форме редактирования созданного пользователя (в EasyAdmin), хотя при создании пользователя с помощью формы, созданнойFOSUserBundle (регистрация).
Мой Сущность пользователя :
<?php
// src/Repas/UserBundle/Entity/User.php
namespace Repas\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
Мой AdminController.php файл:
<?php
namespace Repas\MenusBundle\Controller;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AdminController as BaseAdminController;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
class AdminController extends BaseAdminController
{
public function createNewUserEntity()
{
return $this->get('fos_user.user_manager')->createUser();
}
public function persistUserEntity($user)
{
$this->get('fos_user.user_manager')->updateUser($user, false);
parent::persistEntity($user);
}
public function updateUserEntity($user)
{
$this->get('fos_user.user_manager')->updateUser($user, false);
parent::updateEntity($user);
}
}
В моем config.yml файле:
easy_admin:
entities:
User:
class: Repas\UserBundle\Entity\User
export_path: '%kernel.root_dir/../var/export/user'
password_encoding: { algorithm: 'bcrypt', cost: 12 }
В моем security.yml файле:
encoders:
Repas\UserBundle\Entity\User: bcrypt
В моем routing.yml file:
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
easy_admin_bundle:
resource: "@RepasMenusBundle/Controller/AdminController.php"
type: annotation
prefix: /admin
Я прошел через многие форумы, а также официальные документы, думаю, что я все правильно выполнил, но наверняка что-то пропустил.
Спасибо за вашу помощь.