from django.utils.translation import gettext_lazy as _
from pydantic import BaseModel, EmailStr, Field
class LoginRequestSchema(BaseModel):
"""Схема запроса для аутентификации пользователя."""
email: EmailStr = Field(
description=_("Unique electronic address of the user registered in the system."),
examples=["vfx_artist@paprika.studio"]
)
password: str = Field(
min_length=8,
max_length=128,
description=_("User password. Must be at least 8 characters long."),
examples=["p@ssw0rd_vfx_2026"]
)
class LoginResponseSchema(BaseModel):
"""Схема успешного ответа при аутентификации (Access токен)."""
access: str = Field(
description=_("Short-lived JWT Access token. Passed in the 'Authorization: Bearer' header."),
examples=["eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."]
)
class RefreshRequestSchema(BaseModel):
"""Схема обновления токена. Тело должно быть пустым, токен извлекается из куки."""
class Config:
extra = "forbid"
class RefreshResponseSchema(BaseModel):
"""Схема успешного обновления сессии."""
access: str = Field(
description=_("New valid JWT Access token."),
examples=["eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.new..."]
)
class LogoutRequestSchema(BaseModel):
"""Схема запроса для выхода из системы (пустое тело)."""
class Config:
extra = "forbid"
class LogoutResponseSchema(BaseModel):
"""Схема ответа при успешном выходе из системы."""
detail: str = Field(
default="Successfully logged out.",
description=_("Text confirmation of successful session termination."),
examples=["Successfully logged out."]
)