2
0
forked from Wavyzz/dolibarr

Fix: A lot of fix on LDAP synchro.

This commit is contained in:
Laurent Destailleur
2009-08-11 20:16:58 +00:00
parent 9ad62d0f66
commit 51cc44ba2e
23 changed files with 435 additions and 219 deletions

View File

@@ -21,15 +21,10 @@
*/
/**
\file htdocs/adherents/adherent.class.php
\ingroup adherent
\brief Fichier de la classe permettant la gestion d'un adherent
\author Rodolphe Qiedeville
\author Jean-Louis Bergamo
\author Laurent Destailleur
\author Sebastien Di Cintio
\author Benoit Mortier
\version $Id$
* \file htdocs/adherents/adherent.class.php
* \ingroup adherent
* \brief Fichier de la classe permettant la gestion d'un adherent
* \version $Id$
*/
require_once(DOL_DOCUMENT_ROOT."/commonobject.class.php");
@@ -1923,8 +1918,8 @@ class Adherent extends CommonObject
/**
* \brief Retourne chaine DN complete dans l'annuaire LDAP pour l'objet
* \param info Info string loaded by _load_ldap_info
* \param mode 0=Return DN without key inside (ou=xxx,dc=aaa,dc=bbb)
* 1=Return full DN (uid=qqq,ou=xxx,dc=aaa,dc=bbb)
* \param mode 0=Return full DN (uid=qqq,ou=xxx,dc=aaa,dc=bbb)
* 1=Return DN without key inside (ou=xxx,dc=aaa,dc=bbb)
* 2=Return key only (uid=qqq)
* \return string DN
*/

View File

@@ -45,16 +45,6 @@ if ($user->societe_id > 0)
$socid = $user->societe_id;
}
/*
* Affichage page
*/
llxHeader();
$html = new Form($db);
$adh = new Adherent($db);
$adh->id = $rowid;
$result=$adh->fetch($rowid);
@@ -75,17 +65,22 @@ if (! $result)
/*
* Affichage onglets
* View
*/
llxHeader();
$html = new Form($db);
$head = member_prepare_head($adh);
dol_fiche_head($head, 'ldap', $langs->trans("Member"), 0, 'user');
/*
* Fiche en mode visu
*/
print '<table class="border" width="100%">';
// Ref
@@ -129,7 +124,7 @@ $langs->load("admin");
// LDAP DN
print '<tr><td>LDAP '.$langs->trans("LDAPMemberDn").'</td><td class="valeur">'.$conf->global->LDAP_MEMBER_DN."</td></tr>\n";
// LDAP Cl<EFBFBD>
// LDAP Cle
print '<tr><td>LDAP '.$langs->trans("LDAPNamingAttribute").'</td><td class="valeur">'.$conf->global->LDAP_KEY_MEMBERS."</td></tr>\n";
// LDAP Server
@@ -146,9 +141,10 @@ print '</div>';
print '<br>';
print_titre($langs->trans("LDAPInformationsForThisMember"));
// Affichage attributs LDAP
print_titre($langs->trans("LDAPInformationsForThisMember"));
print '<table width="100%" class="noborder">';
print '<tr class="liste_titre">';

View File

@@ -280,8 +280,9 @@ if (function_exists("ldap_connect"))
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result2=$ldap->update($dn,$info,$user);
$result3=$ldap->delete($dn);
$result1=$ldap->delete($dn); // To be sure to delete existing records
$result2=$ldap->add($dn,$info,$user); // Now the test
$result3=$ldap->delete($dn); // Clean what we did
if ($result2 > 0)
{

View File

@@ -202,8 +202,9 @@ if (function_exists("ldap_connect"))
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result2=$ldap->update($dn,$info,$user);
$result3=$ldap->delete($dn);
$result1=$ldap->delete($dn); // To be sure to delete existing records
$result2=$ldap->add($dn,$info,$user); // Now the test
$result3=$ldap->delete($dn); // Clean what we did
if ($result2 > 0)
{

View File

@@ -394,8 +394,9 @@ if (function_exists("ldap_connect"))
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result2=$ldap->update($dn,$info,$user);
$result3=$ldap->delete($dn);
$result1=$ldap->delete($dn); // To be sure to delete existing records
$result2=$ldap->add($dn,$info,$user); // Now the test
$result3=$ldap->delete($dn); // Clean what we did
if ($result2 > 0)
{

View File

@@ -296,8 +296,9 @@ if (function_exists("ldap_connect"))
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result2=$ldap->update($dn,$info,$user);
$result3=$ldap->delete($dn);
$result1=$ldap->delete($dn); // To be sure to delete existing records
$result2=$ldap->add($dn,$info,$user); // Now the test
$result3=$ldap->delete($dn); // Clean what we did
if ($result2 > 0)
{

View File

@@ -137,12 +137,14 @@ class Contact extends CommonObject
* \param id Id du contact a mettre a jour
* \param user Objet utilisateur qui effectue la mise a jour
* \param notrigger 0=non, 1=oui
* \return int <0 si erreur, >0 si ok
* \return int <0 if KO, >0 if OK
*/
function update($id, $user=0, $notrigger=0)
{
global $conf, $langs;
$error=0;
$this->id = $id;
// Nettoyage parametres
@@ -155,6 +157,8 @@ class Contact extends CommonObject
$this->phone_mobile=trim($this->phone_mobile);
$this->fax=trim($this->fax);
$this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET ";
if ($this->socid > 0) $sql .= " fk_soc='".addslashes($this->socid)."',";
if ($this->socid == -1) $sql .= " fk_soc=null,";
@@ -179,14 +183,9 @@ class Contact extends CommonObject
dol_syslog("Contact::update sql=".$sql,LOG_DEBUG);
$result = $this->db->query($sql);
if (! $result)
if ($result)
{
$this->error=$this->db->lasterror().' sql='.$sql;
dol_syslog("Contact::update Error ".$this->error,LOG_ERR);
return -1;
}
if (! $notrigger)
if (! $error && ! $notrigger)
{
// Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php");
@@ -196,15 +195,33 @@ class Contact extends CommonObject
// Fin appel triggers
}
if (! $error)
{
$this->db->commit();
return 1;
}
else
{
$this->db->rollback();
return -$error;
}
}
else
{
$this->db->rollback();
$this->error=$this->db->lasterror().' sql='.$sql;
dol_syslog("Contact::update Error ".$this->error,LOG_ERR);
return -1;
}
}
/**
* \brief Retourne chaine DN complete dans l'annuaire LDAP pour l'objet
* \param info Info string loaded by _load_ldap_info
* \param mode 0=Return DN without key inside (ou=xxx,dc=aaa,dc=bbb)
* 1=Return full DN (uid=qqq,ou=xxx,dc=aaa,dc=bbb)
* \param mode 0=Return full DN (uid=qqq,ou=xxx,dc=aaa,dc=bbb)
* 1=Return DN without key inside (ou=xxx,dc=aaa,dc=bbb)
* 2=Return key only (uid=qqq)
* \return string DN
*/

View File

@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2006-2007 Laurent Destailleur <eldy@users.sourceforge.net>
/* Copyright (C) 2006-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2006 Regis Houssin <regis@dolibarr.fr>
*
* This program is free software; you can redistribute it and/or modify
@@ -39,6 +39,11 @@ $contactid = isset($_GET["id"])?$_GET["id"]:'';
if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'contact', $contactid, 'socpeople');
$contact = new Contact($db);
$contact->fetch($_GET["id"], $user);
/*
* View
@@ -48,18 +53,11 @@ llxHeader();
$form = new Form($db);
$contact = new Contact($db);
$contact->fetch($_GET["id"], $user);
$head = contact_prepare_head($contact);
dol_fiche_head($head, 'ldap', $langs->trans("Contact"), 0, 'contact');
/*
* Fiche en mode visu
*/
print '<table class="border" width="100%">';
// Ref
@@ -94,7 +92,7 @@ print '</td></tr>';
// LDAP DN
print '<tr><td>LDAP '.$langs->trans("LDAPContactDn").'</td><td class="valeur" colspan="3">'.$conf->global->LDAP_CONTACT_DN."</td></tr>\n";
// LDAP Cl<EFBFBD>
// LDAP Cle
print '<tr><td>LDAP '.$langs->trans("LDAPNamingAttribute").'</td><td class="valeur" colspan="3">'.$conf->global->LDAP_KEY_CONTACTS."</td></tr>\n";
// LDAP Server
@@ -109,9 +107,9 @@ print '</div>';
print '<br>';
// Affichage attributs LDAP
print_titre($langs->trans("LDAPInformationsForThisContact"));
// Affichage attributs LDAP
print '<table width="100%" class="noborder">';
print '<tr class="liste_titre">';

View File

@@ -135,10 +135,15 @@ class InterfaceLdapsynchro
$ldap=new Ldap();
$ldap->connect_bind();
$oldobject=$object; // TODO Get oldobject
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result < 0)
{
$this->error="ErrorLDAP"." ".$ldap->error;
@@ -200,10 +205,15 @@ class InterfaceLdapsynchro
$ldap=new Ldap();
$ldap->connect_bind();
$oldobject=$object; // TODO Get oldobject
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result < 0)
{
$this->error="ErrorLDAP"." ".$ldap->error;
@@ -258,10 +268,15 @@ class InterfaceLdapsynchro
$ldap=new Ldap();
$ldap->connect_bind();
$oldobject=$object; // TODO Get oldobject
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result < 0)
{
$this->error="ErrorLDAP"." ".$ldap->error;
@@ -320,10 +335,15 @@ class InterfaceLdapsynchro
$ldap=new Ldap();
$ldap->connect_bind();
$oldobject=$object; // TODO Get oldobject
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result < 0)
{
$this->error="ErrorLDAP"." ".$ldap->error;
@@ -347,10 +367,15 @@ class InterfaceLdapsynchro
$ldap=new Ldap();
$ldap->connect_bind();
$oldobject=$object; // TODO Get oldobject
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result < 0)
{
$this->error="ErrorLDAP"." ".$ldap->error;
@@ -367,10 +392,15 @@ class InterfaceLdapsynchro
$ldap=new Ldap();
$ldap->connect_bind();
$oldobject=$object; // TODO Get oldobject
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result < 0)
{
$this->error="ErrorLDAP"." ".$ldap->error;
@@ -412,10 +442,15 @@ class InterfaceLdapsynchro
$ldap=new Ldap();
$ldap->connect_bind();
$oldobject=$object; // TODO Get oldobject
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result < 0)
{
$this->error="ErrorLDAP"." ".$ldap->error;

View File

@@ -23,5 +23,6 @@ LDAPFieldLastSubscriptionDate=Last subscription date
LDAPFieldLastSubscriptionAmount=Last subscription amount
SynchronizeDolibarr2Ldap=Synchronize user (Dolibarr -> LDAP)
UserSynchronized=User synchronized
GroupSynchronized=Group synchronized
ForceSynchronize=Force synchronizing Dolibarr -> LDAP
ErrorFailedToReadLDAP=Failed to read LDAP database. Check LDAP module setup and database accessibility.

View File

@@ -23,5 +23,6 @@ LDAPFieldLastSubscriptionDate=Date dernière adhésion
LDAPFieldLastSubscriptionAmount=Montant dernière adhésion
SynchronizeDolibarr2Ldap=Synchroniser utilisateur (Dolibarr -> LDAP)
UserSynchronized=Utilisateur synchronisé
GroupSynchronized=Groupe synchronisé
ForceSynchronize=Forcer synchro Dolibarr -> LDAP
ErrorFailedToReadLDAP=Echec de la lecture de l'annuaire LDAP. Vérifier la configuration du module LDAP et l'accessibilité de l'annuaire.

View File

@@ -2620,11 +2620,11 @@ function dol_entity_decode($stringhtml,$pagecodeto='UTF-8')
}
/**
\brief Check if a string is a correct iso string
If not, it will we considered not HTML encoded even if it is by FPDF.
\remarks Example, if string contains euro symbol that has ascii code 128.
\param s String to check
\return int 0 if bad iso, 1 if good iso
* \brief Check if a string is a correct iso string
* If not, it will we considered not HTML encoded even if it is by FPDF.
* \remarks Example, if string contains euro symbol that has ascii code 128.
* \param s String to check
* \return int 0 if bad iso, 1 if good iso
*/
function dol_string_is_good_iso($s)
{

View File

@@ -388,50 +388,6 @@ class Ldap
}
/**
* \brief Mise <20> jour dans l'arbre LDAP
* \param dn DN
* \param info Tableau info
* \param user Objet user qui fait l'op<6F>ration
* \return int <0 si ko, >0 si ok
* \remarks Ldap object connect and bind must have been done
*/
function update($dn,$info,$user,$olddn='')
{
global $conf, $langs;
if (! $this->connection)
{
$this->error=$langs->trans("NotConnected");
return -2;
}
if (! $this->bind)
{
$this->error=$langs->trans("NotConnected");
return -3;
}
if (! $olddn) $olddn=$dn;
dol_syslog("Ldap::update dn=".$dn." olddn=".$olddn);
// On supprime et on ins<6E>re
$result = $this->delete($olddn);
$result = $this->add($dn, $info, $user);
if ($result <= 0)
{
$this->error = ldap_errno($this->connection)." ".ldap_error($this->connection)." ".$this->error;
dol_syslog("Ldap::update ".$this->error,LOG_ERR);
//print_r($info);
return -1;
}
else
{
dol_syslog("Ldap::update done successfully");
return 1;
}
}
/**
* \brief Checks a username and password - does this by logging on to the
@@ -482,8 +438,9 @@ class Ldap
* \brief Add a LDAP entry
* \param dn DN entry key
* \param info Attributes array
* \param user Objet utilisateru qui cr<63>e
* \return int <0 si KO, >0 si OK
* \param user Objet user that create
* \return int <0 if KO, >0 if OK
* \remarks Ldap object connect and bind must have been done
*/
function add($dn, $info, $user)
{
@@ -491,6 +448,18 @@ class Ldap
dol_syslog("Ldap::add dn=".$dn." info=".join(',',$info));
// Check parameters
if (! $this->connection)
{
$this->error="NotConnected";
return -2;
}
if (! $this->bind)
{
$this->error="NotConnected";
return -3;
}
// Encode to LDAP page code
$dn=$this->convFromOutputCharset($dn,$this->ldapcharset);
foreach($info as $key => $val)
@@ -516,10 +485,116 @@ class Ldap
}
}
/**
* \brief Modify a LDAP entry
* \param dn DN entry key
* \param info Attributes array
* \param user Objet user that modify
* \return int <0 if KO, >0 if OK
* \remarks Ldap object connect and bind must have been done
*/
function modify($dn, $info, $user)
{
global $conf;
dol_syslog("Ldap::modify dn=".$dn." info=".join(',',$info));
// Check parameters
if (! $this->connection)
{
$this->error="NotConnected";
return -2;
}
if (! $this->bind)
{
$this->error="NotConnected";
return -3;
}
// Encode to LDAP page code
$dn=$this->convFromOutputCharset($dn,$this->ldapcharset);
foreach($info as $key => $val)
{
if (! is_array($val)) $info[$key]=$this->convFromOutputCharset($val,$this->ldapcharset);
}
$this->dump($dn,$info);
//print_r($info);
$result=@ldap_modify($this->connection, $dn, $info);
if ($result)
{
dol_syslog("Ldap::modify successfull", LOG_DEBUG);
return 1;
}
else
{
$this->error=@ldap_error($this->connection);
dol_syslog("Ldap::modify failed: ".$this->error, LOG_ERR);
return -1;
}
}
/**
* \brief Modify a LDAP entry (to use if dn != olddn)
* \param dn DN entry key
* \param info Attributes array
* \param user Objet user that delete
* \param olddn Old DN entry key (before update)
* \return int <0 if KO, >0 if OK
* \remarks Ldap object connect and bind must have been done
*/
function update($dn,$info,$user,$olddn)
{
global $conf;
dol_syslog("Ldap::update dn=".$dn." olddn=".$olddn);
// Check parameters
if (! $this->connection)
{
$this->error="NotConnected";
return -2;
}
if (! $this->bind)
{
$this->error="NotConnected";
return -3;
}
if (! $olddn || $olddn != $dn)
{
// This case is not used for the moment
$result = $this->add($dn, $info, $user);
if ($result > 0 && $olddn && $olddn != $dn) $result = $this->delete($olddn); // If add fails, we do not try to delete old one
}
else
{
$result = $this->delete($olddn);
$result = $this->add($dn, $info, $user);
//$result = $this->modify($dn, $info, $user); // TODO Must use modify instead of delete/add when olddn is received (for the moment olddn is dn)
}
if ($result <= 0)
{
$this->error = ldap_errno($this->connection)." ".ldap_error($this->connection)." ".$this->error;
dol_syslog("Ldap::update ".$this->error,LOG_ERR);
//print_r($info);
return -1;
}
else
{
dol_syslog("Ldap::update done successfully");
return 1;
}
}
/**
* \brief Delete a LDAP entry
* \param dn DN entry key
* \return int <0 si KO, >0 si OK
* \remarks Ldap object connect and bind must have been done
*/
function delete($dn)
{
@@ -527,6 +602,18 @@ class Ldap
dol_syslog("Ldap::delete Delete LDAP entry dn=".$dn);
// Check parameters
if (! $this->connection)
{
$this->error="NotConnected";
return -2;
}
if (! $this->bind)
{
$this->error="NotConnected";
return -3;
}
// Encode to LDAP page code
$dn=$this->convFromOutputCharset($dn,$this->ldapcharset);

View File

@@ -153,8 +153,9 @@ function show_ldap_content($result,$level,$count,$var,$hide=0)
}
else
{
if ($hide) print eregi_replace('.','*',$val);
else print $val;
$newstring=@htmlentities($val,ENT_COMPAT,'UTF-8'); // Make entity encoding
if ($hide) print eregi_replace('.','*',$newstring);
else print $newstring;
print '</td></tr>';
}
}

View File

@@ -1566,8 +1566,8 @@ class User extends CommonObject
/**
* \brief Retourne chaine DN complete dans l'annuaire LDAP pour l'objet
* \param info Info string loaded by _load_ldap_info
* \param mode 0=Return DN without key inside (ou=xxx,dc=aaa,dc=bbb)
* 1=Return full DN (uid=qqq,ou=xxx,dc=aaa,dc=bbb)
* \param mode 0=Return full DN (uid=qqq,ou=xxx,dc=aaa,dc=bbb)
* 1=
* 2=Return key only (uid=qqq)
* \return string DN
*/
@@ -1581,6 +1581,11 @@ class User extends CommonObject
return $dn;
}
/**
* \brief Initialise tableau info (tableau des attributs LDAP)
* \return array Tableau info des attributs
*/
/**
* \brief Initialise tableau info (tableau des attributs LDAP)

View File

@@ -144,8 +144,8 @@ if ($_POST["action"] == 'update')
$editgroup = new Usergroup($db, $_GET["id"]);
$editgroup->fetch($_GET["id"]);
$editgroup->nom = $_POST["group"];
$editgroup->note = $_POST["note"];
$editgroup->nom = trim($_POST["group"]);
$editgroup->note = dol_htmlcleanlastbr($_POST["note"]);
$ret=$editgroup->update();

View File

@@ -42,33 +42,62 @@ if ($user->societe_id > 0)
$socid = $user->societe_id;
}
/*
* Affichage page
*/
llxHeader();
$form = new Form($db);
$fgroup = new Usergroup($db, $_GET["id"]);
$fgroup->fetch($_GET["id"]);
$fgroup->getrights();
/*
* Affichage onglets
* Actions
*/
$head = group_prepare_head($fgroup);
dol_fiche_head($head, 'ldap', $langs->trans("Group"));
if ($_GET["action"] == 'dolibarr2ldap')
{
$message="";
$db->begin();
$ldap=new Ldap();
$result=$ldap->connect_bind();
$oldobject=$fgroup; // TODO Get oldobject
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$fgroup->_load_ldap_info();
$dn=$fgroup->_load_ldap_dn($info);
$result=$ldap->add($dn,$info,$user);
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result >= 0)
{
$message.='<div class="ok">'.$langs->trans("GroupSynchronized").'</div>';
$db->commit();
}
else
{
$message.='<div class="error">'.$ldap->error.'</div>';
$db->rollback();
}
}
/*
* Fiche en mode visu
* View
*/
llxHeader();
$form = new Form($db);
$head = group_prepare_head($fgroup);
dol_fiche_head($head, 'ldap', $langs->trans("Group"));
print '<table class="border" width="100%">';
// Ref
@@ -97,7 +126,7 @@ $langs->load("admin");
// LDAP DN
print '<tr><td>LDAP '.$langs->trans("LDAPGroupDn").'</td><td class="valeur">'.$conf->global->LDAP_GROUP_DN."</td></tr>\n";
// LDAP Cl<EFBFBD>
// LDAP Cle
print '<tr><td>LDAP '.$langs->trans("LDAPNamingAttribute").'</td><td class="valeur">'.$conf->global->LDAP_KEY_GROUPS."</td></tr>\n";
// LDAP Server
@@ -109,12 +138,29 @@ print "</table>\n";
print '</div>';
print '<br>';
if ($message) { print $message; }
/*
* Barre d'actions
*/
print '<div class="tabsAction">';
if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap')
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$fgroup->id.'&amp;action=dolibarr2ldap">'.$langs->trans("ForceSynchronize").'</a>';
}
print "</div>\n";
if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap') print "<br>\n";
print_titre($langs->trans("LDAPInformationsForThisGroup"));
// Affichage attributs LDAP
print_titre($langs->trans("LDAPInformationsForThisGroup"));
print '<table width="100%" class="noborder">';
print '<tr class="liste_titre">';

View File

@@ -61,9 +61,15 @@ if ($_GET["action"] == 'dolibarr2ldap')
$ldap=new Ldap();
$result=$ldap->connect_bind();
$oldobject=$fuser; // TODO Get oldobject
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$fuser->_load_ldap_info();
$dn=$fuser->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user); // Marche en creation LDAP et mise a jour
$result=$ldap->add($dn,$info,$user);
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result >= 0)
{
@@ -146,7 +152,7 @@ if ($conf->global->LDAP_SERVER_TYPE == "activedirectory")
// LDAP DN
print '<tr><td>LDAP '.$langs->trans("LDAPUserDn").'</td><td class="valeur">'.$conf->global->LDAP_USER_DN."</td></tr>\n";
// LDAP Cl<EFBFBD>
// LDAP Cle
print '<tr><td>LDAP '.$langs->trans("LDAPNamingAttribute").'</td><td class="valeur">'.$conf->global->LDAP_KEY_USERS."</td></tr>\n";
// LDAP Server

View File

@@ -525,8 +525,8 @@ class UserGroup extends CommonObject
/**
* \brief Retourne chaine DN complete dans l'annuaire LDAP pour l'objet
* \param info Info string loaded by _load_ldap_info
* \param mode 0=Return DN without key inside (ou=xxx,dc=aaa,dc=bbb)
* 1=Return full DN (uid=qqq,ou=xxx,dc=aaa,dc=bbb)
* \param mode 0=Return full DN (uid=qqq,ou=xxx,dc=aaa,dc=bbb)
* 1=Return DN without key inside (ou=xxx,dc=aaa,dc=bbb)
* 2=Return key only (uid=qqq)
* \return string DN
*/
@@ -534,7 +534,7 @@ class UserGroup extends CommonObject
{
global $conf;
$dn='';
if ($mode==0) $dn=$conf->global->LDAP_KEY_GROUPS."=".$info[$conf->global->LDAP_KEY_GROUPS].",".$conf->global->LDAP_USER_DN;
if ($mode==0) $dn=$conf->global->LDAP_KEY_GROUPS."=".$info[$conf->global->LDAP_KEY_GROUPS].",".$conf->global->LDAP_GROUP_DN;
if ($mode==1) $dn=$conf->global->LDAP_GROUP_DN;
if ($mode==2) $dn=$conf->global->LDAP_KEY_GROUPS."=".$info[$conf->global->LDAP_KEY_GROUPS];
return $dn;

View File

@@ -122,10 +122,16 @@ if ($resql)
print $langs->transnoentities("UpdateMember")." rowid=".$member->id." ".$member->fullname;
$oldobject=$member;
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$member->_load_ldap_info();
$dn=$member->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->add($dn,$info,$user); // Wil fail if already exists
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result > 0)
{
print " - ".$langs->transnoentities("OK");

View File

@@ -86,10 +86,16 @@ if ($resql)
print $langs->trans("UpdateContact")." rowid=".$contact->id." ".$contact->getFullName($langs);
$oldobject=$contact;
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$contact->_load_ldap_info();
$dn=$contact->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->add($dn,$info,$user); // Wil fail if already exists
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result > 0)
{
print " - ".$langs->trans("OK");

View File

@@ -87,10 +87,16 @@ if ($resql)
print $langs->trans("UpdateGroup")." rowid=".$fgroup->id." ".$fgroup->nom;
$oldobject=$fgroup;
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$fgroup->_load_ldap_info();
$dn=$fgroup->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->add($dn,$info,$user); // Wil fail if already exists
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result > 0)
{
print " - ".$langs->trans("OK");

View File

@@ -87,10 +87,16 @@ if ($resql)
print $langs->trans("UpdateUser")." rowid=".$fuser->id." ".$fuser->fullname;
$oldobject=$fuser;
$oldinfo=$oldobject->_load_ldap_info();
$olddn=$oldobject->_load_ldap_dn($oldinfo);
$info=$fuser->_load_ldap_info();
$dn=$fuser->_load_ldap_dn($info);
$result=$ldap->update($dn,$info,$user);
$result=$ldap->add($dn,$info,$user); // Wil fail if already exists
$result=$ldap->update($dn,$info,$user,$olddn);
if ($result > 0)
{
print " - ".$langs->trans("OK");