/**
  * 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));
 }
Ejemplo n.º 2
0
 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;
 }