Skip to content

Commit 56d62ec

Browse files
committed
refactor: simplify role visibility logic for non-admin users
【【用户管理】用户包含角色为继承系统管理员时,角色列可以看见继承系统管理员的角色,用户详情中的角色设置仍可见继承系统管理员】 https://www.tapd.cn/tapd_fe/45245355/bug/detail/1145245355001079300
1 parent 6213680 commit 56d62ec

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

‎apps/users/serializers/user.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -465,9 +465,8 @@ def _get_user_roles(user_ids, is_admin=True):
465465
user_id = str(relation.user_id)
466466
role_id = relation.role_id
467467
workspace_id = relation.workspace_id
468-
# 非内置系统管理员只能看到除内置系统管理员之外的角色
469-
is_builtin_admin_role = relation.role.internal and relation.role.type == RoleConstants.ADMIN.name
470-
if not is_admin and is_builtin_admin_role:
468+
# 非内置系统管理员只能看到系统角色类型(ADMIN)之外的角色
469+
if not is_admin and relation.role.type == RoleConstants.ADMIN.name:
471470
continue
472471
user_role_mapping[user_id].add(relation.role.role_name)
473472
if relation.role.type == RoleConstants.ADMIN.name:
@@ -827,7 +826,7 @@ def update_user_role(instance, user, user_id=None):
827826
return
828827

829828
is_admin = workspace_user_role_mapping_model.objects.filter(
830-
user_id=user_id, role_id=RoleConstants.ADMIN.name
829+
user_id=user_id, role_id=RoleConstants.ADMIN.name, role__internal=True
831830
).exists()
832831

833832
if str(user.id) == "f0dd8f71-e4ee-11ee-8c84-a8a1595801ab":
@@ -858,6 +857,7 @@ def update_user_role(instance, user, user_id=None):
858857
if is_admin:
859858
workspace_user_role_mapping_model.objects.filter(user_id=user.id).delete()
860859
else:
860+
# 非内置系统管理员看不到系统角色类型(ADMIN)的角色,保存时保留这些关系,避免被覆盖
861861
workspace_user_role_mapping_model.objects.filter(user_id=user.id).exclude(
862862
role__type=RoleConstants.ADMIN.name
863863
).delete()

0 commit comments

Comments
 (0)