28 lines
853 B
Python
28 lines
853 B
Python
from typing import Optional
|
|
import re
|
|
from pydantic import EmailStr, validator
|
|
|
|
|
|
def validate_email(email: str) -> bool:
|
|
"""Валидация email"""
|
|
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
|
|
return bool(re.match(pattern, email))
|
|
|
|
|
|
def validate_password(password: str) -> tuple[bool, Optional[str]]:
|
|
"""Валидация пароля"""
|
|
if len(password) < 8:
|
|
return False, "Password must be at least 8 characters long"
|
|
|
|
if not re.search(r'[A-Z]', password):
|
|
return False, "Password must contain at least one uppercase letter"
|
|
|
|
if not re.search(r'[a-z]', password):
|
|
return False, "Password must contain at least one lowercase letter"
|
|
|
|
if not re.search(r'\d', password):
|
|
return False, "Password must contain at least one digit"
|
|
|
|
return True, None
|
|
|