module MultiFactorAuth::Methods

Public Class Methods

extended(base) click to toggle source
# File lib/multi_factor_auth/methods.rb, line 11
def self.extended base
  base.class_eval do
    def qr_code email, opts = {}
      self.singleton_class.generate_qr_code provisioning_uri(email), opts
    end
  end
end

Public Instance Methods

generate_qr_code(link, opts = {}) click to toggle source
# File lib/multi_factor_auth/methods.rb, line 34
def generate_qr_code link, opts = {}
  RQRCode::QRCode.new(link, {level: :h}.merge(opts))
end
generate_secret(str_or_arr = nil) click to toggle source
# File lib/multi_factor_auth/methods.rb, line 19
def generate_secret str_or_arr = nil
  case str_or_arr
  when Array
    Base32.encode Digest::MD5.hexdigest("#{str_or_arr.join(SecureRandom.uuid)}")
  when String
    Base32.encode Digest::MD5.hexdigest(str_or_arr)
  else
    random_base32
  end
end
qr_code(email, opts = {}) click to toggle source
# File lib/multi_factor_auth/methods.rb, line 13
def qr_code email, opts = {}
  self.singleton_class.generate_qr_code provisioning_uri(email), opts
end
random_base32() click to toggle source
# File lib/multi_factor_auth/methods.rb, line 30
def random_base32
  ROTP::Base32.random_base32
end