結論
config/initializer/rails_admin.rb
config.authenticate_with do
warden.authenticate! scope: :admin #←ここ
end
なら
warden.authenticated?(:admin) # boolean
or
current_admin.nil?
#:adminとcurrent_XXXはconfig/initializer/rails_admin.rb(rails_adminでの初期設定)による
説明
rails_adminを使用していて、「current_user(一般ユーザのwardenのスコープを:userにしてる場合)
で取れるユーザーではなく、rails_adminで使用しているユーザーで認証したい!」ということがあったので調べました。
rails_admin導入時にWhere do you want to mount rails_admin?
と聞かれてadmin
と答える場合が多いと思うのですが、この時に答えた値がrails_adminで使用するwardenスコープとして登録されます。
そして
config/initializer/rails_admin.rb
config.authenticate_with do
warden.authenticate! scope: :admin
end
この部分でrails_adminではこのスコープを使用しますよーと設定されているので、あとはこのスコープで認証されているかをチェックすれば良いのですね!
##参考
https://github.com/hassox/warden/wiki/Scopes
http://tagamidaiki.com/introduce-rails-admin-to-rails4/