Компонент аутентификации CakePHP - проблема с функцией isAuthorized ()

У меня есть следующая функция isAuthorized () в моем контроллере студентов:

function isAuthorized() {
    $studentId = $this->Auth->user('id');
    $studentEmail = $this->Auth->user('email');
    if ($this->Auth->user('active') == 1 && $this->Auth->user('level_complete') != 1) {
        $this->Auth->loginRedirect = '/classrooms/view';
        return true;
    } elseif (!$this->Student->hasPayed($studentId)) {
        $this->Session->write('Payment.student_id', $studentId);
        $this->Session->write('Payment.student_email', $studentEmail);
        $this->Session->write('Payment.examScore', $this->Student->getPlacementScore($studentId));
        $this->Auth->logout();
        $this->redirect(array('controller'=>'payments', 'action'=>'pay'));  
    } elseif ($this->Auth->user('level_complete') == 1) {
        $this->Session->write('Payment.student_id', $studentId);
        $this->Session->write('Payment.student_email', $studentEmail);
        $this->Auth->logout();
        $this->redirect(array('controller' => 'payments', 'action' => 'repay'));
    } else {
        $this->Auth->logout();
        $this->redirect(array('controller' => 'students', 'action' => 'disabled'));
    }


    return false;
}

В принципе, есть четыре возможных состояния, охватываемые этим методом:

  1. Пользователь активен и не завершил уровень = Авторизован
  2. Пользователь не заплатил = Не авторизован
  3. Пользователь завершил уровень и должен снова заплатить = Не авторизован
  4. ​​Учетная запись пользователя не активна

Проблема, с которой я столкнулся, заключается в том, что у меня есть форма входа в систему в моем заголовке, и я могу войти в систему с любого контроллера. Если я вхожу в систему с контроллера, отличного от контроллера студентов, метод isAuthorized () не вызывается, и пользователь может войти в систему, даже если он не должен.

Есть идеи?


Изменить: после проверки определения API метода isAuthorized () я думаю, что метод вызывается только тогда, когда запрашиваются действия от контроллера студентов. Где еще я мог бы реализовать эту логику тогда? Спасибо

0
задан AlexBrand 8 October 2011 в 01:07
поделиться