Spaces:
Sleeping
Sleeping
File size: 1,204 Bytes
e53c2d7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
from pydantic import BaseModel, Field, EmailStr, field_validator
import re
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
|