18F/identity-idp

View on GitHub
app/forms/backup_code_setup_form.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

class BackupCodeSetupForm
  include ActiveModel::Model

  validates :user, presence: true

  def initialize(user)
    @user = user
  end

  def submit
    FormResponse.new(success: valid?, errors: errors, extra: extra_analytics_attributes)
  end

  private

  attr_reader :success
  attr_accessor :user

  def mfa_user
    @mfa_user ||= MfaContext.new(user)
  end

  def extra_analytics_attributes
    {
      mfa_method_counts: mfa_user.enabled_two_factor_configuration_counts_hash,
      enabled_mfa_methods_count: mfa_user.enabled_mfa_methods_count,
      pii_like_keypaths: [[:mfa_method_counts, :phone]],
    }
  end
end