class PasswordBreachAlert::Checker

Attributes

breaches_filter[R]
breaches_policy[R]

Public Class Methods

default_breaches_filter() click to toggle source
# File lib/password_breach_alert/checker.rb, line 8
def self.default_breaches_filter
  options = Devise.breaches_filter_options.call.reverse_merge(api: PasswordBreachAlert::Api::Breachedaccount.new)
  Devise.breaches_filter.constantize.new(options)
end
default_breaches_policy() click to toggle source
# File lib/password_breach_alert/checker.rb, line 13
def self.default_breaches_policy
  Devise.breaches_policy.constantize.new
end
new(breaches_filter: self.class.default_breaches_filter, breaches_policy: self.class.default_breaches_policy) click to toggle source
# File lib/password_breach_alert/checker.rb, line 17
def initialize(breaches_filter: self.class.default_breaches_filter, breaches_policy: self.class.default_breaches_policy)
  @breaches_filter = breaches_filter
  @breaches_policy = breaches_policy
end

Public Instance Methods

call(users) click to toggle source
# File lib/password_breach_alert/checker.rb, line 22
def call(users)
  new_breaches = fetch_and_create_new_breaches
  breaches = all_breaches

  users.each do |user|
    user_breaches = breaches_filter.call(user, new_breaches, breaches)

    breaches_policy.call(user, user_breaches)
  end
end

Private Instance Methods

all_breaches() click to toggle source
# File lib/password_breach_alert/checker.rb, line 41
def all_breaches
  PasswordBreachAlert::Models::Breach.all
end
fetch_and_create_new_breaches() click to toggle source
# File lib/password_breach_alert/checker.rb, line 35
def fetch_and_create_new_breaches
  api_breaches = PasswordBreachAlert::Api::Breach.new.call

  PasswordBreachAlert::Models::Breach.create_new_from_api(api_breaches)
end