Initial FastAPI admin auth scaffold

This commit is contained in:
2026-06-05 17:10:30 +08:00
commit 5635da9ea5
65 changed files with 1407 additions and 0 deletions

1
app/model/__init__.py Normal file
View File

@@ -0,0 +1 @@
"""Model layer."""

53
app/model/admin_user.py Normal file
View File

@@ -0,0 +1,53 @@
from dataclasses import dataclass
from typing import Any
from app.common.security.password_hasher import verify_password
from app.constants.model.admin_user.admin_user_status_code import AdminUserStatusCode
@dataclass(slots=True)
class AdminUser:
id: int
username: str
password: str
user_type: str
nickname: str
phone: str
email: str
status: AdminUserStatusCode
login_ip: str
login_time: str
remark: str
@classmethod
def from_row(cls, row: dict[str, Any]) -> "AdminUser":
return cls(
id=int(row["id"]),
username=str(row["username"]),
password=str(row["password"]),
user_type=str(row["user_type"]),
nickname=str(row["nickname"]),
phone=str(row["phone"]),
email=str(row["email"]),
status=AdminUserStatusCode(int(row["status"])),
login_ip=str(row["login_ip"]),
login_time=str(row["login_time"]),
remark=str(row["remark"]),
)
def verify_password(self, password: str) -> bool:
return verify_password(password, self.password)
def to_public_dict(self) -> dict:
return {
"id": self.id,
"username": self.username,
"user_type": self.user_type,
"nickname": self.nickname,
"phone": self.phone,
"email": self.email,
"status": int(self.status),
"login_ip": self.login_ip,
"login_time": self.login_time,
"remark": self.remark,
}