FOSUserBundle组角色设置

cba*_*scu 8 symfony fosuserbundle

我正在使用FOSUserBundle和Group选项.注册工作.创建小组也是有效的.如果我创建2个组,admin和client,并且手动添加:1:{i:0; s:10:"ROLE_ADMIN";}到fos_group表中的admin组,然后在fos_user_user_group中进行MANULLY设置和输入用户到管理员组,使用该用户登录将能够以管理员身份登录.

然而,这种方法显然存在一些缺点.我现在可以使用什么来将用户添加到组中?使用promote命令行选项只会将角色添加到该用户但在fos_user表中,并且因为我正在使用组,所以我怀疑不再使用fos_user表的roles列.如果它仍然有用,我如何以编程方式将用户分配给组?

我的另一个重要问题是如何为组分配角色.也许我没有得到关于整个群体想法的东西,但我本来希望能够在创建时为群组添加角色,但"新"形式只询问群组名称并且没有似乎存在相当于组的用户提升命令.

谢谢.

Upv*_*ote 14

如何以编程方式将用户分配到组?

$user->addGroup($group);
Run Code Online (Sandbox Code Playgroud)

由于您正在使用FOSUserBundle,因此您的用户实体扩展FOS\UserBundle\Model了实现GroupableInterface.所以你的用户类已经有了组方法getGroups, hasGroup($name), addGroup(GroupInterface $group), removeGroup(GroupInterface $group).供参考,请访问https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Model/User.php

如何为组分配角色?

$em = $this->getDoctrine()->getEntityManager();

$group = new Group();
$group->setRoles(array());
$group->addRole('ROLE_ACTOR');
$em->persist($group);
$em->flush();
Run Code Online (Sandbox Code Playgroud)

您必须自己实现角色分配,fosuserbundle没有预定义的表单.