From bc66b6016dc558eb39426eccf4a179a3cbb20f47 Mon Sep 17 00:00:00 2001 From: Gaelle Date: Tue, 28 Jul 2026 15:50:46 +0200 Subject: [PATCH] fix prevent duplicate role badges --- .../specific/users/user-card/UserCard.vue | 16 +++--- .../users/user-role-badge/UserRoleBadge.vue | 53 ++++++++----------- 2 files changed, 27 insertions(+), 42 deletions(-) diff --git a/src/components/specific/users/user-card/UserCard.vue b/src/components/specific/users/user-card/UserCard.vue index 026ee840f..9c5aaf8ae 100644 --- a/src/components/specific/users/user-card/UserCard.vue +++ b/src/components/specific/users/user-card/UserCard.vue @@ -36,9 +36,8 @@ :text="fullName(user) + (isSelf(user) ? ` (${$t('UserCard.self')})` : '')" /> @@ -95,11 +94,11 @@ export default { const { isSelf, isSpaceAdmin, isProjectAdmin } = useUser(); const showActionMenu = computed(() => { - return !isSelf(props.user) && isSpaceAdmin(props.space) || !isSelf(props.user) && isProjectAdmin(props.project) && props.user.cloud_role !== 100; + return ( + (!isSelf(props.user) && isSpaceAdmin(props.space)) || + (!isSelf(props.user) && isProjectAdmin(props.project) && props.user.cloud_role !== 100) + ); }); - const role = computed(() => (props.project ? props.user.role : props.user.cloud_role)); - const cloudRole = computed(() => props.user.cloud_role); - const projectRole = computed(() => props.user.role); const loading = ref(false); provide("loading", loading); @@ -116,9 +115,6 @@ export default { return { // References loading, - role, - cloudRole, - projectRole, showActionMenu, showDeleteGuard, showUpdateForm, diff --git a/src/components/specific/users/user-role-badge/UserRoleBadge.vue b/src/components/specific/users/user-role-badge/UserRoleBadge.vue index 0936fdcaf..a94a7af59 100644 --- a/src/components/specific/users/user-role-badge/UserRoleBadge.vue +++ b/src/components/specific/users/user-role-badge/UserRoleBadge.vue @@ -1,20 +1,6 @@ @@ -25,10 +11,6 @@ import { SPACE_ROLE } from "../../../../config/spaces.js"; export default { props: { - role: { - type: Number, - required: true, - }, cloudRole: { type: Number, default: null, @@ -43,24 +25,31 @@ export default { }, }, setup(props) { - const roleName = computed(() => { - switch (props.role) { - case SPACE_ROLE.ADMIN: - return props.cloudRole === 100 ? "spaceAdmin" : "projectAdmin"; - case SPACE_ROLE.USER: - return props.isSpaceRole ? "spaceUser" : "projectUser"; - case PROJECT_ROLE.GUEST: - default: - return "guest"; + const roleClass = computed(() => + badgeKey.value.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(), + ); + + const badgeKey = computed(() => { + if (props.cloudRole === SPACE_ROLE.ADMIN) { + return "spaceAdmin"; } - }); - const roleClass = computed(() => { - return roleName.value.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(); + if (props.projectRole === PROJECT_ROLE.ADMIN) { + return "projectAdmin"; + } + + if (props.isSpaceRole) { + return "spaceUser"; + } + + if (props.projectRole === PROJECT_ROLE.GUEST) { + return "guest"; + } + return "projectUser"; }); return { - roleName, + badgeKey, roleClass, }; },