Sha256: 5c6b21cbb39dc2739a60cd4ecacf90ba6f7129405ae63f346fd2772525157746

Contents?: true

Size: 1.3 KB

Versions: 13

Compression:

Stored size: 1.3 KB

Contents

module PasswordStrength
  module Validators
    # Validates a Windows 2008 password against the following rules:
    #
    # * Passwords cannot contain the user's account name or parts of the user's full name that exceed two consecutive characters.
    # * Passwords must be at least six characters in length.
    # * Passwords must contain characters from three of the following four categories: English uppercase characters (A through Z); English lowercase characters (a through z); Base 10 digits (0 through 9); Non-alphabetic characters (for example, !, $, #, %).
    #
    # Reference: http://technet.microsoft.com/en-us/library/cc264456.aspx
    #
    class Windows2008 < PasswordStrength::Base
      def test
        return invalid! if password.size < 6

        variety = 0
        variety += 1 if password =~ /[A-Z]/
        variety += 1 if password =~ /[a-z]/
        variety += 1 if password =~ /[0-9]/
        variety += 1 if password =~ PasswordStrength::Base::SYMBOL_RE

        return invalid! if variety < 3
        return invalid! if password_contains_username?

        strong!
      end

      def password_contains_username?
        0.upto(password.size - 1) do |i|
          substring = password[i, 3]
          return true if username.include?(substring)
        end

        false
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
password_strength-1.1.4 lib/password_strength/validators/windows2008.rb
password_strength-1.1.3 lib/password_strength/validators/windows2008.rb
password_strength-1.1.2 lib/password_strength/validators/windows2008.rb
password_strength-1.1.1 lib/password_strength/validators/windows2008.rb
password_strength-1.1.0 lib/password_strength/validators/windows2008.rb
password_strength-1.0.2 lib/password_strength/validators/windows2008.rb
password_strength-1.0.1 lib/password_strength/validators/windows2008.rb
password_strength-1.0.0 lib/password_strength/validators/windows2008.rb
password_strength-0.4.1 lib/password_strength/validators/windows2008.rb
password_strength-0.4.0 lib/password_strength/validators/windows2008.rb
password_strength-0.3.2 lib/password_strength/validators/windows2008.rb
password_strength-0.3.1 lib/password_strength/validators/windows2008.rb
password_strength-0.3.0 lib/password_strength/validators/windows2008.rb