数か月前に 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');?>
私は AppController で設定したユーザーとしてプロモーター モデルを使用しています。
public $components = array(
'Auth'=>array(
...
'authenticate' => array(
'Form' => array('userModel' => 'Promoter')
),
'authorize' => array('Controller')
)
);
コントローラーでパスワードを検証することに頼ることができますが、それはあきらめることになります:)問題を明確にするためにさらにコードを提供する必要があるかどうか教えてください。
ありがとう。