重构表结构:合并 profiles→users,展平 API 响应,新增计数器字段
- models: 删除 Profile 模型,字段合并到 User;User 新增云朵/公开/收藏计数器;Cloud 新增 favorite_count - schemas/serializers: 展平 UserOut/AuthOut/MeOut/AdminUserOut,移除嵌套 profile - deps: user.profile.role→user.role,移除 selectinload profile - auth/register: 注册时直接设置 user 字段,不再创建 Profile - clouds: 创建/删除云朵时同步 user.cloud_count 计数器,状态变化时同步 public_cloud_count - favorites: 点赞/取消时同步 cloud.favorite_count 计数器 - admin: 审批/隐藏/批量删时同步 public_cloud_count 计数器 - profiles/stats: 用计数器替代实时 COUNT 查询 - alembic: 新增 migration 合并 profiles 到 users,初始化 counters
This commit is contained in:
+2
-3
@@ -34,7 +34,6 @@ async def _resolve_user(
|
||||
(RefreshSession.id == payload.session_id)
|
||||
& (RefreshSession.user_id == User.id),
|
||||
)
|
||||
.options(selectinload(User.profile))
|
||||
.where(
|
||||
User.id == payload.user_id,
|
||||
RefreshSession.revoked_at.is_(None),
|
||||
@@ -44,7 +43,7 @@ async def _resolve_user(
|
||||
user = result.scalar_one_or_none()
|
||||
if not user:
|
||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="登录状态已失效")
|
||||
if user.profile.is_disabled:
|
||||
if user.is_disabled:
|
||||
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="账号已被禁用")
|
||||
return user
|
||||
|
||||
@@ -68,7 +67,7 @@ async def get_optional_user(
|
||||
|
||||
|
||||
async def get_admin_user(user: Annotated[User, Depends(get_current_user)]) -> User:
|
||||
if user.profile.role != "admin":
|
||||
if user.role != "admin":
|
||||
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="需要管理员权限")
|
||||
return user
|
||||
|
||||
|
||||
Reference in New Issue
Block a user