Сначала вам нужен раскрывающийся список всех ролей в системе, чтобы администратор мог выбрать.
<?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
..
В правах есть такие другие проблемы, которые не задокументированы заранее... Я написал о некоторых в своем блоге. -rbac-role-based-access-control/" rel="nofollow">Запись в моем блоге о правах Yii
person
Rajat Singhal
schedule
14.07.2012