Railsの管理画面でActiveAdminを使う機会が多いが、
管理機能を増設したい場合がある。
ActiveAdminに機能を追加することもできるが、
DSLが面倒だったりするので独自のControllerを作って認証だけActiveAdminと
一緒にしたい場合がある。
ログイン中のActiveAdminのユーザーの取得メソッドは、
config/initializer/active_admin.rb
に
ActiveAdmin.setup do |config|
config.current_user_method = :current_admin_user
end
で定義されているので、
以下のようなhelperを定義して、
def login?
send(ActiveAdmin.application.current_user_method.to_sym).present?
end
def admin_user_signed_in!
render(inline: 'Forbidden', status: :forbidden) unless login?
end
追加したcontrollerで呼び出せば、
class HogeController < ApplicationController
before_action admin_user_signed_in!
end
ActiveAdminのユーザーをしてログインしていればアクセスできるし、
してなければ403になる。
同様にrole管理もActiveAdminに相乗りしたいと思ったが、
controller
、action
ごとにrole管理するため
こちらはActiveAdminのbase_controllerを継承しないと難しそうだった。
ActiveAdminが使う CanCanCan
を直接使うほうがよさそうだった。