/* * Copyright (c) 2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.auth.ldap; import org.springframework.ldap.filter.AndFilter; import org.springframework.ldap.filter.EqualsFilter; import org.springframework.ldap.filter.Filter; import org.springframework.ldap.filter.HardcodedFilter; /** * * Utility class to substitute placeholders by values in ldap filters */ public class LdapFilterUtil { /** * Generate encoded filter to search for persons * * @param rawFilter * @param username * @return encoded filter */ public static String getPersonFilterWithValues(final String rawFilter, final String username) { String filter = rawFilter; String[] usernameParts = username.split("@"); filter = filter.replace("%u", username); filter = filter.replace("%U", usernameParts[0]); if (usernameParts.length > 1) { filter = filter.replaceAll("%d", usernameParts[1]); } // Add parentheses around the filter string so that we can // AND it if (!filter.startsWith("(")) { filter = "(" + filter + ")"; } Filter hardCodedFilter = new HardcodedFilter(filter); // Why is this not needed in the auth handler Filter personFilter = new EqualsFilter("objectClass", "person"); AndFilter andFilter = new AndFilter(); andFilter.and(hardCodedFilter); andFilter.and(personFilter); return andFilter.encode(); } /** * Generates an encoded filter for attribute query * * @param attributeName to find * @return encoded filter */ public static String getAttributeFilterWithValues(final String attributeName) { Filter hardCodedFilter = new HardcodedFilter("(lDAPDisplayName=" + attributeName + ")"); Filter attributeFilter = new EqualsFilter("objectCategory", "attributeSchema"); AndFilter andFilter = new AndFilter(); andFilter.and(hardCodedFilter); andFilter.and(attributeFilter); return andFilter.encode(); } }