Class: RailsBase::Mfa::Totp::ValidateTemporaryCode
- Inherits:
-
ServiceBase
- Object
- ServiceBase
- RailsBase::Mfa::Totp::ValidateTemporaryCode
- Includes:
- Helper
- Defined in:
- app/services/rails_base/mfa/totp/validate_temporary_code.rb
Instance Method Summary collapse
Methods included from Helper
#current_code, #lgp, #otp, #secret
Methods inherited from ServiceBase
inherited, #internal_validate, #service_base_logging
Methods included from ServiceLogging
#aletered_message, #class_name, #log, #log_prefix, #logger, #service_id
Instance Method Details
#call ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/services/rails_base/mfa/totp/validate_temporary_code.rb', line 10 def call valid_code = ValidateCode.(user: user, otp_code: otp_code, otp_secret: current_secret) if valid_code.failure? log(level: :debug, msg: "#{lgp} Code Validation failed. Will not persist temporary token") context.fail!(message: valid_code.) end log(level: :info, msg: "#{lgp} correctly validated authenticator code. Persisting") user. if user.otp_backup_codes.empty? backup_codes = user.generate_otp_backup_codes! log(level: :info, msg: "#{lgp} first authenticator added. Generating Backup Codes. Will also return backup codes to user") context.backup_codes = backup_codes else log(level: :warn, msg: "#{lgp} added additional Authenticator. Will NOT provide backup codes") end end |
#current_secret ⇒ Object
28 29 30 |
# File 'app/services/rails_base/mfa/totp/validate_temporary_code.rb', line 28 def current_secret @current_secret ||= user.reload.(safe: true, use_existing_temp: true)[:secret] end |
#validate! ⇒ Object
32 33 34 35 |
# File 'app/services/rails_base/mfa/totp/validate_temporary_code.rb', line 32 def validate! raise "Expected user to be a User. " unless User === user raise "Expected otp_code to be present" if otp_code.nil? end |