使用验证设计和Rails管理特定路线(Authenticate using Devise and R

2019-08-17 07:24发布

我使用Rails的管理,并制定了管理员和用户模型。 我增加了一列“admin”的用户模型,以表明其身份。

config/routes.rb ,我安装/adminRailsAdmin:Engine

我只想让current_user.admin用户访问/admin ,否则,将用户重定向到主页。

我如何能在干净的代码来实现这一点?

Answer 1:

在您的管理控制器:

class MyAdminController < ApplicationController
  before_filter :authenticate_user!
  before_filter :require_admin
end

您的应用程序控制器上:

class ApplicationController < ActionController::Base


  def require_admin
    unless current_user && current_user.role == 'admin'
      flash[:error] = "You are not an admin"
      redirect_to root_path
    end        
  end
end

对不起,没注意它与轨道管理员,你可以这样做:

# in config/initializer/rails_admin.rb

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


文章来源: Authenticate using Devise and Rails Admin for particular routes