"""Authentication schemas.""" import re from pydantic import BaseModel, EmailStr, Field, field_validator class LoginRequest(BaseModel): """Login request schema.""" email: EmailStr password: str class UserRegister(BaseModel): """User registration schema.""" email: EmailStr password: str = Field(..., min_length=8) confirm_password: str full_name: str = Field(..., min_length=2, max_length=200) organization: str = Field(..., min_length=2, max_length=200) @field_validator("password") @classmethod def validate_password(cls, v: str) -> str: """Validate password strength.""" if len(v) < 8: raise ValueError("Password must be at least 8 characters") if not re.search(r"[A-Z]", v): raise ValueError("Password must contain at least one uppercase letter") if not re.search(r"[a-z]", v): raise ValueError("Password must contain at least one lowercase letter") if not re.search(r"[0-9]", v): raise ValueError("Password must contain at least one digit") return v @field_validator("confirm_password") @classmethod def passwords_match(cls, v: str, info) -> str: """Ensure passwords match.""" if "password" in info.data and v != info.data["password"]: raise ValueError("Passwords do not match") return v class EmailVerificationRequest(BaseModel): """Email verification request schema.""" token: str