Ejemplo n.º 1
0
 /**
  * This function takes care of actually saving the user data into LDAP
  * @param String $userId
  * @param array $data
  */
 protected function _saveUser($userId, $data)
 {
     if ($this->userExists($userId)) {
         $this->_ldap->update($this->_getDNForUserId($userId), $data);
     } else {
         $this->_ldap->add($this->_getDNForUserId($userId), $data);
     }
     return true;
 }
Ejemplo n.º 2
0
 /**
  * Update record data in the backend with passed data object properties values 
  *
  * @param t41_Data_Object $do
  * @return boolean
  */
 public function update(ObjectModel\DataObject $do)
 {
     // Properties mapping (to array)
     if ($this->_mapper) {
         $data = $do->map($this->_mapper, $do->getClass());
     } else {
         $data = $do->toArray();
     }
     $data = $this->_unflattenArray($data);
     return (bool) $this->_ressource->update($do->getUri()->getIdentifier(), $data);
 }
 protected function _updateUser($user, $newAttributes)
 {
     // Hackish, apparently LDAP gives us arrays even for single values?
     // So for now we assume arrays with only one value are single valued
     foreach ($user as $userKey => $userValue) {
         if (is_array($userValue) && count($userValue) === 1) {
             $user[$userKey] = $userValue[0];
         }
     }
     if ($user[self::LDAP_ATTR_COLLAB_PERSON_HASH] === $this->_getCollabPersonHash($newAttributes)) {
         $now = date(DATE_RFC822);
         $newAttributes = $user + $newAttributes;
         $newAttributes[self::LDAP_ATTR_COLLAB_PERSON_LAST_ACCESSED] = $now;
         return $newAttributes;
     }
     $newAttributes[self::LDAP_ATTR_COLLAB_PERSON_HASH] = $this->_getCollabPersonHash($newAttributes);
     $now = date(DATE_RFC822);
     $newAttributes = array_merge($user, $newAttributes);
     $newAttributes[self::LDAP_ATTR_COLLAB_PERSON_LAST_ACCESSED] = $now;
     $newAttributes[self::LDAP_ATTR_COLLAB_PERSON_LAST_UPDATED] = $now;
     $dn = $this->_getDnForLdapAttributes($newAttributes);
     $this->_ldapClient->update($dn, $newAttributes);
     return $newAttributes;
 }
 *
 * @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);
}