Правильно, у меня есть корень в исходном коде CakePHP, и я пришел к выводу, что он не делает ничего необычного при использовании облачных условий, он просто добавляет их в качестве дополнительных условий запроса. Он либо найдет пользователя, который совпадает с комбинацией имени пользователя и пароля, и с любыми условиями области видимости, или нет.
Одним из возможных решений было бы вручную войти пользователь и проверить на активированном поле следующим образом:
public function login()
{
if ($this->request->is('post')) {
if ($this->Auth->login($this->data['User'])) {
// check activated field
if ($this->Auth->user('activated') == 1) {
// user is activated
$this->redirect(...);
} else {
// user is not activated
// log the user out
$this->Auth->logout();
// redirect to an error page for inactive users
$this->redirect(..);
}
}
// redirect to an error page for wrong username/password
$this->redirect(..);
}
}
я должен уточнить, что вы не должны определять условия области действий при настройке компоненты проверки подлинности.
Надеюсь, это поможет!
Вы пытались выяснить, что происходит, когда вы вручную регистрируете пользователей при использовании '$ this-> Auth-> login ($ this-> request-> data ['User']);'. Там может быть объект возврата или исключение, которое вы можете перехватить перед визуализацией представления. –
К сожалению, этот метод возвращает булевский язык. – BIOS