Par exemple celle-là :
https://forge.indepnet.net/tarballs/glp … 17.tar.bz2
Depuis la mise à jour à la version 0.78.1 les nouveaux utilisateurs ne sont plus reconnus, leur compte est bien créé en base de données mais aucune information n'est récupéré depuis le LDAP. Leur profil est vide et ils n'ont aucun droit.
J'ai l'impression qu'un ou plusieurs refactoring se soient mal passés https://forge.indepnet.net/projects/glp … v_to=11229
J'ai corrigé ça et supprimé une variable inutile dans ce patch (basé sur la branche 0.78-bugfixes du svn).
Index: auth.class.php
===================================================================
--- auth.class.php (revision 13627)
+++ auth.class.php (working copy)
@@ -517,12 +517,11 @@
if ($this->getAlternateAuthSystemsUserLogin($authtype)
&& !empty($this->user->fields['name'])) {
- $user = $this->user->fields['name'];
+ $login_name = $this->user->fields['name'];
// Used for log when login process failed
- $login_name = $user;
$this->auth_succeded = true;
$this->extauth = 1;
- $this->user_present = $this->user->getFromDBbyName(addslashes($user));
+ $this->user_present = $this->user->getFromDBbyName(addslashes($login_name));
$this->user->fields['authtype'] = $authtype;
// if LDAP enabled too, get user's infos from LDAP
$this->user->fields["auths_id"] = $CFG_GLPI['authldaps_id_extra'];
@@ -537,23 +536,24 @@
$ldap_method["deref_option"]);
if ($ds) {
+ $params['value'] = $login_name;
$params['method'] = AuthLdap::IDENTIFIER_LOGIN;
$params['fields'][AuthLdap::IDENTIFIER_LOGIN] = $ldap_method["login_field"];
$user_dn = AuthLdap::searchUserDn($ds,
array('basedn' => $ldap_method["basedn"],
'login_field' => $ldap_method['login_field'],
'search_parameters' => $params,
- 'user_params' => $user,
+ 'user_params' => $params,
'condition' => $ldap_method["condition"]));
if ($user_dn) {
- $this->user->getFromLDAP($ds, $ldap_method, $user_dn, $user);
+ $this->user->getFromLDAP($ds, $ldap_method, $user_dn['dn'], $login_name);
}
}
}
}
// Reset to secure it
- $this->user->fields['name'] = $user;
+ $this->user->fields['name'] = $login_name;
$this->user->fields["last_login"] = $_SESSION["glpi_currenttime"];
} else {
Il ne devrait théoriquement pas y avoir d'effet de bord.
En espérant que mon patch soit accepté pour la 0.78.2
Bonne fin de semaine et merci pour votre boulot !
]]>