Andrchest's picture
Single commit for HF2
365de9c
from enum import Enum
from pydantic import BaseModel, Field, EmailStr, field_validator
import re
class ThemeOptions(str, Enum):
LIGHT = "light"
DARK = "dark"
class LanguageOptions(str, Enum):
AR = "ar"
EN = "en"
RU = "ru"
class SUser(BaseModel):
email: EmailStr
password: str = Field(default=..., min_length=8, max_length=32)
@field_validator("password", mode="before")
def validate_password(cls, password_to_validate):
"""
Validates the strength of the password.
The password **must** contain:
- At least one digit
- At least one special character
- At least one uppercase character
- At least one lowercase character
"""
if not re.search(r"\d", password_to_validate):
raise ValueError("Password must contain at least one number.")
if not re.search(r"[!@#$%^&*()_+\-=\[\]{};:\'\",.<>?`~]", password_to_validate):
raise ValueError("Password must contain at least one special symbol.")
if not re.search(r"[A-Z]", password_to_validate):
raise ValueError("Password must contain at least one uppercase letter.")
if not re.search(r"[a-z]", password_to_validate):
raise ValueError("Password must contain at least one lowercase letter.")
return password_to_validate