Как ограничить доступ к панели администратора rails_admin?

У меня есть простое приложение, в котором я использовал устройство для аутентификации. Я только что добавил гем rails_admin

https://github.com/sferik/rails_admin

Это позволит легко получить доступ к данным через маршрут /admin. я также добавил

RailsAdmin.config do |config|
  config.authenticate_with do
    warden.authenticate! scope: :admin
  end
  config.current_user_method(&:current_admin)
end

для инициализации, поэтому теперь перед доступом к /admin требуется аутентификация.

Но я хочу еще одно ограничение. У меня есть свойство администратора в моей модели пользователя. Я меняю свойство администратора только через консоль. Я хочу ограничить доступ к панели /admin только для пользователей, у которых для свойства admin установлено значение true.

В настоящее время любой пользователь может получить доступ к панели /admin, предоставляемой гемом rails_admin. Как я могу достичь этой цели? Я ценю любую помощь! Спасибо!


person kofhearts    schedule 30.05.2017    source источник


Ответы (1)


Я предлагаю вам написать эту пользовательскую авторизацию, так как у вас есть поле boolean для администратора.

config.authorize_with do |controller|
  if current_user.nil?
    redirect_to main_app.new_account_session_path, flash: {error: 'Please Login to Continue..'}
  elsif !current_user.admin?
    redirect_to main_app.root_path, flash: {error: 'You are not Admin bro!'}
  end
end
person Md. Farhan Memon    schedule 30.05.2017
comment
хорошо, спасибо, это помогло github.com/sferik/rails_admin/wiki/Authorization - person kofhearts; 30.05.2017
comment
Идеальное решение, искал это, - person DivinesLight; 18.12.2020
comment
@md-farhan-memon добавлен в вики Rails Admin, так как он отсутствует. github.com/sferik/rails_admin/wiki/Вручную - person DivinesLight; 18.12.2020