public function numChildren()
 {
     $conn = $this->source->getLdap();
     if ($conn) {
         return $conn->countChildren($this->node->getCurrentDN());
     }
     return 0;
 }
Ejemplo n.º 2
0
 /**
  * Creates the data structure for the given entry data
  *
  * @param  array $data
  * @return Zend_Ldap_Node
  */
 protected function _createEntry(array $data)
 {
     /**
      * @see Zend_Ldap_Node
      */
     $node = Zend_Ldap_Node::fromArray($data, true);
     $node->attachLdap($this->_iterator->getLdap());
     return $node;
 }
Ejemplo n.º 3
0
 /**
  * Creates the data structure for the given entry data
  *
  * @param  array $data
  * @return Zend_Ldap_Node
  */
 protected function _createEntry(array $data)
 {
     /**
      * @see Zend_Ldap_Node
      */
     require_once PHP_LIBRARY_PATH . 'Zend/Ldap/Node.php';
     $node = Zend_Ldap_Node::fromArray($data, true);
     $node->attachLdap($this->_iterator->getLdap());
     return $node;
 }
Ejemplo n.º 4
0
 /**
  * Returns the specified DN as a Zend_Ldap_Node
  *
  * @param  string|Zend_Ldap_Dn $dn
  * @return Zend_Ldap_Node|null
  * @throws Zend_Ldap_Exception
  */
 public function getNode($dn)
 {
     /**
      * Zend_Ldap_Node
      */
     #require_once 'Zend/Ldap/Node.php';
     return Zend_Ldap_Node::fromLdap($dn, $this);
 }
Ejemplo n.º 5
0
 public function testLoadFromLdapWithDnObject()
 {
     $dn = Zend_Ldap_Dn::fromString($this->_createDn('ou=Test1,'));
     $node = Zend_Ldap_Node::fromLdap($dn, $this->_getLdap());
     $this->assertType('Zend_Ldap_Node', $node);
     $this->assertTrue($node->isAttached());
 }
Ejemplo n.º 6
0
 /**
  * @return Zend_Ldap_Node
  */
 protected function _createTestNode()
 {
     return Zend_Ldap_Node::fromArray($this->_createTestArrayData(), true);
 }
Ejemplo n.º 7
0
 /**
  * Returns the specified DN as a Zend_Ldap_Node
  *
  * @param  string|Zend_Ldap_Dn $dn
  * @return Zend_Ldap_Node|null
  * @throws Zend_Ldap_Exception
  */
 public function getNode($dn)
 {
     /**
      * Zend_Ldap_Node
      */
     require_once PHP_LIBRARY_PATH . 'Zend/Ldap/Node.php';
     return Zend_Ldap_Node::fromLdap($dn, $this);
 }
Ejemplo n.º 8
0
 public function testGetChanges()
 {
     $node = $this->_createTestNode();
     $node->host = array('d');
     $node->empty = 'not Empty';
     unset($node->boolean);
     $changes = $node->getChanges();
     $this->assertEquals(array('add' => array('empty' => array('not Empty')), 'delete' => array('boolean' => array()), 'replace' => array('host' => array('d'))), $changes);
     $node = Zend_Ldap_Node::create('uid=test,dc=example,dc=org', array('account'));
     $node->host = 'host';
     unset($node->cn);
     unset($node['sn']);
     $node['givenName'] = 'givenName';
     $node->appendToAttribute('objectClass', 'domain');
     $this->assertEquals(array('uid' => array('test'), 'objectclass' => array('account', 'domain'), 'host' => array('host'), 'givenname' => array('givenName')), $node->getChangedData());
     $this->assertEquals(array('add' => array('uid' => array('test'), 'objectclass' => array('account', 'domain'), 'host' => array('host'), 'givenname' => array('givenName')), 'delete' => array(), 'replace' => array()), $node->getChanges());
 }
Ejemplo n.º 9
0
 public function testMoveNode()
 {
     $dnOld = $this->_createDn('ou=Test1,');
     $dnNew = $this->_createDn('ou=Test,');
     $node = Zend_Ldap_Node::fromLdap($dnOld, $this->_getLdap());
     $node->setDn($dnNew);
     $node->update();
     $this->assertFalse($this->_getLdap()->exists($dnOld));
     $this->assertTrue($this->_getLdap()->exists($dnNew));
     $node = Zend_Ldap_Node::fromLdap($dnNew, $this->_getLdap());
     $node->move($dnOld);
     $node->update();
     $this->assertFalse($this->_getLdap()->exists($dnNew));
     $this->assertTrue($this->_getLdap()->exists($dnOld));
     $node = Zend_Ldap_Node::fromLdap($dnOld, $this->_getLdap());
     $node->rename($dnNew);
     $node->update();
     $this->assertFalse($this->_getLdap()->exists($dnOld));
     $this->assertTrue($this->_getLdap()->exists($dnNew));
 }
Ejemplo n.º 10
0
 /**
  * Updates or creates user by given ldap node
  * 
  * @param Zend_Ldap_Node $node
  * @return User User Object
  */
 public function handleLdapUser($node)
 {
     $username = $node->getAttribute(HSetting::Get('usernameAttribute', 'authentication_ldap'), 0);
     $email = $node->getAttribute('mail', 0);
     $guid = $this->binToStrGuid($node->getAttribute('objectGUID', 0));
     // Try to load User:
     $userChanged = false;
     $user = null;
     if ($guid != "") {
         $user = User::model()->findByAttributes(array('guid' => $guid, 'auth_mode' => User::AUTH_MODE_LDAP));
     } else {
         // Fallback use e-mail
         $user = User::model()->findByAttributes(array('email' => $email, 'auth_mode' => User::AUTH_MODE_LDAP));
     }
     if ($user === null) {
         $user = new User();
         if ($guid != "") {
             $user->guid = $guid;
         }
         $user->status = User::STATUS_ENABLED;
         $user->auth_mode = User::AUTH_MODE_LDAP;
         $user->group_id = 1;
         Yii::log('Create ldap user ' . $username . '!', CLogger::LEVEL_INFO, 'authentication_ldap');
     }
     // Update Group Mapping
     foreach (Group::model()->findAll('ldap_dn != ""') as $group) {
         if (in_array($group->ldap_dn, $node->getAttribute('memberOf'))) {
             if ($user->group_id != $group->id) {
                 $userChanged = true;
                 $user->group_id = $group->id;
             }
         }
     }
     // Update Users Field
     if ($user->username != $username) {
         $userChanged = true;
         $user->username = $username;
     }
     if ($user->email != $email) {
         $userChanged = true;
         $user->email = $email;
     }
     if ($user->validate()) {
         // Only Save user when something is changed
         if ($userChanged || $user->isNewRecord) {
             $user->save();
         }
         // Update Profile Fields
         foreach (ProfileField::model()->findAll('ldap_attribute != ""') as $profileField) {
             $ldapAttribute = $profileField->ldap_attribute;
             $profileFieldName = $profileField->internal_name;
             $user->profile->{$profileFieldName} = $node->getAttribute($ldapAttribute, 0);
         }
         if ($user->profile->validate()) {
             $user->profile->save();
             // Update Space Mapping
             foreach (Space::model()->findAll('ldap_dn != ""') as $space) {
                 if (in_array($space->ldap_dn, $node->getAttribute('memberOf'))) {
                     $space->addMember($user->id);
                 }
             }
         } else {
             Yii::log('Could not create or update ldap user profile! (' . print_r($user->profile->getErrors(), true) . ")", CLogger::LEVEL_ERROR, 'authentication_ldap');
         }
     } else {
         Yii::log('Could not create or update ldap user! (' . print_r($user->getErrors(), true) . ")", CLogger::LEVEL_ERROR, 'authentication_ldap');
     }
     return $user;
 }
Ejemplo n.º 11
0
 /**
  * Updates or creates user by given ldap node
  * 
  * @param Zend_Ldap_Node $node
  * @return User User Object
  */
 public function handleLdapUser($node)
 {
     $usernameAttribute = Setting::Get('usernameAttribute', 'authentication_ldap');
     if ($usernameAttribute == '') {
         $usernameAttribute = 'sAMAccountName';
     }
     $emailAttribute = Setting::Get('emailAttribute', 'authentication_ldap');
     if ($emailAttribute == '') {
         $emailAttribute = 'mail';
     }
     $username = $node->getAttribute($usernameAttribute, 0);
     $email = $node->getAttribute($emailAttribute, 0);
     $guid = $this->binToStrGuid($node->getAttribute('objectGUID', 0));
     // Try to load User:
     $userChanged = false;
     $user = null;
     if ($guid != "") {
         $user = User::findOne(array('guid' => $guid, 'auth_mode' => User::AUTH_MODE_LDAP));
     } else {
         // Fallback use e-mail
         $user = User::findOne(array('email' => $email, 'auth_mode' => User::AUTH_MODE_LDAP));
     }
     if ($user === null) {
         $user = new User();
         if ($guid != "") {
             $user->guid = $guid;
         }
         $user->status = User::STATUS_ENABLED;
         $user->auth_mode = User::AUTH_MODE_LDAP;
         $user->group_id = 1;
         Yii::info('Create ldap user ' . $username . '!');
     }
     // Update Users Field
     if ($user->username != $username) {
         $userChanged = true;
         $user->username = $username;
     }
     if ($user->email != $email) {
         $userChanged = true;
         $user->email = $email;
     }
     if ($user->validate()) {
         // Only Save user when something is changed
         if ($userChanged || $user->isNewRecord) {
             $user->save();
         }
         // Update Profile Fields
         foreach (ProfileField::find()->andWhere(['!=', 'ldap_attribute', ''])->all() as $profileField) {
             $ldapAttribute = $profileField->ldap_attribute;
             $profileFieldName = $profileField->internal_name;
             $user->profile->{$profileFieldName} = $node->getAttribute($ldapAttribute, 0);
         }
         if ($user->profile->validate() && $user->profile->save()) {
             $this->trigger(self::EVENT_UPDATE_USER, new ParameterEvent(['user' => $user, 'node' => $node]));
         } else {
             Yii::error('Could not create or update ldap user profile! (' . print_r($user->profile->getErrors(), true) . ")");
         }
     } else {
         Yii::error('Could not create or update ldap user! (' . print_r($user->getErrors(), true) . ")");
     }
     return $user;
 }
Ejemplo n.º 12
0
 /**
  * ZF-11611
  */
 public function testRdnAttributesHandleMultiValuedAttribute3()
 {
     $data = array('dn' => 'cn=funkygroup,ou=Groupes,dc=domain,dc=local', 'objectClass' => array('groupOfNames', 'top'), 'cn' => array(0 => 'The Funkygroup'), 'member' => 'uid=john-doe,ou=Users,dc=domain,dc=local');
     $node = Zend_Ldap_Node::fromArray($data, true);
     $cn = $node->getAttribute('cn');
     $this->assertEquals(array(0 => 'The Funkygroup', 1 => 'funkygroup'), $cn);
 }
Ejemplo n.º 13
0
 /**
  * Returns the specified DN as a Zend_Ldap_Node
  *
  * @param  string|Zend_Ldap_Dn $dn
  * @return Zend_Ldap_Node|null
  * @throws Zend_Ldap_Exception
  */
 public function getNode($dn)
 {
     /**
      * Zend_Ldap_Node
      */
     return Zend_Ldap_Node::fromLdap($dn, $this);
 }
Ejemplo n.º 14
0
 /**
  * Returns the specified DN as a Zend_Ldap_Node
  *
  * @param  string|Zend_Ldap_Dn $dn
  * @return Zend_Ldap_Node|null
  * @throws Zend_Ldap_Exception
  */
 public function getNode($dn)
 {
     /**
      * Zend_Ldap_Node
      */
     //$1 'Zend/Ldap/Node.php';
     return Zend_Ldap_Node::fromLdap($dn, $this);
 }