Fix: Synchro with group not done when editing group only of a user.
This commit is contained in:
parent
61a6105c98
commit
13ea9c91fd
@ -508,7 +508,7 @@ class Ldap
|
||||
*
|
||||
* @param string $dn DN entry key
|
||||
* @param string $info Attributes array
|
||||
* @param User $user Objet user that delete
|
||||
* @param User $user Objet user that update
|
||||
* @param string $olddn Old DN entry key (before update)
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
* \brief Fichier de gestion des triggers LDAP
|
||||
*/
|
||||
require_once (DOL_DOCUMENT_ROOT."/core/class/ldap.class.php");
|
||||
require_once (DOL_DOCUMENT_ROOT."/user/class/usergroup.class.php");
|
||||
|
||||
|
||||
/**
|
||||
@ -210,6 +211,82 @@ class InterfaceLdapsynchro
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
elseif ($action == 'USER_SETINGROUP')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if ($conf->ldap->enabled && $conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
||||
// Must edit $object->newgroupid
|
||||
$usergroup=new UserGroup($this->db);
|
||||
if ($object->newgroupid > 0)
|
||||
{
|
||||
$usergroup->fetch($object->newgroupid);
|
||||
|
||||
$oldinfo=$usergroup->_load_ldap_info();
|
||||
$olddn=$usergroup->_load_ldap_dn($oldinfo);
|
||||
|
||||
// Verify if entry exist
|
||||
$container=$usergroup->_load_ldap_dn($oldinfo,1);
|
||||
$search = "(".$usergroup->_load_ldap_dn($oldinfo,2).")";
|
||||
$records=$ldap->search($container,$search);
|
||||
if (count($records) && $records['count'] == 0)
|
||||
{
|
||||
$olddn = '';
|
||||
}
|
||||
|
||||
$info=$usergroup->_load_ldap_info(); // Contains all members, included the new one (insert already done before trigger call)
|
||||
$dn=$usergroup->_load_ldap_dn($info);
|
||||
|
||||
$result=$ldap->update($dn,$info,$user,$olddn);
|
||||
if ($result < 0)
|
||||
{
|
||||
$this->error="ErrorLDAP ".$ldap->error;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
elseif ($action == 'USER_REMOVEFROMGROUP')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if ($conf->ldap->enabled && $conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
||||
// Must edit $object->newgroupid
|
||||
$usergroup=new UserGroup($this->db);
|
||||
if ($object->oldgroupid > 0)
|
||||
{
|
||||
$usergroup->fetch($object->oldgroupid);
|
||||
|
||||
$oldinfo=$usergroup->_load_ldap_info();
|
||||
$olddn=$usergroup->_load_ldap_dn($oldinfo);
|
||||
|
||||
// Verify if entry exist
|
||||
$container=$usergroup->_load_ldap_dn($oldinfo,1);
|
||||
$search = "(".$usergroup->_load_ldap_dn($oldinfo,2).")";
|
||||
$records=$ldap->search($container,$search);
|
||||
if (count($records) && $records['count'] == 0)
|
||||
{
|
||||
$olddn = '';
|
||||
}
|
||||
|
||||
$info=$usergroup->_load_ldap_info(); // Contains all members, included the new one (insert already done before trigger call)
|
||||
$dn=$usergroup->_load_ldap_dn($info);
|
||||
|
||||
$result=$ldap->update($dn,$info,$user,$olddn);
|
||||
if ($result < 0)
|
||||
{
|
||||
$this->error="ErrorLDAP ".$ldap->error;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
// Groupes
|
||||
elseif ($action == 'GROUP_CREATE')
|
||||
|
||||
@ -1576,6 +1576,8 @@ class User extends CommonObject
|
||||
{
|
||||
if (! $error && ! $notrigger)
|
||||
{
|
||||
$this->newgroupid=$group;
|
||||
|
||||
// Appel des triggers
|
||||
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
|
||||
$interface=new Interfaces($this->db);
|
||||
@ -1632,6 +1634,8 @@ class User extends CommonObject
|
||||
{
|
||||
if (! $error && ! $notrigger)
|
||||
{
|
||||
$this->oldgroupid=$group;
|
||||
|
||||
// Appel des triggers
|
||||
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
|
||||
$interface=new Interfaces($this->db);
|
||||
|
||||
@ -53,11 +53,11 @@ class UserGroup extends CommonObject
|
||||
/**
|
||||
* Constructor de la classe
|
||||
*
|
||||
* @param DoliDb $DB Database handler
|
||||
* @param DoliDb $db Database handler
|
||||
*/
|
||||
function UserGroup($DB)
|
||||
function UserGroup($db)
|
||||
{
|
||||
$this->db = $DB;
|
||||
$this->db = $db;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user