fix(workspace): deactivate user when removed from last active workspace

This commit is contained in:
Timebomb2018
2026-04-28 18:34:06 +08:00
parent 89228825cf
commit 6f10296969

View File

@@ -77,8 +77,24 @@ async def delete_workspace_member(
BizCode.WORKSPACE_NOT_FOUND) BizCode.WORKSPACE_NOT_FOUND)
try: try:
deleted_user = workspace_member.user
workspace_member.is_active = False workspace_member.is_active = False
workspace_member.user.current_workspace_id = None deleted_user.current_workspace_id = None
# 若被删除成员不是超级管理员且没有其他可用工作空间,则禁用该用户
if not deleted_user.is_superuser:
remaining = (
db.query(WorkspaceMember)
.filter(
WorkspaceMember.user_id == deleted_user.id,
WorkspaceMember.workspace_id != workspace_id,
WorkspaceMember.is_active.is_(True),
)
.count()
)
if remaining == 0:
deleted_user.is_active = False
db.commit() db.commit()
business_logger.info(f"用户 {user.username} 成功删除工作空间 {workspace_id} 的成员 {member_id}") business_logger.info(f"用户 {user.username} 成功删除工作空间 {workspace_id} 的成员 {member_id}")