| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from __future__ import annotations
- from datetime import datetime
- from sqlalchemy import DateTime, Index, Integer, String, func
- from sqlalchemy.orm import Mapped, mapped_column
- from supply_infra.db.base import Base
- class AuthUser(Base):
- """Local SupplyAgent account with one fixed role."""
- __tablename__ = "auth_user"
- __table_args__ = (
- Index("idx_auth_user_role_status", "role", "status"),
- )
- id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
- username: Mapped[str] = mapped_column(
- String(64),
- nullable=False,
- unique=True,
- index=True,
- )
- password_hash: Mapped[str] = mapped_column(String(255), nullable=False)
- display_name: Mapped[str] = mapped_column(String(128), nullable=False)
- role: Mapped[str] = mapped_column(String(16), nullable=False, default="user")
- status: Mapped[str] = mapped_column(String(16), nullable=False, default="active")
- failed_login_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
- locked_until: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
- last_login_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
- created_at: Mapped[datetime] = mapped_column(
- DateTime,
- nullable=False,
- server_default=func.now(),
- )
- updated_at: Mapped[datetime] = mapped_column(
- DateTime,
- nullable=False,
- server_default=func.now(),
- onupdate=func.now(),
- )
|