Пользовательские условия входа - PullRequest
6 голосов
/ 31 декабря 2010

Я хотел бы проверить, активирована ли учетная запись пользователя при входе в систему, но компонент Auth для торта заботится о входе в систему так, как я не знаю, как управлять. Cake в основном использует пустую функцию входа в систему, и я понятия не имею, как проверить значение User.active.

Заранее спасибо

Ответы [ 2 ]

11 голосов
/ 01 января 2011

AuthComponent имеет свойство для установки дополнительных условий, таких как это, называемое $ userScope.

Просто включите эту строку в блок установки beforeFilter () Auth:

$this->Auth->userScope = array('User.active' => true);

Примечание: вышесказанное относится к Cake 1.x.Для использования 2.x:

$this->Auth->scope = array('User.active' =>true);

Затем вы можете оставить свой метод входа пустым, и AuthComponent добавит это дополнительное условие при аутентификации посетителя.

Вы можете увидеть вседополнительные свойства здесь: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers

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

0 голосов
/ 31 декабря 2010

На вашем контроллере Users или в том месте, где вы хотите его разместить (действие, на которое ссылается форма входа):

function login() {
    if ($this->Session->read('Auth.User')) {
        $active = $this->Auth->user('active');
        if ($active) {
            //(do stuff)
        }
        else {
            //(do other stuff)
        }
    }
}

Предполагается, что в вашей таблице «Пользователь» есть «активный» столбец, содержащий true или false (или 1 или 0). $ this-> Auth-> user () позволяет получить доступ к данным текущего пользователя. Больше информации здесь: http://book.cakephp.org/view/1264/user

...