Initial FastAPI admin auth scaffold
This commit is contained in:
53
app/model/admin_user.py
Normal file
53
app/model/admin_user.py
Normal 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,
|
||||
}
|
||||
Reference in New Issue
Block a user