leaguemanager.lib.validation

Production-ready field validation utilities with comprehensive security checks. (from Litestar-Fullstack)

Module Contents

Functions

validate_not_empty

validate_length

validate_no_control_chars

Remove/reject control characters.

validate_password_strength

Validate password meets production security requirements.

_is_common_password

Check if password is in common password list.

get_password_strength

Get detailed password strength analysis.

validate_email

Production-ready email validation with comprehensive checks.

validate_password

Production-ready password validation with security checks.

validate_name

Human name validation with proper handling of international names.

validate_username

Username validation with uniqueness and character restrictions.

validate_url

URL validation with security checks.

validate_slug

Slug validation for URL-safe identifiers.

validate_phone

International phone number validation.

Data

EMAIL_BASIC_PATTERN

EMAIL_DOUBLE_DOT_PATTERN

EMAIL_BLOCKED_PATTERNS

PASSWORD_UPPERCASE_PATTERN

PASSWORD_LOWERCASE_PATTERN

PASSWORD_DIGIT_PATTERN

PASSWORD_SPECIAL_PATTERN

PASSWORD_COMMON_PATTERN

PASSWORD_REPEATED_PATTERN

PASSWORD_SIMPLE_REPEATED_PATTERN

PASSWORD_SEQUENTIAL_PATTERN

PASSWORD_KEYBOARD_PATTERN

NAME_WHITESPACE_PATTERN

NAME_VALID_PATTERN

NAME_REPEATED_PATTERN

USERNAME_VALID_PATTERN

USERNAME_START_PATTERN

USERNAME_REPEATED_PATTERN

SLUG_VALID_PATTERN

PHONE_BASIC_PATTERN

PHONE_DIGITS_PATTERN

EMAIL_BLOCKED_DOMAINS

COMMON_PASSWORDS

PASSWORD_MIN_LENGTH

PASSWORD_MAX_LENGTH

PASSWORD_STRONG_LENGTH

PASSWORD_VERY_STRONG_LENGTH

PASSWORD_SCORE_STRONG

PASSWORD_SCORE_MEDIUM

PHONE_MIN_DIGITS

PHONE_MAX_DIGITS

EMAIL_MAX_LENGTH

EMAIL_MIN_LENGTH

EMAIL_LOCAL_PART_MAX_LENGTH

NAME_MAX_LENGTH

USERNAME_MIN_LENGTH

USERNAME_MAX_LENGTH

URL_MAX_LENGTH

SLUG_MAX_LENGTH

COMMON_PASSWORDS_HASHES

RESERVED_USERNAMES

ALLOWED_URL_SCHEMES

BLOCKED_URL_DOMAINS

SUSPICIOUS_URL_PATTERNS

Email

Password

Name

Username

Url

Slug

Phone

API

leaguemanager.lib.validation.EMAIL_BASIC_PATTERN

‘compile(…)’

leaguemanager.lib.validation.EMAIL_DOUBLE_DOT_PATTERN

‘compile(…)’

leaguemanager.lib.validation.EMAIL_BLOCKED_PATTERNS

None

leaguemanager.lib.validation.PASSWORD_UPPERCASE_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PASSWORD_LOWERCASE_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PASSWORD_DIGIT_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PASSWORD_SPECIAL_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PASSWORD_COMMON_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PASSWORD_REPEATED_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PASSWORD_SIMPLE_REPEATED_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PASSWORD_SEQUENTIAL_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PASSWORD_KEYBOARD_PATTERN

‘compile(…)’

leaguemanager.lib.validation.NAME_WHITESPACE_PATTERN

‘compile(…)’

leaguemanager.lib.validation.NAME_VALID_PATTERN

‘compile(…)’

leaguemanager.lib.validation.NAME_REPEATED_PATTERN

‘compile(…)’

leaguemanager.lib.validation.USERNAME_VALID_PATTERN

‘compile(…)’

leaguemanager.lib.validation.USERNAME_START_PATTERN

‘compile(…)’

leaguemanager.lib.validation.USERNAME_REPEATED_PATTERN

‘compile(…)’

leaguemanager.lib.validation.SLUG_VALID_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PHONE_BASIC_PATTERN

‘compile(…)’

leaguemanager.lib.validation.PHONE_DIGITS_PATTERN

‘compile(…)’

leaguemanager.lib.validation.EMAIL_BLOCKED_DOMAINS

None

leaguemanager.lib.validation.COMMON_PASSWORDS

None

leaguemanager.lib.validation.PASSWORD_MIN_LENGTH

12

leaguemanager.lib.validation.PASSWORD_MAX_LENGTH

128

leaguemanager.lib.validation.PASSWORD_STRONG_LENGTH

16

leaguemanager.lib.validation.PASSWORD_VERY_STRONG_LENGTH

20

leaguemanager.lib.validation.PASSWORD_SCORE_STRONG

7

leaguemanager.lib.validation.PASSWORD_SCORE_MEDIUM

5

leaguemanager.lib.validation.PHONE_MIN_DIGITS

7

leaguemanager.lib.validation.PHONE_MAX_DIGITS

15

leaguemanager.lib.validation.EMAIL_MAX_LENGTH

254

leaguemanager.lib.validation.EMAIL_MIN_LENGTH

3

leaguemanager.lib.validation.EMAIL_LOCAL_PART_MAX_LENGTH

64

leaguemanager.lib.validation.NAME_MAX_LENGTH

100

leaguemanager.lib.validation.USERNAME_MIN_LENGTH

3

leaguemanager.lib.validation.USERNAME_MAX_LENGTH

30

leaguemanager.lib.validation.URL_MAX_LENGTH

2048

leaguemanager.lib.validation.SLUG_MAX_LENGTH

100

leaguemanager.lib.validation.COMMON_PASSWORDS_HASHES

None

leaguemanager.lib.validation.RESERVED_USERNAMES

None

leaguemanager.lib.validation.ALLOWED_URL_SCHEMES

None

leaguemanager.lib.validation.BLOCKED_URL_DOMAINS

None

leaguemanager.lib.validation.SUSPICIOUS_URL_PATTERNS

[‘javascript:’, ‘data:’, ‘vbscript:’, ‘file:’]

exception leaguemanager.lib.validation.ValidationError(*args: Any, detail: str = '')

Bases: leaguemanager.lib.exceptions.ApplicationClientError

Custom validation error for all field validations.

Initialization

Initialize self. See help(type(self)) for accurate signature.

exception leaguemanager.lib.validation.PasswordValidationError(*args: Any, detail: str = '')

Bases: leaguemanager.lib.validation.ValidationError

Exception raised when password validation fails.

Initialization

Initialize self. See help(type(self)) for accurate signature.

leaguemanager.lib.validation.validate_not_empty(value: str) str
leaguemanager.lib.validation.validate_length(value: str, min_length: int = 0, max_length: int | None = None) str
leaguemanager.lib.validation.validate_no_control_chars(value: str) str

Remove/reject control characters.

Args: value: The string to validate

Raises: ValidationError: If control characters are found

Returns: The cleansed string without control characters

leaguemanager.lib.validation.validate_password_strength(password: str) None

Validate password meets production security requirements.

Args: password: The password to validate

Raises: PasswordValidationError: If password doesn’t meet requirements

leaguemanager.lib.validation._is_common_password(password: str) bool

Check if password is in common password list.

Args: password: The password to check

Returns: True if password is common, False otherwise

leaguemanager.lib.validation.get_password_strength(password: str) dict[str, Any]

Get detailed password strength analysis.

Args: password: The password to analyze

Returns: Dictionary with strength analysis

leaguemanager.lib.validation.validate_email(v: str) str

Production-ready email validation with comprehensive checks.

leaguemanager.lib.validation.Email

None

leaguemanager.lib.validation.validate_password(v: str) str

Production-ready password validation with security checks.

leaguemanager.lib.validation.Password

None

leaguemanager.lib.validation.validate_name(v: str) str

Human name validation with proper handling of international names.

leaguemanager.lib.validation.validate_username(v: str) str

Username validation with uniqueness and character restrictions.

leaguemanager.lib.validation.Name

None

leaguemanager.lib.validation.Username

None

leaguemanager.lib.validation.validate_url(v: str) str

URL validation with security checks.

leaguemanager.lib.validation.validate_slug(v: str) str

Slug validation for URL-safe identifiers.

leaguemanager.lib.validation.Url

None

leaguemanager.lib.validation.Slug

None

leaguemanager.lib.validation.validate_phone(v: str) str

International phone number validation.

leaguemanager.lib.validation.Phone

None