Hammad712/Auth
0
1from pydantic import BaseModel, EmailStr, Field, validator2from typing import List, Optional3 4# === Authentication Models ===5class User(BaseModel):6 name: str = Field(..., min_length=3, max_length=50)7 email: EmailStr8 password: str9 10 @validator("password")11 def validate_password(cls, value):12 if len(value) < 8:13 raise ValueError("Password must be at least 8 characters long.")14 if not any(char.isdigit() for char in value):15 raise ValueError("Password must include at least one number.")16 if not any(char.isupper() for char in value):17 raise ValueError("Password must include at least one uppercase letter.")18 if not any(char.islower() for char in value):19 raise ValueError("Password must include at least one lowercase letter.")20 if not any(char in "!@#$%^&*()-_+=<>?/" for char in value):21 raise ValueError("Password must include at least one special character.")22 return value23 24class UserUpdate(BaseModel):25 name: Optional[str] = Field(None, min_length=3, max_length=50)26 email: Optional[EmailStr]27 password: Optional[str]28 29 @validator("password")30 def validate_password(cls, value):31 if value is not None:32 if len(value) < 8:33 raise ValueError("Password must be at least 8 characters long.")34 if not any(char.isdigit() for char in value):35 raise ValueError("Password must include at least one number.")36 if not any(char.isupper() for char in value):37 raise ValueError("Password must include at least one uppercase letter.")38 if not any(char.islower() for char in value):39 raise ValueError("Password must include at least one lowercase letter.")40 if not any(char in "!@#$%^&*()-_+=<>?/" for char in value):41 raise ValueError("Password must include at least one special character.")42 return value43 44class Token(BaseModel):45 access_token: str46 refresh_token: str47 token_type: str48 49class LoginResponse(Token):50 name: str51 avatar: Optional[str] = None52 53class TokenData(BaseModel):54 email: Optional[str] = None55 