我是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用户并创建一个配置文件。
答案 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命令,以验证是否已添加该角色。
希望这有助于某人。