在Yii Rbac扩展名权限中为管理员创建用户分配用户角色

时间:2012-07-13 19:43:06

标签: php yii rights rbac yii-extensions

我已经按照大多数人的建议安装了权限,它易于实现基于角色的访问控制。但是我遇到了问题......

我需要为管理员分配一个角色,他可以更改角色..等等..

由于权限不能为表格创建模型,我无法插入其中......因此没有文档,如何做...

4 个答案:

答案 0 :(得分:3)

首先,您需要下拉系统中的所有角色,以便管理员选择..

<?php
if (Yii::app()->user->isSuperuser) {
       $all_roles=new RAuthItemDataProvider('roles', array( 
    'type'=>2,
    ));
      $data=$all_roles->fetchData();
?>
    <div>
        <label for="type_id">Type</label>
        <?php echo CHtml::dropDownList("Type",'',CHtml::listData($data,'name','name'));?    > 
    </div>
<?php
}
?>

然后在后端,您需要根据管理员选择的类型值将角色指定给用户...

if(Yii::app()->user->isSuperuser)
    $type=$_POST['Type'];
else
    $type='User';

$authorizer = Yii::app()->getModule("rights")->authorizer;
$authorizer->authManager->assign($type, $model->id);

此代码检查注册是否来自admin,然后设置管理员选择的角色,否则将User设置为角色,即相同的代码适用于admin user create and normal signup ..

权利中还存在其他问题,这些问题没有被正式记录......我在博客中写了一些...... My blog post about Yii Rights

答案 1 :(得分:2)

那实际上是Yii而不是权利

Yii::app()->authManager->assign($role, $userid);

http://www.yiiframework.com/doc/api/1.1/IAuthManager#assign-detail

答案 2 :(得分:0)

我对权利不太熟悉 - 我使用rbam扩展名。您是否尝试在Rights manual中搜索答案?

答案 3 :(得分:0)

if ($user->save())
    Rights::assign('Authenticated', $user->id);

“已验证”可以替换为任何其他角色。