modify: auth 插件
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import select
|
||||
|
||||
from chongming_worker import rpc_method
|
||||
from chongming_password import hash_password
|
||||
|
||||
from ..models.pydantic import (
|
||||
RegisterPostRequest,
|
||||
RegisterPostResponse
|
||||
)
|
||||
from ..models.auth import Users
|
||||
|
||||
|
||||
@rpc_method(
|
||||
subject="auth.register",
|
||||
method="POST",
|
||||
summary="用户注册",
|
||||
response_model=RegisterPostResponse,
|
||||
)
|
||||
async def register(register_post_request: RegisterPostRequest) -> RegisterPostResponse:
|
||||
from ..global_var import db
|
||||
|
||||
if db is None:
|
||||
raise RuntimeError("Database not initialized")
|
||||
|
||||
username = register_post_request.username.strip()
|
||||
email = register_post_request.email.strip()
|
||||
full_name = register_post_request.full_name.strip() or None
|
||||
phone = register_post_request.phone.strip() or None
|
||||
|
||||
# 校验必填字段
|
||||
if not username:
|
||||
return RegisterPostResponse(
|
||||
result="fail",
|
||||
message="用户名不能为空",
|
||||
timestamp=time.time()
|
||||
)
|
||||
if not email:
|
||||
return RegisterPostResponse(
|
||||
result="fail",
|
||||
message="邮箱不能为空",
|
||||
timestamp=time.time()
|
||||
)
|
||||
if not register_post_request.password:
|
||||
return RegisterPostResponse(
|
||||
result="fail",
|
||||
message="密码不能为空",
|
||||
timestamp=time.time()
|
||||
)
|
||||
|
||||
async with db.get_session() as session:
|
||||
# 检查用户名是否已存在
|
||||
stmt = select(Users).filter_by(username=username)
|
||||
result = await session.execute(stmt)
|
||||
if result.scalar_one_or_none() is not None:
|
||||
return RegisterPostResponse(
|
||||
result="fail",
|
||||
message="用户名已存在",
|
||||
timestamp=time.time()
|
||||
)
|
||||
|
||||
# 检查邮箱是否已存在
|
||||
stmt = select(Users).filter_by(email=email)
|
||||
result = await session.execute(stmt)
|
||||
if result.scalar_one_or_none() is not None:
|
||||
return RegisterPostResponse(
|
||||
result="fail",
|
||||
message="邮箱已被注册",
|
||||
timestamp=time.time()
|
||||
)
|
||||
|
||||
# 创建新用户
|
||||
user = Users(
|
||||
username=username,
|
||||
hashed_password=hash_password(register_post_request.password),
|
||||
email=email,
|
||||
full_name=full_name,
|
||||
phone=phone,
|
||||
created_at=datetime.now(),
|
||||
updated_at=datetime.now(),
|
||||
)
|
||||
session.add(user)
|
||||
await session.commit()
|
||||
await session.refresh(user)
|
||||
|
||||
return RegisterPostResponse(
|
||||
result="success",
|
||||
message="注册成功",
|
||||
user_id=user.id,
|
||||
timestamp=time.time()
|
||||
)
|
||||
Reference in New Issue
Block a user