【发布时间】:2016-12-12 19:07:39
【问题描述】:
我正在构建一个 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
我确信有一个关于如何做到这一点的最佳做法,但我似乎找不到。
【问题讨论】:
-
我不知道我会回电。这适用于已经注册但需要重新验证新条款和条件的用户
标签: ruby-on-rails ruby-on-rails-4 devise