31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
from datetime import datetime, timezone
|
|
|
|
from sqlmodel import SQLModel, Field
|
|
|
|
class Admin(SQLModel, table=True):
|
|
id: int | None = Field(default=None, primary_key=True)
|
|
username: str = Field(index=True, unique=True)
|
|
password: str = Field(nullable=False)
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
|
|
class AdminCreate(SQLModel):
|
|
username: str
|
|
password: str
|
|
|
|
class TokenResponse(SQLModel):
|
|
access_token: str
|
|
token_type: str = "bearer"
|
|
|
|
class AdminCredential(SQLModel, table=True):
|
|
id: int | None = Field(default=None, primary_key=True)
|
|
admin_id: int = Field(foreign_key="admin.id")
|
|
credential_id: bytes = Field(index=True, unique=True)
|
|
public_key: bytes
|
|
sign_count: int
|
|
|
|
class AdminFIDO2Challenge(SQLModel, table=True):
|
|
id: int | None = Field(default=None, primary_key=True)
|
|
admin_id: int = Field(foreign_key="admin.id")
|
|
challenge: str
|
|
type: str # "registration" or "authentication"
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) |