Я начал пробовать CakePHP несколько месяцев назад и сейчас пытаюсь создать «страницу смены пароля» для зарегистрированных пользователей. У меня есть форма, состоящая из этих полей: текущий пароль, новый пароль и подтверждение нового пароля. Для текущего пароля я хочу проверить, соответствует ли он паролю вошедшего в систему пользователя, как правило, в пользовательской модели. Я знаю, что могу получить информацию о вошедшем в систему пользователе с помощью этого: AuthComponent::user()
. Однако он предоставляет мне все поля модели, кроме пароля.
Я знаю, что Auth->login()
отвечает за настройку переменных сеанса для вошедшего в систему пользователя, но я не уверен, что я здесь делаю неправильно, что только поле пароля недоступно:
public function login() {
if ($this->request->is('POST')) {
if($this->Auth->login()) {
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash('Your username/password combination was incorrect.');
}
}
}
Вот мой вид входа:
<h2>Login</h2>
<?php
echo $this->Form->create('Promoter');
echo $this->Form->input('username');
echo $this->Form->input('password', array('type' => 'password'));
echo $this->Form->end('Login');?>
Я использую модель Promoter в качестве пользователя, который я установил в AppController:
public $components = array(
'Auth'=>array(
...
'authenticate' => array(
'Form' => array('userModel' => 'Promoter')
),
'authorize' => array('Controller')
)
);
Я могу прибегнуть к проверке пароля в контроллере, но это было бы отказом :) Пожалуйста, сообщите мне, нужно ли мне предоставить дополнительный код, чтобы прояснить проблему.
Спасибо.