cakephp auth-> loginRedirect dla administratora

Jestem dość nowy w CakePHP i przeczytałem wszystkie tutoriale na stronie Cake. Buduję niewielką przykładową aplikację za pomocą tortu 2.1 i mam problem. Zasadniczo chcę, aby użytkownicy administracyjni zostali przekierowani na inną stronę przy logowaniu niż to, do którego normalny użytkownik zostanie przekierowany. Jestem pewien, że jest to prosty sposób, ale walczę!

Włączam routing Admin i korzystam z komponentu autoryzacji (i komponentu ACL, ale to nie wpływa na mój problem). Mam 2 loginy dla administratora - admin_login () i login dla zwykłych użytkowników - login () - normalne logowanie bez uprawnień administratora działa poprawnie.

W moim AppController.php mam to:

class AppController extends Controller {

public $components = array(
    'Acl',
    'Auth' => array(
        'authorize' => array(
            'Actions' => array('actionPath' => 'controllers')
        )
    ),
    'Session'
);
public $helpers = array('Html', 'Form', 'Session');

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

}

Jak widać, domyślnym ustawieniem jest przekierowanie użytkowników na logowanie do funkcji posts controllers add (), która działa dobrze. Jak jednak ustawić inne przekierowanie logowania dla mojej funkcji admin_login ()?

Przeczytałem wiele postów tutaj, ale większość odnosi się do starszych wersji tortu, a nie ciasta 2.

Jeśli to pomoże, to jest moja funkcja admin_login w UsersController.php

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('logout');
}

public function admin_login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            if ($this->Session->read('Auth.User')) {
                $this->Session->setFlash('You are logged in!');
                //$this->redirect($this->Auth->redirect());

                // This doesnt work! Grrrrrr
                //$this->redirect(array('controller'=>'pages', 'action'=>'admin_index'));

                // This nearly works...
                if($this->Auth->user())$this->redirect(array('controller' => 'pages', 'action' => 'admin_index'));
            }            
        }
        else {
            $this->Session->setFlash('Your username or password was incorrect.');
        }
    }

Czy ktoś mógłby wskazać mi właściwy kierunek?

questionAnswers(2)

yourAnswerToTheQuestion