Sha256: 31e2fc8a9ae0bda82c615f023766cd54244b2f6660ab4612237656cc6c0dcbdb
Contents?: true
Size: 1.25 KB
Versions: 55
Compression:
Stored size: 1.25 KB
Contents
module ThinkFeelDoEngine # Users Participant and User password validations class PasswordValidator WEAK_PASSWORD_MESSAGE = "is too weak" VALID_ENTROPY = 10 attr_reader :password, :password_token, :person, :token def initialize(password:, password_token:) @password = password @password_token = password_token find_or_intialize_person end def entropy_value valid_entropy? ? calculate_entroy : 0 end private def calculate_entroy StrongPassword::StrengthChecker .new(password) .calculate_entropy(use_dictionary: true) end def find_or_intialize_person @person ||= Participant.find_by_reset_password_token(token) || User.find_by_reset_password_token(token) || Participant.new end def set_password person.password = password person.password_confirmation = password end def token @token ||= Devise.token_generator.digest( Devise, :reset_password_token, password_token) end def valid_entropy? set_password !person .tap(&:valid?) .errors[:password] .include?(WEAK_PASSWORD_MESSAGE) end end end
Version data entries
55 entries across 55 versions & 1 rubygems