/** * Test scenario for escaping of LDAP logins * * @dataProvider providerTestEscapeLogin */ public function testEscapeLogin($login, $for_dn, $escapedLogin) { self::assertEquals($escapedLogin, eZLDAPUser::ldap_escape($login, $for_dn)); }
static function getUserGroupsTree(&$requiredParams, $filter, $curDN, &$groupsTree, &$stack, $depth = 0) { if ($depth == 0) { return false; } if (!isset($requiredParams['LDAPGroupBaseDN']) or empty($requiredParams['LDAPGroupBaseDN']) or !isset($requiredParams['LDAPGroupClass']) or empty($requiredParams['LDAPGroupClass']) or !isset($requiredParams['LDAPGroupNameAttribute']) or empty($requiredParams['LDAPGroupNameAttribute']) or !isset($requiredParams['LDAPGroupMemberAttribute']) or empty($requiredParams['LDAPGroupMemberAttribute']) or !isset($requiredParams['ds']) or !$requiredParams['ds']) { eZDebug::writeError('Missing one of required parameters.', __METHOD__); return false; } if (!isset($groupsTree[$curDN])) { eZDebug::writeError('Passed $curDN is not in result tree array. Algorithm\'s usage error.', __METHOD__); return false; } array_push($stack, $curDN); $LDAPGroupBaseDN =& $requiredParams['LDAPGroupBaseDN']; $LDAPGroupClass =& $requiredParams['LDAPGroupClass']; $LDAPGroupNameAttribute =& $requiredParams['LDAPGroupNameAttribute']; $LDAPGroupMemberAttribute =& $requiredParams['LDAPGroupMemberAttribute']; $LDAPGroupDescriptionAttribute =& $requiredParams['LDAPGroupDescriptionAttribute']; $ds =& $requiredParams['ds']; $current =& $groupsTree[$curDN]; $retrieveAttributes = array($LDAPGroupNameAttribute, $LDAPGroupMemberAttribute); $sr = ldap_search($ds, $LDAPGroupBaseDN, $filter, $retrieveAttributes); $entries = ldap_get_entries($ds, $sr); if (is_array($entries) and isset($entries['count']) and $entries['count'] > 0) { $newfilter = '(&(objectClass=' . $LDAPGroupClass . ')'; for ($i = 0; $i < $entries['count']; $i++) { $parent =& $entries[$i]; if ($parent === null) { continue; } $parentDN =& $parent['dn']; if (in_array($parentDN, $stack)) { $requiredParams['LDAPGroupNameAttribute']; eZDebug::writeError('Recursion is detected in the user-groups tree while getting parent groups for ' . $curDN, __METHOD__); $groupsTree['_recursion_detected_'] = true; return false; } if (!isset($groupsTree[$parentDN])) { $groupsTree[$parentDN] = array('data' => $parent, 'parents' => array(), 'children' => array()); } $groupsTree[$parentDN]['children'][$curDN] =& $current; $current['parents'][$parentDN] =& $groupsTree[$parentDN]; $newfilter1 = $newfilter . '(' . $LDAPGroupMemberAttribute . '=' . $parentDN . '))'; $ret = eZLDAPUser::getUserGroupsTree($requiredParams, $newfilter1, $parentDN, $groupsTree, $stack, $depth - 1); if (isset($groupsTree['_recursion_detected_']) and $groupsTree['_recursion_detected_']) { return false; } } } else { // We've reached a top node if (!isset($groupsTree['root'])) { $groupsTree['root'] = array('data' => null, 'parents' => null, 'children' => array(), 'nodes' => array($requiredParams['TopUserGroupNodeID'])); } if (!isset($groupsTree['root']['children'][$curDN])) { $groupsTree['root']['children'][$curDN] =& $current; } if (!isset($current['parents']['root'])) { $current['parents']['root'] =& $groupsTree['root']; } } array_pop($stack); return true; }