67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
from pydantic import BaseModel, EmailStr, Field
|
|
from typing import Optional, Dict, Any
|
|
from datetime import date
|
|
|
|
# --- STEP 1: LITE REGISTRATION ---
|
|
class UserLiteRegister(BaseModel):
|
|
email: EmailStr
|
|
password: str = Field(..., min_length=8)
|
|
first_name: str
|
|
last_name: str
|
|
region_code: str = "HU"
|
|
lang: str = Field("hu", description="Választott nyelv kódja")
|
|
timezone: str = Field("Europe/Budapest", description="Felhasználó időzónája")
|
|
|
|
class UserLogin(BaseModel):
|
|
email: EmailStr
|
|
password: str
|
|
|
|
# --- STEP 2: KYC & ONBOARDING ---
|
|
class ICEContact(BaseModel):
|
|
name: str
|
|
phone: str
|
|
relationship: Optional[str] = None
|
|
|
|
class DocumentDetail(BaseModel):
|
|
number: str
|
|
expiry_date: date
|
|
|
|
class UserKYCComplete(BaseModel):
|
|
phone_number: str
|
|
birth_place: str
|
|
birth_date: date
|
|
mothers_last_name: str
|
|
mothers_first_name: str
|
|
address_zip: str
|
|
address_city: str
|
|
address_street_name: str
|
|
address_street_type: str
|
|
address_house_number: str
|
|
address_hrsz: Optional[str] = None
|
|
identity_docs: Dict[str, DocumentDetail]
|
|
ice_contact: ICEContact
|
|
preferred_currency: Optional[str] = Field("HUF", max_length=3)
|
|
|
|
# --- COMMON & SECURITY ---
|
|
class PasswordResetRequest(BaseModel):
|
|
email: EmailStr
|
|
|
|
class PasswordResetConfirm(BaseModel):
|
|
email: EmailStr
|
|
token: str
|
|
password: str = Field(..., min_length=8)
|
|
password_confirm: str = Field(..., min_length=8)
|
|
|
|
class Token(BaseModel):
|
|
access_token: str
|
|
token_type: str
|
|
is_active: bool
|
|
|
|
class TokenPayload(BaseModel):
|
|
"""JWT Token payload struktúrája validációhoz."""
|
|
sub: Optional[str] = None
|
|
role: Optional[str] = None
|
|
rank: Optional[int] = 0
|
|
scope_level: Optional[str] = None
|
|
scope_id: Optional[str] = None
|
|
region: Optional[str] = None |