我已经按照大多数人的建议安装了权限,它很容易实现基于角色的访问控制。但是我遇到了一个问题。。
我需要从管理员那里为用户分配一个角色,他可以更改自己的角色。。等等。
由于权限不能为表创建模型,我无法在其中插入。。因此,没有文档,如何做到…
首先需要系统中所有角色的下拉列表,供管理员选择。。
<?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 Rights 的博客文章
这实际上是Yii,而不是权利
Yii::app()->authManager->assign($role, $userid);
http://www.yiiframework.com/doc/api/1.1/IAuthManager#assign-详细
我对Rights不太熟悉,而是使用rbam扩展。您是否尝试在权利手册中搜索答案?
if ($user->save())
Rights::assign('Authenticated', $user->id);
"Authenticated"可以替换为任何其他角色