cakephp пренасочва към група от потребители

Използвам 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_id 1, той/тя трябва да бъде пренасочен към място, различно от group_id = 4 и т.н.

Благодаря


person Asim Zaidi    schedule 07.04.2012    source източник


Отговори (1)


Добре, така че например пренасочвате всеки потребител към действие, например dashboard. Вместо пренасочване на потребителя към добавяне на действие на posts контролер, пренасочване към dashboard на users контролер. Предполагам, че имате друга таблица за групи и запазвате нейния външен ключ в таблицата на потребителите.

    $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“.

person Ehtesham    schedule 07.04.2012