class Devise::Strategies::TwoFactorAuthenticatable
Public Instance Methods
authenticate!()
click to toggle source
Calls superclass method
# File lib/devise_two_factor/strategies/two_factor_authenticatable.rb, line 5 def authenticate! resource = mapping.to.find_for_database_authentication(authentication_hash) # We authenticate in two cases: # 1. The password and the OTP are correct # 2. The password is correct, and OTP is not required for login # We check the OTP, then defer to DatabaseAuthenticatable if validate(resource) { validate_otp(resource) } super end fail(Devise.paranoid ? :invalid : :not_found_in_database) unless resource # We want to cascade to the next strategy if this one fails, # but database authenticatable automatically halts on a bad password @halted = false if @result == :failure end
validate_otp(resource)
click to toggle source
# File lib/devise_two_factor/strategies/two_factor_authenticatable.rb, line 22 def validate_otp(resource) return true unless resource.otp_required_for_login return if params[scope].nil? || params[scope]['otp_attempt'].nil? resource.validate_and_consume_otp!(params[scope]['otp_attempt']) end