Class: RailsBase::Mfa::Strategy::TimeBased

Inherits:
Base show all
Defined in:
app/services/rails_base/mfa/strategy/time_based.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#call, #mfa_not_required, #mfa_required, #user_prepend, #validate!

Methods inherited from ServiceBase

inherited, #internal_validate, #service_base_logging, #validate!

Methods included from ServiceLogging

#aletered_message, #class_name, #log, #log_prefix, #logger, #service_id

Class Method Details

.descriptionObject



5
6
7
# File 'app/services/rails_base/mfa/strategy/time_based.rb', line 5

def self.description
  "MFA is required every #{RailsBase.config.mfa.reauth_duration}"
end

Instance Method Details

#require_mfa?(mfa_last_used:) ⇒ Boolean

Returns:

  • (Boolean)


9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/services/rails_base/mfa/strategy/time_based.rb', line 9

def require_mfa?(mfa_last_used:, **)
  if mfa_last_used.nil?
    log(level: :info, msg: "#{user_prepend} : User has not succesfully logged into mfa")
    return true
  end

  log(level: :info, msg: "#{user_prepend} : User last used mfa #{mfa_last_used.utc} (vs #{Time.now.utc})")
  required_line = mfa_last_used.utc + RailsBase.config.mfa.reauth_duration
  log(level: :info, msg: "#{user_prepend} : User required to reauth after #{required_line}")
  status = required_line < Time.now.utc
  log(level: :info, msg: "#{user_prepend} : User required to reauth? #{status}")

  status
end