Пример #1
0
 /**
  * Attach node to an LDAP connection
  *
  * This is an offline method.
  *
  * @uses   Zend_Ldap_Dn::isChildOf()
  * @param  Zend_Ldap $ldap
  * @return Zend_Ldap_Node Provides a fluid interface
  * @throws Zend_Ldap_Exception
  */
 public function attachLdap(Zend_Ldap $ldap)
 {
     if (!Zend_Ldap_Dn::isChildOf($this->_getDn(), $ldap->getBaseDn())) {
         /**
          * @see Zend_Ldap_Exception
          */
         require_once PHP_LIBRARY_PATH . 'Zend/Ldap/Exception.php';
         throw new Zend_Ldap_Exception(null, 'LDAP connection is not responsible for given node.', Zend_Ldap_Exception::LDAP_OTHER);
     }
     if ($ldap !== $this->_ldap) {
         $this->_ldap = $ldap;
         if (is_array($this->_children)) {
             foreach ($this->_children as $child) {
                 $child->attachLdap($ldap);
             }
         }
     }
     return $this;
 }
Пример #2
0
 /**
  * Sets the LDAP specific options on the Zend_Ldap instance
  *
  * @param  Zend_Ldap $ldap
  * @param  array $options
  * @return array of auth-adapter specific options
  */
 protected function _prepareOptions(Zend_Ldap $ldap, array $options)
 {
     $adapterOptions = array('group' => null, 'groupDn' => $ldap->getBaseDn(), 'groupScope' => Zend_Ldap::SEARCH_SCOPE_SUB, 'groupAttr' => 'cn', 'groupFilter' => 'objectClass=groupOfUniqueNames', 'memberAttr' => 'uniqueMember', 'memberIsDn' => true);
     foreach ($adapterOptions as $key => $value) {
         if (array_key_exists($key, $options)) {
             $value = $options[$key];
             unset($options[$key]);
             switch ($key) {
                 case 'groupScope':
                     $value = (int) $value;
                     if (in_array($value, array(Zend_Ldap::SEARCH_SCOPE_BASE, Zend_Ldap::SEARCH_SCOPE_ONE, Zend_Ldap::SEARCH_SCOPE_SUB), true)) {
                         $adapterOptions[$key] = $value;
                     }
                     break;
                 case 'memberIsDn':
                     $adapterOptions[$key] = $value === true || $value === '1' || strcasecmp($value, 'true') == 0;
                     break;
                 default:
                     $adapterOptions[$key] = trim($value);
                     break;
             }
         }
     }
     $ldap->setOptions($options);
     return $adapterOptions;
 }
 protected function _getDnForLdapAttributes($attributes)
 {
     return 'uid=' . $attributes['uid'] . ',o=' . $attributes['o'] . ',' . $this->_ldapClient->getBaseDn();
 }
Пример #4
0
 /**
  * Attach node to an LDAP connection
  *
  * This is an offline method.
  *
  * @uses   Zend_Ldap_Dn::isChildOf()
  * @param  Zend_Ldap $ldap
  * @return Zend_Ldap_Node Provides a fluent interface
  * @throws Zend_Ldap_Exception
  */
 public function attachLdap(Zend_Ldap $ldap)
 {
     if (!Zend_Ldap_Dn::isChildOf($this->_getDn(), $ldap->getBaseDn())) {
         /**
          * @see Zend_Ldap_Exception
          */
         throw new Zend_Ldap_Exception(null, 'LDAP connection is not responsible for given node.', Zend_Ldap_Exception::LDAP_OTHER);
     }
     if ($ldap !== $this->_ldap) {
         $this->_ldap = $ldap;
         if (is_array($this->_children)) {
             foreach ($this->_children as $child) {
                 /* @var Zend_Ldap_Node $child */
                 $child->attachLdap($ldap);
             }
         }
     }
     return $this;
 }
 *
 * @var $this       DbPatch_Command_Patch_PHP
 * @var $writer     DbPatch_Core_Writer
 * @var $db         Zend_Db_Adapter_Abstract
 * @var $phpFile    string
 */
$ldapConfig = EngineBlock_ApplicationSingleton::getInstance()->getConfiguration()->ldap;
$ldapOptions = array('host' => $ldapConfig->host, 'useSsl' => $ldapConfig->useSsl, 'username' => $ldapConfig->userName, 'password' => $ldapConfig->password, 'bindRequiresDn' => $ldapConfig->bindRequiresDn, 'accountDomainName' => $ldapConfig->accountDomainName, 'baseDn' => $ldapConfig->baseDn);
$ldapClient = new Zend_Ldap($ldapOptions);
$ldapClient->bind();
$writer->info("Retrieving all collabPerson entries from LDAP");
//$filter = '(&(objectclass=collabPerson))';
$filter = '(&(objectclass=collabPerson)(!(collabPersonUUID=*)))';
$users = $ldapClient->search($filter);
while (count($users) > 0) {
    $writer->info("Retrieved " . count($users) . " users from LDAP");
    foreach ($users as $user) {
        foreach ($user as $userKey => $userValue) {
            if (is_array($userValue) && count($userValue) === 1) {
                $user[$userKey] = $userValue[0];
            }
        }
        $user['collabpersonuuid'] = (string) Surfnet_Zend_Uuid::generate();
        $now = date(DATE_RFC822);
        $user['collabpersonlastupdated'] = $now;
        $dn = 'uid=' . $user['uid'] . ',o=' . $user['o'] . ',' . $ldapClient->getBaseDn();
        $ldapClient->update($dn, $user);
        $writer->info("Set UUID '{$user['collabpersonuuid']}' for DN: '{$dn}'");
    }
    $users = $ldapClient->search($filter);
}