classSecurityController< ApplicationControllerdefloginif request.post?
login_if_valid {Account.authenticate_with_password(params[:email], params[:password])}elsif!params[:key].nil?
login_if_valid {Account.authenticate_with_key(params[:key])}endenddeflogout
session[:account]=nilraise"We should NOT be logged in after logging out!"if logged_in?
redirect_to home_url
endprivatedeflogin_if_validraise"Must pass a block to login_if_valid!"unlessblock_given?begin
account =yieldrescueAuthenticationError=> e
logger.debug "Authentication Error Occurred!"
session[:account]=nilraise"We should NOT be logged in after failing to log in!"if logged_in?
redirect_to login_url andreturnfalseend
session[:account]= account.id # this means we're logged in.
raise"We should be logged in after logging in!"unless logged_in?
redirect_to my_home_url
endend