0

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

我需要为用户分配一个来自管理员的角色,他可以更改他们的角色..等等。

由于权限不会为我无法插入其中的表创建模型..因此没有文档,怎么做...

4

4 回答 4

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);

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

权利中还有其他一些没有预先记录的问题……我在我的博客中写了一些…… 我关于 Yii 权利的博客文章

于 2012-07-14T04:20:53.583 回答
2

那实际上是 Yii 而不是权利

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

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

于 2012-07-13T20:56:19.297 回答
0

我对 Rights 不太熟悉 - 我改用rbam扩展。您是否尝试在权利手册中搜索您的答案?

于 2012-07-13T20:34:08.030 回答
0
if ($user->save())
    Rights::assign('Authenticated', $user->id);

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

于 2012-11-12T13:43:31.443 回答