geo/backend/app/schemas/auth.py

62 lines
1.2 KiB
Python

import uuid
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, EmailStr, Field
class UserRegister(BaseModel):
email: EmailStr
password: str = Field(min_length=8)
name: str = Field(min_length=1, max_length=100)
class UserLogin(BaseModel):
email: EmailStr
password: str
class ForgotPasswordRequest(BaseModel):
email: EmailStr
class ResetPasswordRequest(BaseModel):
token: str
new_password: str = Field(..., min_length=8)
class VerifyEmailRequest(BaseModel):
email: EmailStr
code: str = Field(..., min_length=6, max_length=6)
class ChangePasswordRequest(BaseModel):
old_password: str
new_password: str = Field(..., min_length=8)
class UpdateProfileRequest(BaseModel):
name: Optional[str] = None
avatar_url: Optional[str] = None
class UserResponse(BaseModel):
id: uuid.UUID
email: str
name: str | None
plan: str
max_queries: int
is_active: bool
email_verified: bool
is_admin: bool
avatar_url: str | None
created_at: datetime
model_config = {"from_attributes": True}
class TokenResponse(BaseModel):
access_token: str
token_type: str
user: UserResponse