No canonical snake_case/camelCase serialization policy
This commit is contained in:
@@ -3,22 +3,20 @@
|
||||
Request, response, and domain models used by the auth router and service.
|
||||
"""
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from pydantic import Field
|
||||
|
||||
from app.models.response import BanGuiBaseModel
|
||||
|
||||
class LoginRequest(BaseModel):
|
||||
class LoginRequest(BanGuiBaseModel):
|
||||
"""Payload for ``POST /api/auth/login``."""
|
||||
|
||||
model_config = ConfigDict(strict=True)
|
||||
|
||||
password: str = Field(
|
||||
...,
|
||||
max_length=72,
|
||||
description="Master password to authenticate with (max 72 bytes due to bcrypt truncation).",
|
||||
)
|
||||
|
||||
|
||||
class LoginResponse(BaseModel):
|
||||
class LoginResponse(BanGuiBaseModel):
|
||||
"""Successful login response.
|
||||
|
||||
The session token is set as an ``HttpOnly`` ``SameSite=Lax`` cookie by the
|
||||
@@ -30,24 +28,16 @@ class LoginResponse(BaseModel):
|
||||
use ``POST /api/auth/token`` instead, which does not set a cookie.
|
||||
"""
|
||||
|
||||
model_config = ConfigDict(strict=True)
|
||||
|
||||
expires_at: str = Field(..., description="ISO 8601 UTC expiry timestamp.")
|
||||
|
||||
|
||||
class LogoutResponse(BaseModel):
|
||||
class LogoutResponse(BanGuiBaseModel):
|
||||
"""Response body for ``POST /api/auth/logout``."""
|
||||
|
||||
model_config = ConfigDict(strict=True)
|
||||
|
||||
message: str = Field(default="Logged out successfully.")
|
||||
|
||||
|
||||
class Session(BaseModel):
|
||||
class Session(BanGuiBaseModel):
|
||||
"""Internal domain model representing a persisted session record."""
|
||||
|
||||
model_config = ConfigDict(strict=True)
|
||||
|
||||
id: int = Field(..., description="Auto-incremented row ID.")
|
||||
token: str = Field(..., description="Opaque session token.")
|
||||
created_at: str = Field(..., description="ISO 8601 UTC creation timestamp.")
|
||||
|
||||
Reference in New Issue
Block a user