2016-05-02 5 views
0

Beispiele für Clearance-Schutzvorrichtungen scheinen alle zu überprüfen signed_in?. Dies ist für mich verwirrend, weil es so aussieht, als ob signed_in? nicht auf "true" gesetzt werden sollte, bis der Benutzer die Abräumschutzvorrichtungen passiert hat. Ich dachte, der ganze Sinn der Wachen zu verhindern, war Zeichen in.Warum überprüfen Clearance-Wächter signed_in?

class EmailConfirmationGuard < Clearance::SignInGuard 
    def call 
    if unconfirmed? 
     failure("You must confirm your email address.") 
    else 
    next_guard 
    end 
    end 

    def unconfirmed? 
    signed_in? && !current_user.confirmed_at 
    end 
end 

Antwort

1

Ich kann nicht aus einem Grund denken, warum Sie wollen würde die Wache Stapel laufen zu lassen, wenn der Benutzer nil ist, so dass ich bin mir nicht sicher . Ich denke, es ist wahrscheinlich ein Unfall der Umsetzung.

Wenn eine Sitzung schaffen wir dies tun:

def create 
    @user = authenticate(params) 

    sign_in(@user) do |status| 
    if status.success? 
     redirect_back_or url_after_create 
    else 
     flash.now.notice = status.failure_message 
     render template: "sessions/new", status: :unauthorized 
    end 
    end 
end 

Wenn authenticate kehrt nil wir den Stapel noch eingeben. Wir sollten wahrscheinlich darüber nachdenken, das nicht zu tun. Wenn Sie ein Problem im Clearance-Repository selbst öffnen, können wir dies als Änderung für Clearance 2.0

betrachten