如何限制对rails_admin管理面板的访问?

时间:2017-05-30 02:58:47

标签: ruby-on-rails devise rails-admin

我有一个简单的应用程序,我使用了设计进行身份验证。我刚刚添加了rails_admin gem

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属性。我想限制只有admin属性设置为true的用户访问/ admin面板。

目前,任何用户都可以访问rails_admin gem提供的/ admin面板。我怎样才能实现这一目标?我感谢任何帮助!谢谢!

1 个答案:

答案 0 :(得分: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