我们最近在我们的用户模型中引入了一个名为toc_accepted
的新布尔属性,默认情况下为false
。如果Devise active_for_authentication?
为true且此属性为false,则我们不应允许用户登录。相反,他们必须重定向到可以阅读并接受服务条款的页面。我怎么能做到这一点?
请注意,重定向仅在用户有资格登录且toc_accepted
为false时才会发生。在所有其他情况下,我们应该遵循通常的程序。
答案 0 :(得分:0)
sessions_controller
中可以覆盖routes.rb
。
devise_for 'Myapp::V1::System::User', at: 'myapp/v1/system/auth/sign_in', controllers: {
sessions: 'myapp/v1/system/overrides/sessions'
}
在sessions_controller中,您可以检查用户是否已接受ToC。
# POST /resource/sign_in
def create
# Let's check for ToC Accept
check_for_toc_accept()
self.resource = warden.authenticate!(auth_options)
set_flash_message!(:notice, :signed_in)
sign_in(resource_name, resource)
yield resource if block_given?
respond_with resource, location: after_sign_in_path_for(resource)
end