Ruby on Railsでsoceryのreset_passwordを使用した、パスワードリセット機能を実装したのですが、
その中で利用する「トークン」が聞きなれない言葉で、
遊戯王でそんなカードあったなーってレベルでした。
この記事では下記について、書いています。
最初に状況の説明
パスワードリセット画面でメールアドレスを入力
送信を押すとpasswordresetsコントローラーのcreateが走る
class PasswordResetsController < ApplicationControlle
def create
@user = User.find_by(email: params[:email])
@user&.deliver_reset_password_instructions!
redirect_to login_path, success: 'パスワードリセット手順を送信しました'
end
この中の@user&.deliver_reset_password_instructions!メソッドが実行した時点で binding.pryで止めると、Userカラムのreset_password_tokenに文字列が入ってきたのがわかると思います。 (一番下の行あたり)
7: def create
8: @user = User.find_by(email: params[:email])
9: binding.pry
=> 10: @user&.deliver_reset_password_instructions!
11: redirect_to login_path, success: 'パスワードリセット手順を送信しました'
12: end
[1] pry(#<PasswordResetsController>)> next
User Update All (3.9ms) UPDATE "users" SET "reset_password_token" = 'YLpP-sF4xiH1Y1KYpypN', "reset_password_email_sent_at" = '2021-09-25 05:45:05.692469' WHERE "users"."id" = ? [["id", 2]]