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