module Devise::Models::Zxcvbnable

Public Instance Methods

password_score() click to toggle source
# File lib/devise_zxcvbn/model.rb, line 17
def password_score
  @password_score = self.class.password_score(self)
end
password_weak?() click to toggle source
# File lib/devise_zxcvbn/model.rb, line 21
def password_weak?
  password_score.score < min_password_score
end

Protected Instance Methods

skip_password_complexity?() click to toggle source
# File lib/devise_zxcvbn/model.rb, line 27
def skip_password_complexity?
  !password_required?
end

Private Instance Methods

i18n_variables() click to toggle source
# File lib/devise_zxcvbn/model.rb, line 39
def i18n_variables
  {
    feedback: zxcvbn_feedback,
    crack_time_display: time_to_crack,
    score: password_score.score,
    min_password_score: min_password_score
  }
end
strong_password() click to toggle source
# File lib/devise_zxcvbn/model.rb, line 33
def strong_password
  if errors.messages.blank? && password_weak?
    errors.add :password, :weak_password, **i18n_variables
  end
end
time_to_crack() click to toggle source
# File lib/devise_zxcvbn/model.rb, line 55
def time_to_crack
  password_score.crack_times_display["offline_fast_hashing_1e10_per_second"]
end
zxcvbn_feedback() click to toggle source
# File lib/devise_zxcvbn/model.rb, line 48
def zxcvbn_feedback
  feedback = password_score.feedback.values.flatten.reject(&:empty?)
  return "Add another word or two. Uncommon words are better." if feedback.empty?

  feedback.join(". ").gsub(/\.\s*\./, ".")
end