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-1.0.1.tar.gz (151.2 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-1.0.1-py3-none-any.whl (148.7 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for advanced_password_validator-1.0.1.tar.gz
Algorithm Hash digest
SHA256 0dce9e21ff890dfb80f688474e0b2958615171a112d84b317385cf770a2aab4a
MD5 95cd99f2a89aeec9a4a6faf2f04ab18b
BLAKE2b-256 9d49cb0d8dc710d2ea932c6158b42b005c0d4177712fe1b3f9580a281462dba9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for advanced_password_validator-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 94a4a366ad2c7fd3b9185849081fa7cbfa1b672ba962132dae8cde295914eee4
MD5 7d495ad6facdff116c5bb46fcfd689c3
BLAKE2b-256 eacd00a4ae5c0ae49637b6a2d96fae0e8217fd4d43f8890c494288525e7e8d0b

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