Symfony:FOS用户捆绑包通过控制器提升用户

时间:2015-07-09 15:40:57

标签: symfony

我是FOS用户套件的新手。 我有用户并希望创建一个促进它们的功能(它将执行相同的操作:

php app/console fos:user:promote testuser ROLE_MANAGER 

我的security.yml是:

role_hierarchy:
    ROLE_MANAGER:       ROLE_USER
    ROLE_ADMIN:         [ROLE_USER, ROLE_MANAGER, ROLE_ALLOWED_TO_SWITCH]

知道如何从控制器那样做吗? 我使用UserController.php创建了一个UserBundle来扩展FOS用户并创建一个配置文件。

2 个答案:

答案 0 :(得分:6)

找到解决方案:

public function promoteUserAction(){

    $user = $this->getUser();

    $userManager = $this->get('fos_user.user_manager');    
    $user->addRole('ROLE_ADMIN');
    $userManager->updateUser($user);

    return $this->render('ACMEBundle:User:page.html.twig');
} 

希望它对其他人有用。 欢呼声

答案 1 :(得分:2)

此外,如果您碰巧只知道FOS用户名,并且您希望宣传以不同用户身份登录的用户(接受的答案会提升登录用户),则可以使用此示例代码:

$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserBy(array('username' => 'gauss'));
$user->addRole('ROLE_ADMIN');
$userManager->updateUser($user);

在这种情况下,我正在搜索' gauss'的FOS用户名。并促进使用高斯到ROLE_ADMIN。然后,您可以在数据库上运行select id,username,roles from fos_user;的sql命令,以验证是否已添加该角色。

希望这有助于某人。