如何向用户添加多个角色,并使用symfony2中的FOSUSERBUNDLE进行检查

时间:2014-09-28 17:59:26

标签: symfony fosuserbundle

如何添加多个角色并使用symfony2中的FOSUSERBUNDLE进行检查?

我有一些问题需要为单个用户FOS添加多个角色。想知道如何在我的控制器和树枝中添加和检查它吗?

1 个答案:

答案 0 :(得分:0)

FOSUserBundle具有addRole()和removeRole()方法,用于添加和删除角色。

这样做可能是这样的:

     /**
     * @Route("/admin/user/change-role/{id}/{role}")
     */
    public function roleAction($id, $role)
    {
        $em = $this->getDoctrine()->getManager();
        $user = $em->getRepository('MyGreatBundle:User')->find($id);

        if (!$user) {
            throw $this->createNotFoundException('No user found for id '.$id);
        }

        if ($user->hasRole($role)){
            $user->removeRole($role);
        } else {
            $user->addRole($role);
        }

        $username = $user->getUsername();

        $em->flush();

        return $this->render('MyGreatBundle:Default:role.html.twig', array('result' => $username, 'role' => $role, ));
    }

此操作可向用户添加或删除角色。 Action接受用户和角色的id。角色可以是例如:ROLE_NEWS,ROLE_EVENT,ROLE_SOMETHING ......如果用户已经拥有此角色,则action将删除该角色,否则将添加。

您还可以使用方法hasRole()创建类似的检查角色的操作。

相关问题