ユーザーがメールアドレスを送信し、一時的なパスワードが送信され、ユーザーがリンクをクリックしてユーザーの編集機能に送信され、パスワードを覚えやすいものに変更する、パスワードを忘れるシナリオを設定しました。URLで一時パスを渡しています。
できることをデバッグしましたが、チェックアウトしているように見えますが、ログインしていないユーザーが編集メソッドにアクセスすることはまだ許可されていません。ログインしたユーザーに対してのみ承認するようです (パスワードを忘れてログインできない場合、私の問題を見ることができます)。
一時パスが URL の id パラメータと一致する場合、コントローラ メソッドへのアクセスをどのように許可しますか?
isAuthorized 関数:
public function isAuthorized($user = null)
{
if (isset($user['role']) && $user['role'] === 1 ) {
return true;
}
if ( $this->request->action === 'edit' ) {
$paramId = (int)$this->request->pass;
$logged_out_user = $this->Users->get($paramId);
if ( password_verify($this->request->query('pass'), $logged_out_user->password) === true ) {
return true;
} else {
return $this->redirect($this->Auth->redirectUrl());
}
}
return parent::isAuthorized($user);
}
サンプル リンク アドレス:http://localhost/site/users/edit/1?pass=o1eNbs5l7GlHlqvPAmU.