我正在使用基于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.
我怎样才能做到这一点?
我正在为登录用户搜索用户角色,我没有得到如何打印用户角色名称.我试过这个:
$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)