cakephp auth-> loginRedirect для администратора
Я довольно новичок в cakePHP и прочитал все учебники на сайте. Я создаю небольшое примерное приложение, используя торт 2.1, и столкнулся с проблемой. По сути, я хочу, чтобы пользователи с правами администратора перенаправлялись на страницу входа, отличную от той, на которую перенаправляется обычный пользователь. Я уверен, что есть простой способ сделать это, но я изо всех сил!
У меня включена маршрутизация администратора и я использую компонент auth (и компонент ACL, хотя это не влияет на мою проблему). У меня есть 2 логина один для admin - admin_login () и логин для обычных пользователей - login () - нормальный логин без прав администратора работает нормально.
В моем AppController.php у меня есть это:
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');
}
}
Итак, как вы можете видеть, по умолчанию пользователи перенаправляются при входе в функцию add () контроллеров сообщений, которая работает нормально. Однако, как я могу установить другое перенаправление входа в систему для моей функции admin_login ()?
Я прочитал несколько постов здесь, но большинство из них касаются более старых версий торта, а не торта 2.
Если это поможет, это моя функция admin_login в 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.');
}
}
Кто-нибудь может указать мне правильное направление?