根据标记

时间:2017-01-13 06:54:52

标签: ruby-on-rails devise

我们最近在我们的用户模型中引入了一个名为toc_accepted的新布尔属性,默认情况下为false。如果Devise active_for_authentication?为true且此属性为false,则我们不应允许用户登录。相反,他们必须重定向到可以阅读并接受服务条款的页面。我怎么能做到这一点?

请注意,重定向仅在用户有资格登录且toc_accepted为false时才会发生。在所有其他情况下,我们应该遵循通常的程序。

1 个答案:

答案 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