8

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

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

我的另一个大问题是如何将角色分配给组。也许我没有对整个 Groups 的想法有所了解,但我希望能够在创建时为组添加角色,但“新”表单只要求提供组名称并且没有似乎不存在与组的用户提升命令的等效项。

谢谢你。

4

1 回答 1

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 没有为此预定义的表单。

于 2013-02-24T22:47:53.803 回答