加上登录和角色权限,并用 Vue 控制台区分用户与管理员。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user