diff --git a/panel/modals/RolesModal.tsx b/panel/modals/RolesModal.tsx index db9c9434..ef99f2e5 100644 --- a/panel/modals/RolesModal.tsx +++ b/panel/modals/RolesModal.tsx @@ -105,17 +105,21 @@ const UserEditModal: Component = (props) => { const handleRoleToggle = (roleId: string) => { if (roleId === 'admin') { - return + return // Системная роль не может быть изменена } setFormData((prev) => { const currentRoles = prev.roles || [] - const newRoles = currentRoles.includes(roleId) - ? currentRoles.filter((r: string) => r !== roleId) - : [...currentRoles, roleId] + const isCurrentlySelected = currentRoles.includes(roleId) + + const newRoles = isCurrentlySelected + ? currentRoles.filter((r: string) => r !== roleId) // Убираем роль + : [...currentRoles, roleId] // Добавляем роль + return { ...prev, roles: newRoles } }) + // Очищаем ошибки, связанные с ролями if (errors().roles) { setErrors((prev) => { const newErrors = { ...prev } @@ -288,7 +292,11 @@ const UserEditModal: Component = (props) => { background: isAdminRole && isSelected ? 'rgba(245, 158, 11, 0.1)' : undefined, border: isAdminRole && isSelected ? '1px solid rgba(245, 158, 11, 0.3)' : undefined }} - onClick={() => !isDisabled && handleRoleToggle(role.id)} + onClick={() => { + if (!isDisabled && role.id !== 'admin') { + handleRoleToggle(role.id) + } + }} >
@@ -334,7 +342,7 @@ const UserEditModal: Component = (props) => { stroke-linecap="round" stroke-linejoin="round" > - +