如果不是管理员,Rails Admin config.authorize_with重定向用户

时间:2014-10-19 12:28:58

标签: ruby-on-rails-3 routes rails-admin

我有一个使用后端rails_admin gem的Rails 3.2.x应用程序。我还使用Devise进行身份验证,并在User模型上设置了一个角色字段,以说明用户是管理员还是员工。

我尝试做的是设置rails_admin的授权,因此如果您访问http://domain.com/admin,只有在current_user.role == "admin"重定向到我的家庭控制器索引路径{{1}时才会允许它}}

我已经设置了应该执行此操作的初始化程序,如果该角色不是管理员,它会拒绝管理员访问,但我收到以下错误:home_index_path。我认为它可能与No route matches {:controller=>"home"}有关,我在routes.rb安装了RailsAdmin行,但我不确定。最终,这应该检查角色以确保它等于admin,如果没有,redirect_to home_index_path并闪烁消息。

非常感谢任何帮助。

rails_admin.rb

routes.rb

1 个答案:

答案 0 :(得分:2)

经过一些谷歌搜索,我找到了issue来解决这个问题。看起来命名空间不同,所以重定向到`main_app.root_path就可以了。我仍然无法获得flash消息。有什么想法吗?

RailsAdmin.config do |config|
  config.authorize_with do |controller|
    unless current_user.role == 'admin'
      redirect_to main_app.root_path
      flash[:error] = "You are not an admin"
    end
  end
end