标签: yii2-user-roles

如何更改/更新用户角色?Yii2

我正在使用基于yii2角色的访问控制(RBAC)系统.我定义了角色和权限,定义了规则,为用户分配了角色.一切正常.

但我想更新分配给用户的角色.例如:

Yii::$app->authManager->assign('admin', '11');
Run Code Online (Sandbox Code Playgroud)

在这里,我做了用户ID 11管理员.现在我想更新和更改.我想成为这个用户经理.

当我尝试:

Yii::$app->authManager->assign('manager', '11');
Run Code Online (Sandbox Code Playgroud)

此用户有admin + manager.我只想将此用户角色admin更新为manager.

我怎样才能做到这一点?

yii2-user yii2-rbac yii2-user-roles

5
推荐指数
1
解决办法
5023
查看次数

获得用户的角色 - Yii2

我正在为登录用户搜索用户角色,我没有得到如何打印用户角色名称.我试过这个:

$Role = Yii::$app->authManager->getRolesByUser(Yii::$app->user->getId());
Run Code Online (Sandbox Code Playgroud)

什么时候,我做了print_r($Role); 我懂了 :

Array ( [superadmin] => yii\rbac\Role Object ( [type] => 1 [name] => superadmin [description] => Super admin can do any operation in the application [ruleName] => [data] => [createdAt] => [updatedAt] => ) )
Run Code Online (Sandbox Code Playgroud)

我希望获得特定的角色名称,但我无法访问

Array ( [superadmin] => yii\rbac\Role Object ........)
           ^ unable to access this name.
Run Code Online (Sandbox Code Playgroud)

打字时print_r($Role[0]->name);我得到的错误就像

PHP注意 - yii\base\ErrorException

未定义的偏移量:0

并且,如果我喜欢这种方式(意味着,手动传递$rolename给数组索引)它正在工作.

$roleName = 'superadmin';

print_r($Role[$roleName]->name);
Run Code Online (Sandbox Code Playgroud)

为什么这个要求来找我,因为对于登录用户它是好的.但是,如果我想知道其他用户角色名称,那么我需要在这里传递索引名称$Role[$roleName]->name

请帮我看看'superadmin'.我没有得到如何得到它的索引名称.

Array ( [superadmin] => yii\rbac\Role Object …
Run Code Online (Sandbox Code Playgroud)

php yii2 yii2-advanced-app yii2-basic-app yii2-user-roles

1
推荐指数
1
解决办法
4160
查看次数