diff --git a/client/src/components/dynamic-groups/condition-builder.tsx b/client/src/components/dynamic-groups/condition-builder.tsx index 8a5648e..ded5114 100644 --- a/client/src/components/dynamic-groups/condition-builder.tsx +++ b/client/src/components/dynamic-groups/condition-builder.tsx @@ -175,7 +175,7 @@ const ConditionBuilder: React.FC = ({ // Keep the condition if its ID is not in our removal list // and its parent ID is not in our removal list return !idsToRemove.has(c.id) && - !idsToRemove.has(c.parentId); + !(c.parentId !== null && idsToRemove.has(c.parentId)); }); onChange(newConditions); @@ -242,7 +242,7 @@ const ConditionBuilder: React.FC = ({ return (
0 ? `${level * 20}px` : '0' }} >
@@ -341,7 +341,7 @@ const ConditionBuilder: React.FC = ({ // Regular condition return (
0 ? `${level * 20}px` : '0' }} >
@@ -603,21 +603,28 @@ const generateLdapFilter = (conditions: Condition[]): string => { const operator = logicalOp === 'AND' ? '&' : '|'; let groupFilter = `(${operator}`; + // Track if we've added any conditions to this group + let hasAddedCondition = false; + // Process regular conditions in this group for (const condition of childConditions) { if (!condition.isGroup) { const filter = generateRegularFilter(condition); - if (filter) groupFilter += filter; + if (filter) { + groupFilter += filter; + hasAddedCondition = true; + } } } // Process subgroups in this group for (const condition of childConditions) { - if (condition.isGroup && condition.id) { + if (condition.isGroup && condition.id !== undefined) { // Use another group filter here const subGroupFilter = generateGroupFilter(condition.id); if (subGroupFilter !== '(objectClass=*)') { groupFilter += subGroupFilter; + hasAddedCondition = true; } } } @@ -625,7 +632,7 @@ const generateLdapFilter = (conditions: Condition[]): string => { groupFilter += ')'; // If there are no actual conditions, return a default - if (groupFilter === `(${operator})`) { + if (!hasAddedCondition) { return '(objectClass=*)'; }