一杯記事になっているので、わざわざここにきて探す人はいないと思うけど、今後自分が役に立つ可能性もあるのでメモ。
・AuthComponent使って認証する
→ユーザー作成時にvalidateしたい、がすでにコントローラーにわたってきたときに、パスワードはハッシュ化されてしまっているので、素の文字列でvalidateをかけることはできない。(ページにパスワードが再セットされるとハッシュ化されているのでさらに変なことに…)
ので。ここの記事で記載されているこちらを参考にさせていただいた。からくりを知ってしまえば、さした問題じゃないんだけど、これ結構大事なんだよね。
validateでメールアドレスやパスワードの文字列チェックを行いたいんだけど、AuthComponentの関係でパスワードのチェックから外れてしまう、ということで、上記の英語サイトでは
・フォームに書かれているIDとパスワードの、パスワードについては、名前を変える。
(もし、テーブルにpasswordっていうフィールド使ってるんだったら、フォームの名前はたとえばpasswrdとかにする)
で、モデルにはpasswrdについてのvalidateを設定する。←これポイント
ユーザを作成するadd()ではユーザのデータを作成するんだけど、そのときに
$this->data[‘User’][‘password’] = $this->Auth->password($this->data[‘User’][‘passwrd’]);
このように、本来のテーブルで所持しているpasswordに、フォームでのpasswrdのハッシュ化したものをセットする。
そしてその後、ユーザ情報をsave()する。
(つまり、ハッシュ化したパスワード情報はここでセットされるので、タイミングがわかる!)
つまりcakephpのvalidateも使用しながら、きちんとパスワードもハッシュ化するということを実現しているんじゃないかと。
こちらの記事にはさらに有効な記事がかいてあるようなのですが、今日はここまで…。何はともあれ、validateの恩恵を受けることができたので満足です。