在创建会话轨道之前访问设计用户电子邮件4

时间:2016-12-12 19:07:40

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

我正在构建一个before_filter,用于检查设备用户是否接受了最新的条款和条件。条件。

我想弄清楚如何在允许用户访问该页面之前阻止登录并重定向到我的“接受新条款”页面。

我无法弄清楚如何以安全的方式访问电子邮件/密码以查找用户并检查users.has_expired_terms?

这是我正在尝试的用户:会话覆盖控制器

class Users::SessionsController < Devise::SessionsController
  before_action :expired_terms, only: [:create]
  #other filters redacted



  def expired_terms
    redirect_to reauthenticate_terms_path(self.resource) if self.resource.has_expired_terms?
  end

  def create
    self.resource = warden.authenticate!(auth_options)
    sign_in(resource_name, resource)
    yield resource if block_given?
    check_for_token("invite_token", session[:invite_token]) if session[:invite_token].present?
    if session[:invite_token].present?
      [:invite_token].each { |k| session.delete(k) }
    end
    redirect_to after_sign_in_path_for(resource)
  end
end

我确信最好的方法是如何做到这一点,但我似乎无法找到它。

1 个答案:

答案 0 :(得分:1)

您可以为任何已登录的用户添加$('.zoomContainer').remove(); 。所以,也许在你的ApplicationController中:

before_action :redirect_to_accept_terms

此外,请务必排除处理新术语逻辑的控制器操作,无论您决定采用哪种操作:

before_action :redirect_to_accept_terms

def redirect_to_accept_terms
  if current_user? && !current_user.accepted_new_terms?
     #redirect to accept new terms
  end
end