diff --git a/frontend/editor/public/locales/en-US/translation.toml b/frontend/editor/public/locales/en-US/translation.toml index 2e60ebf3d1..0bfb5749ce 100644 --- a/frontend/editor/public/locales/en-US/translation.toml +++ b/frontend/editor/public/locales/en-US/translation.toml @@ -8604,6 +8604,7 @@ disableByAdmin = "Disable MFA" [workspace.people.roleDescriptions] admin = "Can manage settings and invite users, with full administrative access." +currentRole = "Current assigned role." user = "Can view and edit shared files, but cannot manage workspace settings or users." [workspace.people.toggleEnabled] diff --git a/frontend/editor/src/proprietary/components/shared/config/configSections/PeopleSection.tsx b/frontend/editor/src/proprietary/components/shared/config/configSections/PeopleSection.tsx index 151d0c5dff..454b9e138c 100644 --- a/frontend/editor/src/proprietary/components/shared/config/configSections/PeopleSection.tsx +++ b/frontend/editor/src/proprietary/components/shared/config/configSections/PeopleSection.tsx @@ -94,6 +94,21 @@ export default function PeopleSection() { const isCurrentUser = (user: User) => currentUser?.username === user.username; const isLockedUser = (user: User) => lockedUsers.includes(user.username); + const getUserRoleId = (user: User) => + user.rolesAsString || + (user.roleName?.startsWith("ROLE_") ? user.roleName : undefined) || + "ROLE_USER"; + + const getRoleLabel = (roleId: string) => { + switch (roleId) { + case "ROLE_ADMIN": + return t("workspace.people.admin", "Admin"); + case "ROLE_USER": + return t("workspace.people.user", "User"); + default: + return roleId; + } + }; // Form state for edit user modal const [editForm, setEditForm] = useState({ @@ -353,7 +368,7 @@ export default function PeopleSection() { const openEditModal = (user: User) => { setSelectedUser(user); setEditForm({ - role: user.roleName, + role: getUserRoleId(user), teamId: user.team?.id, }); setEditUserModalOpened(true); @@ -385,7 +400,7 @@ export default function PeopleSection() { const roleOptions = [ { value: "ROLE_ADMIN", - label: t("workspace.people.admin"), + label: getRoleLabel("ROLE_ADMIN"), description: t( "workspace.people.roleDescriptions.admin", "Can manage settings and invite members, with full administrative access.", @@ -394,7 +409,7 @@ export default function PeopleSection() { }, { value: "ROLE_USER", - label: t("workspace.people.user"), + label: getRoleLabel("ROLE_USER"), description: t( "workspace.people.roleDescriptions.user", "Can view and edit shared files, but cannot manage workspace settings or members.", @@ -474,7 +489,9 @@ export default function PeopleSection() { {" "} - {t("workspace.people.license.users", "users")} + {t("workspace.people.license.users", "users", { + count: licenseInfo.totalUsers, + })} @@ -704,18 +721,18 @@ export default function PeopleSection() { size="sm" variant="light" color={ - (user.rolesAsString || "").includes("ROLE_ADMIN") + getUserRoleId(user) === "ROLE_ADMIN" ? "blue" - : "cyan" + : getUserRoleId(user) === "ROLE_PRO_USER" + ? "grape" + : "cyan" } styles={{ root: { maxWidth: "none" }, label: { overflow: "visible" }, }} > - {(user.rolesAsString || "").includes("ROLE_ADMIN") - ? t("workspace.people.admin", "Admin") - : t("workspace.people.user", "User")} + {getRoleLabel(getUserRoleId(user))} @@ -1009,7 +1026,25 @@ export default function PeopleSection() {