细节优化——1
This commit is contained in:
@@ -52,6 +52,17 @@ async def update_user(
|
||||
db_user = await user_crud.get_by_id(db, user_id)
|
||||
if not db_user:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="User not found")
|
||||
if db_user.role.value == "ADMIN":
|
||||
requested_role = user_in.role
|
||||
requested_status = user_in.status
|
||||
if user_in.is_active is not None:
|
||||
requested_status = "ACTIVE" if user_in.is_active else "DISABLED"
|
||||
will_leave_admin = requested_role is not None and requested_role != "ADMIN"
|
||||
will_disable = requested_status is not None and requested_status != "ACTIVE"
|
||||
if (will_leave_admin or will_disable) and db_user.status.value == "ACTIVE":
|
||||
active_admins = await user_crud.count_active_admins(db)
|
||||
if active_admins <= 1:
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="至少保留一个管理员账号")
|
||||
user = await user_crud.update_user(db, db_user, user_in)
|
||||
return user
|
||||
|
||||
@@ -71,6 +82,10 @@ async def delete_user(
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="User not found")
|
||||
if db_user.id == current_user.id:
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="不允许删除自己")
|
||||
if db_user.role.value == "ADMIN" and db_user.status.value == "ACTIVE":
|
||||
active_admins = await user_crud.count_active_admins(db)
|
||||
if active_admins <= 1:
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="至少保留一个管理员账号")
|
||||
has_membership = await member_crud.user_has_memberships(db, db_user.id)
|
||||
if has_membership:
|
||||
raise HTTPException(
|
||||
|
||||
Reference in New Issue
Block a user