Ruby on Rails 12章パスワード再設定(1)

Ruby on Rails 12章パスワード再設定(1)をやりました。

●パスワードのリセット
・ログインフォームへのリンクの追加

↓この辺のために、新しいController
・リセットフォーム(受付)の表示
・リセットトークンの発行&メール送信
・リセットフォーム(再設定)の表示
・リセットフォーム(再設定)で入力したPasswordに変更

●モデルの変更
・パスワードリセット用ダイジェスト(User)
・パスワードリセット用トークン(仮想/User)

●リセットフォーム(受付)
メールアドレス(=再設定するユーザの検索用)
→このアドレスに送ると7payと同じ。

●メールの送信
・userモデルに、UserMailer.password_reset(self).deliver_nowを呼ぶメール送信IFを作る
・mailers/user_mailer.rbを実装
・初期はdef password_resetなので該当IFがないのでエラー→(user)

●リセットフォーム(再設定)
・入力エレメントはパスワードと、パスワード確認用の2つ
・ただし、updateでpatchするときに、キーとなるメールアドレスが必要。

・tutorialのコードだと、hiddenにメールアドレスを隠せばよしになっている。、
・hidden_field_tagを使う。
・f.hidden_field → params[:user][:email]に入る。(フォーム部品)
・hidden_field_tag → params[:email]に入る

・ちなみにID(=トークン)はGETで渡す。


hiddenの他人のメールアドレスを指定してパスワードをジャックできないか?
→valid_userでトークン(=ID)とemailのペアをチェックしている。
→両方がわからないとジャックできないから、大丈夫。


一度再設定しても、2時間以内なら何度でも再設定できるらしい。

●パスワードの入力必須
@user.errors.add(:password, :blank)

コメントを残す

メールアドレスが公開されることはありません。