Skip to main content

A dynamic password validation system with preconfigured modes and rule-based design

Project description

🔐 Advanced Password Validator

License: MIT Python Version PyPI - Coming Soon


A dynamic, rule-based password validation system for Python. Supports configurable validation rules and pre-set security modes to suit different application needs.

🚀 Features

  • ✅ Rule-based architecture — plug & play validation rules
  • 🔁 Preconfigured modes: lenient, moderate, strict
  • 🔒 Supports: min/max length, symbols, blacklist, common password checks, etc.
  • 📂 Compare passwords to a list of over 30000 already-registered passwords for added security
  • 🧪 Designed for unit testing & integration

📦 Installation

pip install advanced_password_validator
poetry add advanced_password_validator

🌎 Code Usage:

An overview of a common coding example utilizing the advanced_password_validator to validate a password using customizable rules

from advanced_password_validator import PasswordValidator, Mode

# Instantiate a validator object:
validator = PasswordValidator(
    min_length = 8,                     # Integer / Defaults to None
    max_length = 65,                    # Integer / Defaults to None
    require_uppercase = True,           # Boolean / Defaults to False
    require_numbers = True,             # Boolean / Defaults to False
    require_symbols = True,             # Boolean / Defaults to False
    no_spaces = True,                   # Boolean / Defaults to False
    must_include_char = None,           # String / Defaults to None
    no_repeating_chars = 5,             # Integer / Defaults to None
    blacklisted_pattern = False,        # Boolean / Defaults to False
    not_common = False,                 # Boolean / Defaults to False
    mode = None                         # Mode (Enum) / Defaults to None
)

# validate against password strings:
password_valid1 = validator.validate("ThisIsSuperValid123+")[0]
password_valid2 = validator.validate("nouppercase123+")[0]
password_valid3 = validator.validate("NoNumbers++")[0]

print(password_valid1)  # <= Returns True
print(password_valid2)  # <= Returns False
print(password_valid3)  # <= Returns False

0️⃣ Return Type

The validate method returns a tuple: (bool, list)

  • [0] = a boolean value determining if the password passed the validation
  • [1] = a list of errors based on what Rules the password didn't pass (the list will be empty if validation passes)

📜 Rules Overview:

A rudimentary overview of the rules that can enabled for custom validation

Rules Description
min_length Specifies the minimum length required for the password (Integer)
max_length Specifies the maximum length possible for the password (Integer)
require_uppercase Specifies if the password must include at least 1 uppercase letter (Boolean)
require_numbers Specifies if the password must include at least 1 digit (Boolean)
require_symbols Specifies if the password must include at least 1 special character (Boolean)
no_spaces Specifies if the password can include spaces (Boolean)
must_include_char Specifies one of more required characters in the password (String)
no_repeating_chars Specifies how many sequentially, repeating characters can be included in the password (Integer)
blacklisted_pattern Specifies whether to check the password against a list of blacklisted patterns (Boolean)
not_common Specifies whether to check the password against a list of commonly used passwords (Boolean)
mode Specifies whether to use one of the 3 preconfigured modes (Mode)

🤖 Preconfigured Modes:

The advanced password validator package supports 3 preconfigured validator modes:

  1. Lenient
  2. Moderate
  3. Strict Each of these individual modes come preconfigured with different values, and are meant to be utilised for quick out-of-the-box solutions.
from advanced_password_validator import PasswordValidator, Mode

validator = PasswordValidator(
    mode=Mode.lenient
)
# The mode param takes in a Mode-object (Enum) - Mode.lenient, Mode.moderate, Mode.strict

Lenient

  • min_length = 8
  • max_length = 65

Moderate

  • min_length = 8
  • max_length = 65
  • require_uppercase = True
  • require_numbers = True
  • no_spaces = True
  • no_repeating_chars = 4

Strict

  • min_length = 12
  • max_length = 65
  • require_uppercase = True
  • require_numbers = True
  • require_symbols = True
  • no_spaces = True
  • no_repeating_chars = 3
  • blacklisted_pattern = True
  • not_common = True

📄 License Details:

This project is licensed under the MIT License – see the LICENSE section for further details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

advanced_password_validator-0.1.0.tar.gz (150.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

advanced_password_validator-0.1.0-py3-none-any.whl (147.9 kB view details)

Uploaded Python 3

File details

Details for the file advanced_password_validator-0.1.0.tar.gz.

File metadata

File hashes

Hashes for advanced_password_validator-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e8e156c65d0693c01301b279e749ca5c4dd668bad0c9817cccfa9e49cdd1b80f
MD5 1ba5fe60fdbfb9a11bd0943f05fea4f8
BLAKE2b-256 2b4b94f39eb4bdbafa2951004ba2a82d9aecf152e0f48a5d61659576707736bc

See more details on using hashes here.

File details

Details for the file advanced_password_validator-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for advanced_password_validator-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 97d5f253e03487a18d8fe1b4648cfae96e0f9155903124837305cb08ae76f950
MD5 9fa2b65c08d167b937f52d4b1c269b0c
BLAKE2b-256 788aaffad7184ec038d8e19fb6b02b078da01b4f6e313b1dc3c60aa444e69c49

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page