Initial commit - Migrated to Dev environment
This commit is contained in:
52
backend/app/schemas/user.py
Executable file
52
backend/app/schemas/user.py
Executable file
@@ -0,0 +1,52 @@
|
||||
from pydantic import BaseModel, EmailStr, field_validator, ConfigDict
|
||||
from typing import Optional
|
||||
from datetime import date
|
||||
|
||||
# Alap adatok, amik mindenhol kellenek
|
||||
class UserBase(BaseModel):
|
||||
email: EmailStr
|
||||
first_name: Optional[str] = None
|
||||
last_name: Optional[str] = None
|
||||
is_active: Optional[bool] = True
|
||||
is_superuser: bool = False
|
||||
region_code: str = "HU"
|
||||
|
||||
# --- REGISZTRÁCIÓ ---
|
||||
class UserRegister(UserBase):
|
||||
password: str
|
||||
birthday: Optional[date] = None
|
||||
is_company: bool = False
|
||||
company_name: Optional[str] = None
|
||||
tax_number: Optional[str] = None
|
||||
|
||||
@field_validator('email')
|
||||
@classmethod
|
||||
def block_temporary_emails(cls, v: str) -> str:
|
||||
blacklist = ['mailinator.com', '10minutemail.com', 'temp-mail.org', 'guerrillamail.com']
|
||||
domain = v.split('@')[-1].lower()
|
||||
if domain in blacklist:
|
||||
raise ValueError('Ideiglenes email szolgáltató nem engedélyezett!')
|
||||
return v
|
||||
|
||||
@field_validator('tax_number')
|
||||
@classmethod
|
||||
def validate_tax_id(cls, v: Optional[str], info) -> Optional[str]:
|
||||
if info.data.get('is_company') and (not v or len(v) < 8):
|
||||
raise ValueError('Cég esetén az adószám első 8 karaktere kötelező!')
|
||||
return v
|
||||
|
||||
# --- VÁLASZ (Ezt hiányolta a rendszer!) ---
|
||||
class UserResponse(UserBase):
|
||||
id: int
|
||||
is_company: bool
|
||||
company_name: Optional[str] = None
|
||||
|
||||
# Pydantic V2 konfiguráció az ORM (SQLAlchemy) támogatáshoz
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
# Frissítéshez használt séma
|
||||
class UserUpdate(BaseModel):
|
||||
password: Optional[str] = None
|
||||
first_name: Optional[str] = None
|
||||
last_name: Optional[str] = None
|
||||
email: Optional[EmailStr] = None
|
||||
Reference in New Issue
Block a user