devise
Rails で認証の仕組みを実装する時に利用する devise、便利ですよね。
細かいことですが、掲題の件をどのように実装するか確認したので、自分用のメモ。
Devise::Strategies::Rememberable
の authenticate!
メソッドで cookie の内容を確認して認証しているので、その中で session
にフラグを立てる実装にしました。
用途としては、ユーザー情報変更等の処理の前に、このフラグが立っていたら、パスワードを再入力してもらう、ということが考えられます。
lib/rememberable_decorator.rb
require "devise/strategies/rememberable"
class Devise::Strategies::Rememberable < Devise::Strategies::Authenticatable
def authenticate!
resource = mapping.to.serialize_from_cookie(*remember_cookie)
unless resource
cookies.delete(remember_key)
return pass
end
if validate(resource)
session[:login_via_cookie] = true
success!(resource)
end
end
end
Warden::Strategies.add :rememberable, Devise::Strategies::Rememberable
このファイルを initilaizer 辺りで require
してオーバーライドすればOK。
devise 3.2.4 で確認済みです。