- Fix: Resolved SQLAlchemy Mapper error for 'UserVehicle' using string-based relationships. - Fix: Fixed Postgres Enum case sensitivity issue for 'userrole' (forcing lowercase 'user'). - Fix: Resolved ImportError for 'create_access_token' in security module. - Feature: Implemented 2-step registration protocol (Lite Register -> KYC Step). - Data: Added bank-level KYC fields (mother's name, ID/Driver/Boat/Pilot license expiry and categories). - Business: Applied private fleet isolation (is_transferable=False for individual orgs). - Docs: Updated Grand Master Book to v1.4 and added Developer Pitfalls guide.
46 lines
1.5 KiB
Python
Executable File
46 lines
1.5 KiB
Python
Executable File
from pydantic import BaseModel, EmailStr, Field, field_validator
|
|
from typing import Optional, List
|
|
from datetime import date
|
|
|
|
class UserRegister(BaseModel):
|
|
# --- AUTH ---
|
|
email: EmailStr = Field(..., example="teszt.user@profibot.hu")
|
|
password: Optional[str] = Field(None, min_length=8, description="Social login esetén üres maradhat")
|
|
|
|
# --- IDENTITY (KYC Step 2) ---
|
|
last_name: str = Field(..., min_length=2)
|
|
first_name: str = Field(..., min_length=2)
|
|
mothers_name: str = Field(..., description="Anyja születési neve")
|
|
birth_place: Optional[str] = None
|
|
birth_date: Optional[date] = None
|
|
|
|
# --- OKMÁNYOK (Banki szint) ---
|
|
id_card_number: Optional[str] = None
|
|
id_card_expiry: Optional[date] = None
|
|
|
|
driver_license_number: Optional[str] = None
|
|
driver_license_expiry: Optional[date] = None
|
|
driver_license_categories: List[str] = Field(default_factory=list, example=["B", "A"])
|
|
|
|
# --- SPECIÁLIS ENGEDÉLYEK ---
|
|
boat_license_number: Optional[str] = None
|
|
pilot_license_number: Optional[str] = None
|
|
|
|
# --- SYSTEM ---
|
|
region_code: str = Field(default="HU")
|
|
invite_token: Optional[str] = None
|
|
social_provider: Optional[str] = None
|
|
social_id: Optional[str] = None
|
|
|
|
@field_validator('region_code')
|
|
@classmethod
|
|
def validate_region(cls, v: str) -> str:
|
|
return v.upper() if v else "HU"
|
|
|
|
class Token(BaseModel):
|
|
access_token: str
|
|
token_type: str
|
|
|
|
class UserLogin(BaseModel):
|
|
email: EmailStr
|
|
password: str |