加上登录和角色权限,并用 Vue 控制台区分用户与管理员。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-10 22:43:31 +08:00
parent 78601aae5e
commit 8b55b9cf55
36 changed files with 2947 additions and 1007 deletions
+18 -4
View File
@@ -12,22 +12,36 @@ from sqlalchemy.orm import Session
from app.clock import add_months, utcnow
from app.config import settings
from app.errors import AppError
from app.models import ComputeNode, NodeStatus, User
from app.models import ComputeNode, NodeStatus, User, UserRole
from app.money import money
from app.services.common import get_user_by_wallet
def register_user(session: Session, wallet_address: str) -> User:
def register_user(
session: Session,
wallet_address: str,
username: str | None = None,
password_hash: str | None = None,
role: UserRole = UserRole.USER,
) -> User:
wallet = wallet_address.strip()
if session.scalar(select(User).where(User.wallet_address == wallet)) is not None:
raise AppError("钱包地址已注册", 409)
user = User(wallet_address=wallet, created_at=utcnow())
if username and session.scalar(select(User).where(User.username == username)) is not None:
raise AppError("用户名已占用", 409)
user = User(
wallet_address=wallet,
username=username,
password_hash=password_hash,
role=role,
created_at=utcnow(),
)
session.add(user)
try:
session.flush()
except IntegrityError as exc:
session.rollback()
raise AppError("钱包地址已注册", 409) from exc
raise AppError("钱包地址或用户名已注册", 409) from exc
return user