2012-02-09 14 views
0

私はYiiにとって非常に新しいです。私は実世界の例を開発しています。 私はテーブルを持っているので、データベースからデータを取得するユーザーと呼ばれるモデルです。データベースの3つの主なフィールドは、username、password、およびuserRoleです。 ユーザー名とパスワードは正常に機能します。 私はデータベース内のuserRoleを調べ、それに基づいてユーザーに役割を割り当てます。 たとえば、ユーザーのuserRoleフィールド== 1です。ユーザーはadminであり、作成、読み取り、更新および削除(CRUD)が可能です。 しかし、ユーザーのuserRole == 2の場合、ユーザーは更新と作成はできますが、削除はできません。 私はUserController.phpの 'expression' ib accessRules()でそれをしようとしましたが、それは動作しませんでした。 それから私はそれについて読んで、私は役割でそれをやるべきだと分かった。 これは私が書いたものです:Yiiのデータベースからユーザー権限を得る方法

public function accessRules() 
    { 
     $auth = Yii::app()->authManager; 

     $auth->createOperation('createUser','create a user'); 
     $auth->createOperation('updateUser','update a user'); 
     $auth->createOperation('deleteUser','delete a user'); 

     $role=$auth->createRole('creator'); 
     $role->addChild('createUser'); 

     $role=$auth->createRole('updater'); 
     $role->addChild('updateUser'); 

     $role=$auth->createRole('deleter'); 
     $role->addChild('deleteUser'); 


     return array(
................................ 
     array('allow', 
      'actions'=>array('create','update'), 
      'users'=>array('@'), 
      'roles'=>????, 

..................... 

???私は何をすべきか分かりません。 正しい場所/ファイルにcreateOperation/addChildを定義していますか? 戻り値の配列で 'roles'を使用するにはどうすればよいですか? また、データベースからuserRoleを取得する必要がありますか?

Yiiのフォーラムは

は(あなたがそれらを作成または編集するたびに)操作と役割の作成は1時間の活動であるあなたに

答えて

0

ありがとうアクティブでないように私は必死に答えを探しています。一度呼び出す別の方法が必要です。

ロールベースのアクセスシステムを導入したい場合は、データベースにテーブルを追加する必要があります。スキーマは、yii/framework/web/auth/schema.sqlというフォルダにあります。

しかし、RBACは、権利のような拡張機能を使用することです実装するための最も簡単な方法 - http://www.yiiframework.com/extension/rights/

0

ユーザー(または既知のユーザーIDによる)をログに記録する役割(複数可)を割り当てる必要があります

$auth->assign('creator',user()->id); 
$auth->assign('updater', 102); //102 as user id 
//... 

そして、あなたは書く必要があります

'actions'=>array('create','update'), 
'roles'=>array('creator','updater'), 

このアンサーはお探しですか?

関連する問題