2016-05-20 16 views
-2

私はcakephpで新しいです。私は、logindのコードをimplementdしています。私は、異なるユーザーのための役割ベースのアクションを提供しようとしています。 私はIDとロール(Admin、Normal、SubAdmin)を格納するテーブルを持っています。 スーパー管理者が削除の更新を追加してeveronesレコードを編集および表示できるようにしたいと思います。 アドミニストレーターは追加ユーザーを編集して削除することができ、自分のレコードを削除/編集できません。 どのように私はこれを達成することができます。お使いのユーザーのコントローラーでcakephp 2.7でログインした後にロールベースの認証を適用する方法は?

class AppController extends Controller { 
public $components =array(
        'Session', 
        'Flash', 
        'Auth'=>array(

        'authenticate' => array(
        'Form' => array(
        'fields' => array('username' => 'Email','password'=>'Passward'), 
        )), 
        'loginRedirect'=>array('controller'=>'Users','action'=>'index'), 
        'logoutRedirect'=>array('controller'=>'Users','action'=>'login'), 
        'authError'=>"You Can't access this page", 
        'authorize' => array('controller') 
       ) 
        ); 

public function beforeFilter() 
{ 
    $this->Auth->allow('index'); 
} 
public function isAuthorized($user) 
{ 
     return true; 
} 
} 

を:あなたはあなたのアプリケーションコントローラで使用して

をこのコードを実行することができます

+0

[あなたのコードによって引き起こされる問題について質問をするとき(http://stackoverflow.com/help/mcve) – swiftBoy

+0

ようこそ、ようこそquestiを尋ねるときにもう少し具体的にしてください、あなたは、問題を再現するために使用できるコードを提供すると、より良い答えを得るでしょうあなたが試したもの、何を期待しているのかなど。[参照する方法](参照:http://stackoverflow.com/help/how-to-ask) – Nehal

答えて

0

class UsersController extends AppController { 

public $helpers = array('Html', 'Form','Session','Flash'); 
public function beforeFilter() 
{ 
    parent::beforeFilter(); 
    $this->Auth->allow('add'); 
} 
public function isAuthorized($user) { 
    // The owner of a post can edit and delete it 
    if (in_array($this->action, array('edit', 'delete'))) { 

    switch ($user['Role']) { 
     case "Super user": 
     return true; 
     break; 
     case "Admin": 
     if($user['id']==$this->request->params['pass'][0]) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
     break; 
     default: 
      return false; 
    } 

    } 
    return true; 
} 
+0

多くのアクションがあり、コントローラの同じ名前を持つ異なるフォルダで多くの異なるビューがあります。 –

+0

あなたのコードを提供するか、あなたの問題を理解できるように正確に何をしたいのかを簡単に説明してください。 –

関連する問題