lib/devise_zxcvbn/model.rb in devise_zxcvbn-1.1.1 vs lib/devise_zxcvbn/model.rb in devise_zxcvbn-1.1.2

- old
+ new

@@ -9,27 +9,40 @@ included do validate :not_weak_password, if: :password_required? end + def password_score + self.class.password_score(self) + end + private def not_weak_password - weak_words = if self.email - [self.email, *DeviseZxcvbn::EmailTokeniser.split(self.email)] - else - [] - end - - password_score = ::Zxcvbn.test(password, weak_words).score if password_score < min_password_score self.errors.add :password, :weak_password, score: password_score, min_password_score: min_password_score return false end end module ClassMethods Devise::Models.config(self, :min_password_score) + + def password_score(user, email=nil) + password = nil + weak_words = [] + + if user.is_a? String + password = user + else + password = user.password + email = user.email unless email + end + + weak_words = [email, *DeviseZxcvbn::EmailTokeniser.split(email)] if email + + ::Zxcvbn.test(password, weak_words).score + end end end end end