| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- """
- Pydantic schemas for authentication endpoints.
- """
- from datetime import datetime
- from pydantic import BaseModel, EmailStr, Field
- class LoginRequest(BaseModel):
- """Login request schema."""
- email: EmailStr
- password: str = Field(..., min_length=8)
- class RegisterRequest(BaseModel):
- """Self-registration request schema."""
- email: EmailStr
- password: str = Field(..., min_length=8)
- full_name: str | None = None
- phone: str | None = None
- organization_name: str = Field(..., min_length=2)
- class TokenResponse(BaseModel):
- """Token response schema (login/refresh)."""
- access_token: str
- refresh_token: str
- token_type: str = "bearer"
- expires_in: int # seconds
- class RefreshRequest(BaseModel):
- """Refresh token request schema."""
- refresh_token: str
- class LogoutRequest(BaseModel):
- """Logout request schema."""
- refresh_token: str
- class UserInfo(BaseModel):
- """User information in token response."""
- id: int
- email: str
- full_name: str | None
- role: str
- organization_id: int | None
- email_verified: bool
- status: str
- class Config:
- from_attributes = True
- class OrganizationInfo(BaseModel):
- """Organization information in token response."""
- id: int
- name: str
- wifi_enabled: bool
- ble_enabled: bool
- status: str
- class Config:
- from_attributes = True
- class AuthResponse(BaseModel):
- """Complete auth response with tokens and user info."""
- access_token: str
- refresh_token: str
- token_type: str = "bearer"
- expires_in: int
- user: UserInfo
- organization: OrganizationInfo | None
- class PasswordResetRequest(BaseModel):
- """Password reset request schema."""
- email: EmailStr
- class PasswordResetConfirm(BaseModel):
- """Password reset confirmation schema."""
- token: str
- new_password: str = Field(..., min_length=8)
- class EmailVerifyRequest(BaseModel):
- """Email verification request schema."""
- token: str
|