2026.06.05 frontend javítgatás és új belépési logika megvalósítva
This commit is contained in:
@@ -1,7 +1,46 @@
|
||||
# /opt/docker/dev/service_finder/backend/app/schemas/user.py
|
||||
import uuid
|
||||
from pydantic import BaseModel, EmailStr, field_validator, ConfigDict
|
||||
from typing import Optional
|
||||
from datetime import date
|
||||
from typing import Optional, Any
|
||||
from datetime import date, datetime
|
||||
|
||||
|
||||
class AddressResponse(BaseModel):
|
||||
"""Beágyazott cím adatok a PersonResponse számára."""
|
||||
zip: Optional[str] = None
|
||||
city: Optional[str] = None
|
||||
street_name: Optional[str] = None
|
||||
street_type: Optional[str] = None
|
||||
house_number: Optional[str] = None
|
||||
stairwell: Optional[str] = None
|
||||
floor: Optional[str] = None
|
||||
door: Optional[str] = None
|
||||
parcel_id: Optional[str] = None
|
||||
full_address_text: Optional[str] = None
|
||||
latitude: Optional[float] = None
|
||||
longitude: Optional[float] = None
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class PersonResponse(BaseModel):
|
||||
"""Beágyazott személyes adatok a UserResponse számára."""
|
||||
id: int
|
||||
id_uuid: uuid.UUID
|
||||
first_name: Optional[str] = None
|
||||
last_name: Optional[str] = None
|
||||
phone: Optional[str] = None
|
||||
mothers_last_name: Optional[str] = None
|
||||
mothers_first_name: Optional[str] = None
|
||||
birth_place: Optional[str] = None
|
||||
birth_date: Optional[datetime] = None
|
||||
identity_docs: Optional[Any] = None
|
||||
ice_contact: Optional[Any] = None
|
||||
is_active: bool = True
|
||||
address: Optional[AddressResponse] = None
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class UserBase(BaseModel):
|
||||
email: EmailStr
|
||||
@@ -10,6 +49,7 @@ class UserBase(BaseModel):
|
||||
is_active: bool = True
|
||||
region_code: str = "HU"
|
||||
|
||||
|
||||
class UserResponse(UserBase):
|
||||
id: int
|
||||
person_id: Optional[int] = None
|
||||
@@ -19,19 +59,56 @@ class UserResponse(UserBase):
|
||||
scope_id: Optional[str] = None
|
||||
ui_mode: str = "personal"
|
||||
active_organization_id: Optional[int] = None
|
||||
preferred_language: str = "hu"
|
||||
# Beágyazott személyes adatok (Person + Address)
|
||||
person: Optional[PersonResponse] = None
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class PersonUpdate(BaseModel):
|
||||
"""PUT /users/me/person séma - a személyes adatok szerkesztéséhez."""
|
||||
first_name: Optional[str] = None
|
||||
last_name: Optional[str] = None
|
||||
phone: Optional[str] = None
|
||||
mothers_last_name: Optional[str] = None
|
||||
mothers_first_name: Optional[str] = None
|
||||
birth_place: Optional[str] = None
|
||||
birth_date: Optional[date] = None
|
||||
|
||||
# Okmány adatok (identity_docs)
|
||||
identity_docs: Optional[Any] = None
|
||||
|
||||
# Cím adatok
|
||||
address_zip: Optional[str] = None
|
||||
address_city: Optional[str] = None
|
||||
address_street_name: Optional[str] = None
|
||||
address_street_type: Optional[str] = None
|
||||
address_house_number: Optional[str] = None
|
||||
address_stairwell: Optional[str] = None
|
||||
address_floor: Optional[str] = None
|
||||
address_door: Optional[str] = None
|
||||
address_hrsz: Optional[str] = None
|
||||
|
||||
|
||||
class ChangePasswordRequest(BaseModel):
|
||||
"""PUT /users/me/password séma - jelszó módosításhoz."""
|
||||
current_password: str
|
||||
new_password: str
|
||||
|
||||
|
||||
class UserUpdate(BaseModel):
|
||||
first_name: Optional[str] = None
|
||||
last_name: Optional[str] = None
|
||||
preferred_language: Optional[str] = None
|
||||
ui_mode: Optional[str] = None
|
||||
|
||||
|
||||
class ActiveOrganizationUpdate(BaseModel):
|
||||
organization_id: Optional[str] = None # UUID/string or None to revert to personal mode
|
||||
|
||||
|
||||
class UserWithTokenResponse(BaseModel):
|
||||
"""User response with new JWT token for organization switching"""
|
||||
user: UserResponse
|
||||
access_token: str
|
||||
token_type: str = "bearer"
|
||||
token_type: str = "bearer"
|
||||
|
||||
Reference in New Issue
Block a user