如何通过Sonata管理员使用灯具创建用户

时间:2019-01-31 10:03:18

标签: symfony doctrine fosuserbundle sonata-admin sonata-user-bundle

我使用FOSUserBundle在Symfony 4.2中启动了我的应用程序,并制作了一个夹具文件来创建管理员。

use FOS\UserBundle\Doctrine\UserManager;
...
/** @var UserManager $userManager */
$userManager = $this->getContainer()->get('fos_user.user_manager');
/** @var User $user */
$user = $userManager->createUser();
$user
    ->setUsername('username')
    ->setEmail('email')
    ->setPlainPassword('password')
    ->setSuperAdmin(true);
$manager->persist($user);
$manager->flush();

工作正常,但后来我决定使用SonataAdmin和ACL。

从那时起,我无法再以管理员身份登录。

但是,如果我使用bin/console fos:user:create --super-admin命令而不是Fixture文件中的命令创建管理员用户,我可以正常登录。

检查数据库时,两个用户之间的唯一区别是salt和密码哈希,但这是预期的。

也就是说,有人可以解释一下我需要在Fixture文件中进行哪些更改才能创建一个正常的管理员用户吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

答案在FOS\UserBundle\Command\CreateUserCommand中。您需要使用FOS\UserBundle\Util\UserManipulator来创建用户。

use FOS\UserBundle\Util\UserManipulator;

...

/** @var UserManipulator $userManipulator */
$userManipulator = $this->getContainer()->get('fos_user.util.user_manipulator');

$user = $userManipulator->create( 'username', 'password', 'email', true, true);