Sha256: c995a1a1c2b9573491d86f62f60582436499095c4664dc279cd33fae4fbda30d

Contents?: true

Size: 1.27 KB

Versions: 4

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module RailsBase::Mfa::Strategy
  class Base < RailsBase::ServiceBase
    delegate :user, to: :context
    delegate :force, to: :context
    delegate :mfa_type, to: :context
    delegate :mfa_last_used, to: :context

    def call
      log(level: :info, msg: "#{user_prepend} : MFA strategy against #{mfa_type}")

      if require_mfa?(user: user, mfa_type: mfa_type, mfa_last_used: mfa_last_used)
        mfa_required
      else
        if force
          log(level: :info, msg: "#{user_prepend} : MFA strategy was not required at this time. However -- Force option was passed in")
          mfa_required
        else
          mfa_not_required
        end
      end
    end

    def mfa_required
      log(level: :info, msg: "#{user_prepend} : MFA strategy is required at this time based on the strategy")
      context.request_mfa = true
    end

    def mfa_not_required
      log(level: :info, msg: "#{user_prepend} : MFA strategy is NOT required at this time")
      context.request_mfa = false
    end

    def user_prepend
      "[#{user.full_name} (#{user.id})]"
    end

    def validate!
      raise "Expected user to be a User. Received #{user.class}" unless User === user
      raise "Expected mfa_type to be a present" if mfa_type.nil?
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rails_base-0.82.0 app/services/rails_base/mfa/strategy/base.rb
rails_base-0.81.1 app/services/rails_base/mfa/strategy/base.rb
rails_base-0.81.0 app/services/rails_base/mfa/strategy/base.rb
rails_base-0.80.0 app/services/rails_base/mfa/strategy/base.rb