Skip to content

Commit

Permalink
feat: ldap ORM shoould ignore lower case statement in filters #7749 (#…
Browse files Browse the repository at this point in the history
…7750)

Signed-off-by: Yuriy Movchan <Yuriy.Movchan@gmail.com>
  • Loading branch information
yurem committed Feb 16, 2024
1 parent f4c747c commit 53af8cc
Showing 1 changed file with 22 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@

package io.jans.orm.ldap.impl;

import jakarta.enterprise.context.ApplicationScoped;

import io.jans.orm.exception.operation.SearchException;
import io.jans.orm.search.filter.Filter;
import io.jans.orm.search.filter.FilterType;
import io.jans.orm.util.ArrayHelper;
import io.jans.orm.util.StringHelper;
import jakarta.enterprise.context.ApplicationScoped;

/**
* Filter to LDAP filter convert
Expand Down Expand Up @@ -51,12 +50,7 @@ public com.unboundid.ldap.sdk.Filter convertToLdapFilter(Filter genericFilter) t
}

if (FilterType.EQUALITY == type) {
String attributeName;
if (ArrayHelper.isEmpty(genericFilter.getFilters())) {
attributeName = genericFilter.getAttributeName();
} else {
attributeName = convertToLdapFilter(genericFilter.getFilters()[0]).getAttributeName();
}
String attributeName = resolveAttributeName(genericFilter);
return com.unboundid.ldap.sdk.Filter.createEqualityFilter(attributeName, String.valueOf(genericFilter.getAssertionValue()));
}

Expand All @@ -77,7 +71,8 @@ public com.unboundid.ldap.sdk.Filter convertToLdapFilter(Filter genericFilter) t
}

if (FilterType.SUBSTRING == type) {
return com.unboundid.ldap.sdk.Filter.createSubstringFilter(genericFilter.getAttributeName(), genericFilter.getSubInitial(),
String attributeName = resolveAttributeName(genericFilter);
return com.unboundid.ldap.sdk.Filter.createSubstringFilter(attributeName, genericFilter.getSubInitial(),
genericFilter.getSubAny(), genericFilter.getSubFinal());
}

Expand Down Expand Up @@ -150,4 +145,21 @@ protected Filter convertRawLdapFilterToFilterImpl(com.unboundid.ldap.sdk.Filter
throw new SearchException(String.format("Unknown filter type '%s'", type), com.unboundid.ldap.sdk.ResultCode.PROTOCOL_ERROR_INT_VALUE);
}

private String resolveAttributeName(Filter filter) throws SearchException {
String attributeName = filter.getAttributeName();

if (StringHelper.isEmpty(attributeName)) {
// Try to find attribute name inside sub-filters
for (Filter subFilter : filter.getFilters()) {
com.unboundid.ldap.sdk.Filter convertedSubFilter = convertToLdapFilter(subFilter);
attributeName = convertedSubFilter.getAttributeName();
if (StringHelper.isNotEmpty(attributeName)) {
break;
}
}
}

return attributeName;
}

}

0 comments on commit 53af8cc

Please sign in to comment.