0

aclを使用していて、ユーザーがどのグループに属しているかに基づいてユーザーをリダイレクトしたい

私のappcaontrollerで私はこれを持っています

public function beforeFilter() {
                                //Configure AuthComponent
                                //$this->Auth->allow('display');
                                $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
                                $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
                                $this->Auth->loginRedirect = array('controller' => 'posts', 'action' => 'add');
    }

ユーザーがgroup_id1の場合、どうすればよいですか?group_id=4などとは異なる場所にリダイレクトする必要があります。

ありがとう

4

1 に答える 1

4

たとえば、すべてのユーザーをアクション say にリダイレクトしていますdashboard。ユーザーをリダイレクトして、コントローラーのpostsリダイレクトのアクションをコントローラーに追加する代わりに。グループ用の別のテーブルがあり、その外部キーを users テーブルに保持していると仮定しています。dashboardusers

    $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'dashboard');

上記は、ログイン時にユーザーをコントローラーdashboardのアクションにリダイレクトします。usersすべてのユーザーを特定のグループに移動するには、ユーザーのグループ名を取得して特定のページにリダイレクトします。

  function dashboard() {
      //get user's group (role)
    $group_name = $this->User->Group->field('name', array('id' => $this->Auth->User('group_id')));
    //group selection logic here
    $action = 'dashboard_' . $group_name;
    $this->redirect('controller' => 'users' => 'action' => $action);
  }

したがって、上記のコードはすべてのユーザーを特定のアクションに導きます。たとえば、グループ名が「managers」の場合、ユーザーは「managers_dashboard」にリダイレクトされます。

于 2012-04-07T20:44:26.930 に答える