LoginSignup
0
1

More than 3 years have passed since last update.

ActiveAdminの認証に相乗りする方法

Posted at

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に相乗りしたいと思ったが、
controlleraction ごとにrole管理するため
こちらはActiveAdminのbase_controllerを継承しないと難しそうだった。
ActiveAdminが使う CanCanCan を直接使うほうがよさそうだった。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1