FOSUserBundle组角色设置

时间:2013-02-24 21:53:24

标签: 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列。如果它仍然有用,我如何以编程方式将用户分配给组?

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

谢谢。

1 个答案:

答案 0 :(得分:14)

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

$user->addGroup($group);

由于您正在使用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();

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