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ます

Rights には、事前に文書化されていない他の問題があります...ブログにいくつか書いています.. Yii Rights に関する私のブログ投稿

于 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
if ($user->save())
    Rights::assign('Authenticated', $user->id);

「認証済み」は、他のロールに置き換えることができます。

于 2012-11-12T13:43:31.443 に答える
0

私は権利についてあまり詳しくありません。代わりにrbam拡張機能を使用しています。権利マニュアルで回答を検索しようとしましたか?

于 2012-07-13T20:34:08.030 に答える