назначить пользователю роль от admin создает пользователя, в праве расширения Yii Rbac

Я установил права, как было предложено большинством людей, легко реализовать контроль доступа на основе ролей. но я застрял в проблеме..

Мне нужно назначить пользователю роль от администратора, который может менять свои роли..и т.д..

Поскольку права не создают модели для таблиц, я не могу в них вставить ... и как таковой документации нет, как это сделать ...


person user1135655    schedule 13.07.2012    source источник


Ответы (4)


Сначала вам нужен раскрывающийся список всех ролей в системе, чтобы администратор мог выбрать.

<?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

Ну это на самом деле Yii а не права

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

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

person Pentium10    schedule 13.07.2012

Я не слишком знаком с правами — вместо этого я использую расширение rbam. Вы пытались найти ответ в руководстве по правам?

person Boaz Rymland    schedule 13.07.2012

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

"Прошедший проверку" можно заменить любой другой ролью.

person Tahir Yasin    schedule 12.11.2012