mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-18 00:09:06 +01:00
- bug Addons Samba - Génération uidnumber
- [#1663] Error when adding a person : adaptation à la version 2 de Net_LDAP
This commit is contained in:
parent
7383def59b
commit
03edde1437
2 changed files with 49 additions and 17 deletions
|
@ -138,7 +138,9 @@
|
|||
return;
|
||||
}
|
||||
|
||||
$uidNumber = $ldapObject -> attrs[ LS_SAMBA_UIDNUMBER_ATTR ] -> getValue() * 2 + LS_SAMBA_SID_BASE_USER;
|
||||
$uidnumber_attr_val = $ldapObject -> attrs[ LS_SAMBA_UIDNUMBER_ATTR ] -> getValue();
|
||||
$uidnumber_attr_val = $uidnumber_attr_val[0];
|
||||
$uidNumber = $uidnumber_attr_val * 2 + LS_SAMBA_SID_BASE_USER;
|
||||
$sambaSID = LS_SAMBA_DOMAIN_SID . '-' . $uidNumber;
|
||||
|
||||
return ($sambaSID);
|
||||
|
|
|
@ -175,20 +175,35 @@ class LSldap {
|
|||
* @param[in] $object_type string Type de l'objet Ldap
|
||||
* @param[in] $dn string DN de l'entré Ldap
|
||||
*
|
||||
* @retval ldapentry Un objet ldapentry (PEAR::Net_LDAP2)
|
||||
* @retval ldapentry|array Un objet ldapentry (PEAR::Net_LDAP2)
|
||||
* ou un tableau (si c'est une nouvelle entrée):
|
||||
* Array (
|
||||
* 'entry' => ldapentry,
|
||||
* 'new' => true
|
||||
* )
|
||||
*/
|
||||
function getEntry($object_type,$dn) {
|
||||
if(isset($GLOBALS['LSobjects'][$object_type])){
|
||||
$obj_conf=$GLOBALS['LSobjects'][$object_type];
|
||||
$entry = $this -> cnx -> getEntry($dn);
|
||||
if (Net_LDAP2::isError($entry)) {
|
||||
$newentry = new Net_LDAP2_Entry(&$this -> cnx);
|
||||
$newentry -> dn($dn);
|
||||
$newentry -> add(array('objectclass' => $obj_conf['objectclass']));
|
||||
//$newentry = new Net_LDAP2_Entry(&$this -> cnx);
|
||||
//$newentry -> dn($dn);
|
||||
//$newentry -> add(array('objectclass' => $obj_conf['objectclass']));
|
||||
//foreach($obj_conf['attrs'] as $attr_name => $attr_conf) {
|
||||
// $newentry->add(array($attr_name => $attr_conf['default_value']));
|
||||
//}
|
||||
$attributes = array(
|
||||
'objectclass' => $obj_conf['objectclass']
|
||||
);
|
||||
foreach($obj_conf['attrs'] as $attr_name => $attr_conf) {
|
||||
$newentry->add(array($attr_name => $attr_conf['default_value']));
|
||||
if( isset($attr_conf['default_value']) ) {
|
||||
$attributes[$attr_name]=$attr_conf['default_value'];
|
||||
}
|
||||
return $newentry;
|
||||
}
|
||||
$newentry = Net_LDAP2_Entry::createFresh($dn,$attributes);
|
||||
|
||||
return array('entry' => $newentry,'new' => true);
|
||||
}
|
||||
else {
|
||||
return $entry;
|
||||
|
@ -216,7 +231,16 @@ class LSldap {
|
|||
function update($object_type,$dn,$change) {
|
||||
debug($change);
|
||||
$dropAttr=array();
|
||||
if($entry=$this -> getEntry($object_type,$dn)) {
|
||||
$entry=$this -> getEntry($object_type,$dn);
|
||||
if (is_array($entry)) {
|
||||
$new = $entry['new'];
|
||||
$entry = $entry['entry'];
|
||||
}
|
||||
else {
|
||||
$new = false;
|
||||
}
|
||||
|
||||
if($entry) {
|
||||
foreach($change as $attrName => $attrVal) {
|
||||
$drop = true;
|
||||
if (is_array($attrVal)) {
|
||||
|
@ -238,20 +262,26 @@ class LSldap {
|
|||
}
|
||||
}
|
||||
$entry -> replace($changeData);
|
||||
debug('change : '.print_r($changeData,true));
|
||||
debug('drop : '.print_r($dropAttr,true));
|
||||
debug('change : <pre>'.print_r($changeData,true).'</pre>');
|
||||
debug('drop : <pre>'.print_r($dropAttr,true).'</pre>');
|
||||
|
||||
if ($new) {
|
||||
$ret = $this -> cnx -> add($entry);
|
||||
}
|
||||
else {
|
||||
$ret = $entry -> update();
|
||||
if (!empty($dropAttr)) {
|
||||
foreach($dropAttr as $attr) {
|
||||
$entry -> delete($attr);
|
||||
}
|
||||
}
|
||||
|
||||
if (Net_LDAP2::isError($ret)) {
|
||||
$GLOBALS['LSerror'] -> addErrorCode(5,$dn);
|
||||
debug('NetLdap-Error : '.$ret->getMessage());
|
||||
}
|
||||
else {
|
||||
if (!empty($dropAttr)) {
|
||||
foreach($dropAttr as $attr) {
|
||||
$entry -> delete($attr);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue