Rails设计:登录定制

时间:2016-03-23 19:00:41

标签: ruby-on-rails ruby devise

我正在尝试验证管理员面板。

如果用户不是管理员,请取消登录请求。

默认情况下,如果电子邮件/密码错误。它呈现/users/sign_in

  def create
    super do |user|
      if user.role >= 30
        res
      else
        #Do not create sessions, authenticate
        flash[:notice] = "You do not have permission"
        redirect_to :back
      end
    end
  end

目前,无论我做了什么,它都会签到。

我如何定制?

谢谢。

2 个答案:

答案 0 :(得分:0)

标准方法是定义一个方法说

def if_user_admin
  return user.role < 30
end

并在控制器中添加:

before_action :if_user_admin

答案 1 :(得分:0)

好吧,这种方式适合我。

如果可能,我希望看到更好,更简单的解决方案。

def create
  user = User.find_by_email(params[:user][:email])
  if user.role >= 30
    super
  else
    render 'users/sessions/new'
  end
end