- move the relational data center to MySQL and a standalone workbench\n- add Interface Center API credentials, policies, logs, and DBeaver SSH guidance\n- harden authentication and deployment while retiring unused management surfaces
61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
"""Pydantic request/response models."""
|
|
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
# ── Auth ─────────────────────────────────────────────────────────────────────
|
|
|
|
class LoginRequest(BaseModel):
|
|
username: str = Field(min_length=3, max_length=120)
|
|
password: str = Field(min_length=1, max_length=72)
|
|
|
|
|
|
class TokenResponse(BaseModel):
|
|
access_token: str
|
|
token_type: str = "bearer"
|
|
|
|
|
|
# ── RBAC & Accounts (P1) ─────────────────────────────────────────────────────
|
|
|
|
class RoleCreate(BaseModel):
|
|
role_key: str = Field(pattern=r"^[a-z][a-z0-9_]{1,30}$")
|
|
label: str
|
|
description: str | None = None
|
|
sort_order: int | None = None
|
|
|
|
|
|
class RoleUpdate(BaseModel):
|
|
label: str | None = None
|
|
description: str | None = None
|
|
sort_order: int | None = None
|
|
|
|
|
|
class CapabilityCreate(BaseModel):
|
|
cap_key: str = Field(pattern=r"^[a-z][a-z0-9_]{1,40}$")
|
|
label: str
|
|
sort_order: int | None = None
|
|
|
|
|
|
class RoleCapCell(BaseModel):
|
|
role_key: str
|
|
cap_key: str
|
|
value: str
|
|
|
|
|
|
class UserCreate(BaseModel):
|
|
username: str = Field(min_length=3, max_length=120)
|
|
password: str = Field(min_length=12, max_length=72)
|
|
full_name: str | None = None
|
|
phone: str | None = None
|
|
status: str | None = None
|
|
roles: list[str] = []
|
|
|
|
|
|
class UserUpdate(BaseModel):
|
|
full_name: str | None = None
|
|
phone: str | None = None
|
|
status: str | None = None
|
|
password: str | None = Field(default=None, min_length=12, max_length=72)
|
|
roles: list[str] | None = None
|