2016-12-12 5 views
0

私は、Deviseユーザーが最新の条件&を受け入れるかどうかをチェックするbefore_filterを構築しています。セッションを作成する前にユーザの電子メールを作成するrails 4

私はサインインをブロックし、「新しい条件を受け入れる」ページにリダイレクトする方法を理解しようとしています。

ユーザーを見つけて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

何I電話をかける。これは既に登録されているが、新しい利用規約を再認証する必要があるユーザー向けです – NothingToSeeHere

答えて

1

ログインしたユーザーにbefore_action :redirect_to_accept_termsを追加できます。だから、おそらくあなたのApplicationControllerにに:また

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 

、あなたはそれが行く決めるところはどこでも、あなたの新しい用語のロジックを扱うコントローラのアクションを除外するようにしてください:私は知りません

skip_before_action :redirect_to_accept_terms, only: [:accept_new_terms] 
関連する問題