我正在构建一个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
我确信最好的方法是如何做到这一点,但我似乎无法找到它。
答案 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