fix(workspace): deactivate user when removed from last active workspace
This commit is contained in:
@@ -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}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user