mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 09:20:22 +08:00
feat: 用户创建和注册时使用系统配置的默认配额
- 新增 /api/admin/users/defaults/quota 接口获取默认配额 - 用户注册时从系统配置读取默认配额 - 管理员创建用户时自动获取并使用系统默认配额
This commit is contained in:
@@ -15,6 +15,7 @@ from src.database import get_db
|
||||
from src.models.admin_requests import UpdateUserRequest
|
||||
from src.models.api import CreateApiKeyRequest, CreateUserRequest
|
||||
from src.models.database import ApiKey, User, UserRole
|
||||
from src.services.system.config import SystemConfigService
|
||||
from src.services.user.apikey import ApiKeyService
|
||||
from src.services.user.service import UserService
|
||||
|
||||
@@ -197,6 +198,20 @@ async def delete_user_api_key(
|
||||
return await pipeline.run(adapter=adapter, http_request=request, db=db, mode=adapter.mode)
|
||||
|
||||
|
||||
@router.get("/defaults/quota")
|
||||
async def get_default_quota(request: Request, db: Session = Depends(get_db)):
|
||||
"""
|
||||
获取默认用户配额
|
||||
|
||||
获取系统配置的默认用户配额值,用于创建用户时的默认值。
|
||||
|
||||
**返回字段**:
|
||||
- `default_quota_usd`: 默认配额(USD)
|
||||
"""
|
||||
adapter = AdminGetDefaultQuotaAdapter()
|
||||
return await pipeline.run(adapter=adapter, http_request=request, db=db, mode=adapter.mode)
|
||||
|
||||
|
||||
# ============== 管理员适配器实现 ==============
|
||||
|
||||
|
||||
@@ -586,3 +601,15 @@ class AdminDeleteUserKeyAdapter(AdminApiAdapter):
|
||||
)
|
||||
|
||||
return {"message": "API Key已删除"}
|
||||
|
||||
|
||||
class AdminGetDefaultQuotaAdapter(AdminApiAdapter):
|
||||
"""获取系统默认用户配额"""
|
||||
|
||||
async def handle(self, context): # type: ignore[override]
|
||||
db = context.db
|
||||
default_quota = SystemConfigService.get_config(db, "default_user_quota_usd", default=10.0)
|
||||
|
||||
return {
|
||||
"default_quota_usd": float(default_quota),
|
||||
}
|
||||
|
||||
@@ -470,12 +470,16 @@ class AuthRegisterAdapter(AuthPublicAdapter):
|
||||
)
|
||||
|
||||
try:
|
||||
# 读取系统配置的默认配额
|
||||
default_quota = SystemConfigService.get_config(db, "default_user_quota_usd", default=10.0)
|
||||
|
||||
user = UserService.create_user(
|
||||
db=db,
|
||||
email=register_request.email,
|
||||
username=register_request.username,
|
||||
password=register_request.password,
|
||||
role=UserRole.USER,
|
||||
quota_usd=default_quota,
|
||||
)
|
||||
AuditService.log_event(
|
||||
db=db,
|
||||
|
||||
Reference in New Issue
Block a user