2012-04-10 13 views
0

登録ユーザーを作成する方法は、自分のデータだけを編集できますが、他のユーザーは編集できません。それがACL(aroとaco)を設定したとき。 私の設定:CakePHP 2で自分のデータだけを編集するには?

クラスのユーザーが伸びるのAppModel {

public function bindNode($user) { 

    return array('model' => 'Group', 'foreign_key' => $user['User']['group_id']); 

} 

クラスのAppControllerは、コントローラ{

public $components = array(
    'Acl', 
    'Auth' => array(
     'authorize' => array(
      'Actions' => array('actionPath' => 'controllers') 
     ) 
    ), 
    'Session' 
); 
+0

「自分のデータ」をどのように定義しますか?一般的には:編集を可能にするアクションでチェックする*。 – deceze

答えて

1

あなたのコントローラにisAuthorizedメソッドを追加する必要がありますを拡張します。このメソッドでは、渡しているパラメータを使用して実行しようとしている操作に対して、ユーザーが承認されていることを確認します。あなたはこのようなコードを使用することができます。

switch ($this->action) { 
    case 'delete': 
    case 'edit': 
     // id of what they are trying to edit 
     $this->Topic->id = $this->params['pass'][0]; 
     // id of the owner of what they are trying to edit 
     $ownerId = $this->Topic->field('user_id'); 

     $userId = $this->Auth->user('id'); 
     if ($ownerId == $userId) { 
      // allow users to edit or delete their own topics 
      return TRUE; 
     } else { 
      // allow admin group to edit any topic 
      return $this->Auth->user('group') == 'admin'; 
     } 
} 

あなたはここにチュートリアルを参照してください、パーミッションをチェックするのではなく、「ユーザーが管理者グループのメンバーである」のようなハードコーディングのチェックのためにケーキのACLシステムを使用する場合:http://jonisalonen.com/2010/role-based-acl-in-cakephp/ それはしかし、ケーキ1.3のために書かれた、私は大きな違いがあるかどうかをチェックしていない。

+0

ありがとう、私はすでにaros_akosを設定しているので、アプローチする第2の方法。 –

+0

[CakePHP 2.xでの役割ベースのアクセス制御]のドキュメントはこちら(http://book.cakephp.org/2.0/ja/tutorials-and-examples/simple-acl-controlled-application/part-two .html)。 –

関連する問題