54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
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,
|
|
}
|