要約すると
DefaultPasswordHasherクラスのcheck()メソッドで照合する。
序章
CakePHP3で作成したサイト。
例えばパスワードの変更時に、現在のパスワードをチェックしたいときー(©551)
下記の風味ののページを作りたい、と。
んで、このときに、どうやって現在のパスワードのチェックを行えばよいのでしょうか?ってなったんですよ。
条件
・ユーザー登録時に、DefaultPasswordHasher->hash()しています。
・現在のパスワード欄にあるinputのnameは、old_passwordだとします。
混迷期
あ、そうか。
ログインのところでやってるわ。
$this->Auth->identify();
の1行で処理されてる??
IDとパスワードをPOSTしたら、この1行でデータベースと照合してくれるの??
マジ簡単。
でも、俺がやりたいのはそういうことじゃない。
一筋の光明
ググる。ググる。くくる(それはたこ焼き屋)。
そしてたどり着いた。
また、__DefaultPasswordHasher__のcheckメソッドを使うんだねグーグル先生!?じゃなくて、記事書いた人!ありがとう、丸パクりする!!
成果物
controllerにこんな感じで書いた。
モデルでどうとかいう記事があったけど、俺にはそんな高尚な処理書けない!
MVCモデルが破綻してるけど気にしない!って豪胆な性格の人はどうぞ。
// クラスの先頭の方で
use Cake\Auth\DefaultPasswordHasher;
~中略~
// 元のパスワード。ハッシュ化されているもの
$db_password = DBからパスワードを取ってくるメソッド();
// 入力された現在のパスワード
$inputed_password = $this->request->getData('old_password');
$hasher = new DefaultPasswordHasher();
// パスワードが一致してたらtrueが返る!
return $hasher->check($inputed_password, $db_password);
~後略~
できてよかった。