перенаправление 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_dashboard».

person Ehtesham    schedule 07.04.2012