尽管它(理论上)从未到达sign_in方法调用,但设计用户中的符号

时间:2015-04-01 01:58:18

标签: ruby-on-rails ruby devise

我有一个属性(已批准),我希望在允许登录之前考虑用户。

我已经覆盖会话控制器,其当前如下:

class SessionsController < Devise::SessionsController
  skip_after_filter :verify_authorized

  def create

    user = User.find_by_email(params[:user].try(:[], :email))

    unless user.approved?
      flash[:alert] = "Login fail. Account currently pending approval."
      redirect_to :back and return
    end

    resource = warden.authenticate!(auth_options)
    set_flash_message(:notice, :signed_in) if is_navigational_format?
    sign_in(resource_name, resource)
    respond_with resource, :location => after_sign_in_path_for(resource)
  end

  def failure
    head 403
  end
end

看着逻辑,我看到有一个&#34; redirect_to:back&#34;发生了,但似乎设计接管,无论如何登录用户并重定向到root(这是我设置为在登录时重定向到的)

我之前从未与设计合作过,这让我很生气。我应该在到达&#39; sign_in&#39;之前回来。部分但正在发生的事情是,无论我是否阻止,它仍会在用户中签名。

如果user.approved == false,我该如何拦截该登录?

提前感谢!

1 个答案:

答案 0 :(得分:0)

虽然不是同一个问题,但这个问题的最佳答案适用于此并为我解决了问题。

Check if user is active before allowing user to sign in with devise (rails)

相关问题