diff --git a/packages/builder/src/components/backend/DataTable/modals/EditRoles.svelte b/packages/builder/src/components/backend/DataTable/modals/EditRoles.svelte
index 881d9dda7c..600e331d3e 100644
--- a/packages/builder/src/components/backend/DataTable/modals/EditRoles.svelte
+++ b/packages/builder/src/components/backend/DataTable/modals/EditRoles.svelte
@@ -17,12 +17,21 @@
$: selectedRoleId = selectedRole._id
$: otherRoles = editableRoles.filter(role => role._id !== selectedRoleId)
$: isCreating = selectedRoleId == null || selectedRoleId === ""
+
+ $: hasUniqueRoleName = !otherRoles
+ ?.map(role => role.name)
+ ?.includes(selectedRole.name)
+
$: valid =
selectedRole.name &&
selectedRole.inherits &&
selectedRole.permissionId &&
!builtInRoles.includes(selectedRole.name)
+ $: shouldDisableRoleInput =
+ builtInRoles.includes(selectedRole.name) &&
+ selectedRole.name?.toLowerCase() === selectedRoleId?.toLowerCase()
+
const fetchBasePermissions = async () => {
try {
basePermissions = await API.getBasePermissions()
@@ -99,7 +108,7 @@
title="Edit Roles"
confirmText={isCreating ? "Create" : "Save"}
onConfirm={saveRole}
- disabled={!valid}
+ disabled={!valid || !hasUniqueRoleName}
>
{#if errors.length}
@@ -119,7 +128,8 @@