Fix: Les fonctions de modifications de mot de passe ne fonctionnait pas en mode "cryptage"

This commit is contained in:
Laurent Destailleur 2006-11-25 21:39:58 +00:00
parent 160d128aba
commit 3ee2424bde
7 changed files with 82 additions and 49 deletions

View File

@ -105,8 +105,8 @@ class Conf
$db->free($result);
// On reprend parametres du conf.php
//... Mettre les param
// On reprend parametres du fichier de config conf.php
// \TODO Mettre tous les param du fichier conf dans une propriété de la classe
$this->password_encrypted=$this->global->DATABASE_PWD_ENCRYPTED;

View File

@ -124,7 +124,7 @@ if ($_POST["action"] == "set" || $_POST["action"] == "upgrade")
$sql = "INSERT INTO llx_user(datec,login,pass,admin,name,code) VALUES (now()";
$sql.= ",'".$_POST["login"]."'";
$sql.= ",'".($conf->global->DATABASE_PWD_ENCRYPTED?md5($_POST["pass"]):$_POST["pass"])."'";
$sql.= ",'".($conf->password_encrypted?md5($_POST["pass"]):$_POST["pass"])."'";
$sql.= ",1,'Administrateur','AD".$code."')";
//print "sql=".$sql." ".mysql_errno($db->db);
$resql=$db->query($sql);

View File

@ -21,14 +21,18 @@ DeleteUser=Delete
DeleteAUser=Delete a user
DisableGroup=Disable
DisableAGroup=Disable a group
EnableAUser=Enable a user
EnableAGroup=Enable a group
DeleteGroup=Delete
DeleteAGroup=Delete a group
ConfirmDisableUser=Are you sure you want to disable user %s ?
ConfirmDisableGroup=Are you sure you want to disable group %s ?
ConfirmDeleteUser=Are you sure you want to delete user %s ?
ConfirmDeleteGroup=Are you sure you want to delete group %s ?
ConfirmReinitPassword=Are you sure you want to generate a new password for user %s ?
ConfirmSendNewPassword=Are you sure you want to generate and send new password for user %s ?
ConfirmDisableUser=Are you sure you want to disable user <b>%s</b> ?
ConfirmDisableGroup=Are you sure you want to disable group <b>%s</b> ?
ConfirmDeleteUser=Are you sure you want to delete user <b>%s</b> ?
ConfirmDeleteGroup=Are you sure you want to delete group <b>%s</b> ?
ConfirmEnableUser=Are you sure you want to enable user <b>%s</b> ?
ConfirmEnableGroup=Are you sure you want to enable group <b>%s</b> ?
ConfirmReinitPassword=Are you sure you want to generate a new password for user <b>%s</b> ?
ConfirmSendNewPassword=Are you sure you want to generate and send new password for user <b>%s</b> ?
NewUser=New user
CreateUser=Create user
SearchAGroup=Search a group

View File

@ -21,14 +21,18 @@ DeleteUser=Supprimer
DeleteAUser=Supprimer un utilisateur
DisableGroup=Désactiver
DisableAGroup=Désactiver un groupe
EnableAUser=Réactiver un utilisateur
EnableAGroup=Réactiver un groupe
DeleteGroup=Supprimer
DeleteAGroup=Supprimer un groupe
ConfirmDisableUser=Êtes-vous sûr de vouloir désactiver l'utilisateur %s ?
ConfirmDisableGroup=Êtes-vous sûr de vouloir désactiver le groupe %s ?
ConfirmDeleteUser=Êtes-vous sûr de vouloir supprimer l'utilisateur %s ?
ConfirmDeleteGroup=Êtes-vous sûr de vouloir supprimer le groupe %s ?
ConfirmReinitPassword=Êtes-vous sûr de vouloir générer un nouveau mot de passe pour l'utilisateur %s ?
ConfirmSendNewPassword=Êtes-vous sûr de vouloir générer et envoyer un nouveau mot de passe pour l'utilisateur %s ?
ConfirmDisableUser=Êtes-vous sûr de vouloir désactiver l'utilisateur <b>%s</b> ?
ConfirmDisableGroup=Êtes-vous sûr de vouloir désactiver le groupe <b>%s</b> ?
ConfirmDeleteUser=Êtes-vous sûr de vouloir supprimer l'utilisateur <b>%s</b> ?
ConfirmDeleteGroup=Êtes-vous sûr de vouloir supprimer le groupe <b>%s</b> ?
ConfirmEnableUser=Êtes-vous sûr de vouloir réactiver l'utilisateur <b>%s</b> ?
ConfirmEnableGroup=Êtes-vous sûr de vouloir réactiver le groupe <b>%s</b> ?
ConfirmReinitPassword=Êtes-vous sûr de vouloir générer un nouveau mot de passe pour l'utilisateur <b>%s</b> ?
ConfirmSendNewPassword=Êtes-vous sûr de vouloir générer et envoyer un nouveau mot de passe pour l'utilisateur <b>%s</b> ?
NewUser=Nouvel utilisateur
CreateUser=Créer l'utilisateur
SearchAGroup=Rechercher un groupe

View File

@ -107,7 +107,7 @@ if (! session_id() && ! isset($_SESSION["dol_user"]) && ! isset($_SESSION["dol_
$pear = $dolibarr_main_db_type.'://'.$dolibarr_main_db_user.':'.$dolibarr_main_db_pass.'@'.$dolibarr_main_db_host.'/'.$dolibarr_main_db_name;
if ($conf->global->DATABASE_PWD_ENCRYPTED)
if ($conf->password_encrypted)
{
$cryptType = "md5";
}

View File

@ -60,8 +60,8 @@ class User
var $user_mobile;
var $admin;
var $login;
var $pass;
var $oldpass;
var $pass; // Mot de passe en clair
var $pass_indatabase; // Mot de passe crypté en base
var $datec;
var $datem;
var $societe_id;
@ -105,6 +105,8 @@ class User
*/
function fetch($login='')
{
global $conf;
// Recupere utilisateur
$sql = "SELECT u.rowid, u.name, u.firstname, u.email, u.office_phone, u.office_fax, u.user_mobile,";
$sql.= " u.code, u.admin, u.login, u.pass, u.webcal_login, u.note,";
@ -139,9 +141,10 @@ class User
$this->fullname = trim($this->prenom . ' ' . $this->nom);
$this->code = $obj->code;
$this->login = $obj->login;
$this->pass = $obj->pass;
$this->office_phone = $obj->office_phone;
$this->office_fax = $obj->office_fax;
$this->pass_indatabase = $obj->pass;
if (! $conf->password_encrypted) $this->pass = $obj->pass;
$this->office_phone = $obj->office_phone;
$this->office_fax = $obj->office_fax;
$this->user_mobile = $obj->user_mobile;
$this->email = $obj->email;
$this->admin = $obj->admin;
@ -240,7 +243,7 @@ class User
*/
function addrights($rid,$allmodule='',$allperms='')
{
dolibarr_syslog("User::addrights $rid, $allmodule, $allperms");
dolibarr_syslog("User.class::addrights $rid, $allmodule, $allperms");
$err=0;
$whereforadd='';
@ -730,7 +733,7 @@ class User
else
{
$this->error=$this->db->error()." - $sql";
dolibarr_syslog("User::create_from_contact - 20 - ".$this->error);
dolibarr_syslog("User.class::create_from_contact - 20 - ".$this->error);
$this->db->rollback();
return -2;
@ -739,7 +742,7 @@ class User
else
{
$this->error=$this->db->error()." - $sql";
dolibarr_syslog("User::create_from_contact - 10 - ".$this->error);
dolibarr_syslog("User.class::create_from_contact - 10 - ".$this->error);
$this->db->rollback();
return -1;
@ -748,7 +751,7 @@ class User
else
{
// $this->error deja positionné
dolibarr_syslog("User::create_from_contact - 0");
dolibarr_syslog("User.class::create_from_contact - 0");
$this->db->rollback();
return $result;
@ -800,35 +803,44 @@ class User
*/
function update($notrigger=0)
{
global $conf,$langs;
global $conf,$langs,$user;
// Nettoyage parametres
$this->nom=trim($this->nom);
$this->prenom=trim($this->prenom);
$this->login=trim($this->login);
if ($conf->global->DATABASE_PWD_ENCRYPTED && $this->oldpass != $this->pass)
{
$this->pass = md5($this->pass);
}
else
{
$this->pass=trim($this->pass);
}
$this->pass=trim($this->pass);
$this->email=trim($this->email);
$this->note=trim($this->note);
$this->admin=$this->admin?$this->admin:0;
if (!strlen($this->code)) $this->code = $this->login;
dolibarr_syslog("User::update notrigger=".$notrigger." nom=".$this->nom.", prenom=".$this->prenom);
dolibarr_syslog("User.class::update notrigger=".$notrigger." nom=".$this->nom.", prenom=".$this->prenom);
$error=0;
// Mise a jour mot de passe
if ($this->pass)
{
if ($conf->password_encrypted)
{
// On met a jour systematiquement
$this->password($user,$this->pass,$conf->password_encrypted);
}
else
{
if ($this->pass != $this->pass_indatabase)
{
// Si mot de passe saisi et différent de celui en base
$this->password($user,$this->pass,$conf->password_encrypted);
}
}
}
// Mise a jour autres infos
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET ";
$sql .= " name = '".addslashes($this->nom)."'";
$sql .= ", firstname = '".addslashes($this->prenom)."'";
$sql .= ", login = '".addslashes($this->login)."'";
if ($this->pass) $sql .= ", pass = '".addslashes($this->pass)."'";
$sql .= ", admin = ".$this->admin;
$sql .= ", office_phone = '$this->office_phone'";
$sql .= ", office_fax = '$this->office_fax'";
@ -901,33 +913,38 @@ class User
/**
* \brief Change le mot de passe d'un utilisateur
* \param user Object user de l'utilisateur qui fait la modification
* \param password Nouveau mot de passe (généré par defaut si non communiqué)
* \param password Nouveau mot de passe (à générer si non communiqué)
* \param isencrypted 0 ou 1 si il faut crypter le mot de passe en base (0 par défaut)
* \return string mot de passe, < 0 si erreur
*/
function password($user, $password='', $isencrypted = 0)
function password($user, $password='', $isencrypted=0)
{
global $langs;
$longueurmotdepasse=8;
dolibarr_syslog("User.class::password user=".$user." password=--hidden-- isencrypted=".$isencrypted);
dolibarr_syslog("User.class::password user=".$user." password=".eregi_replace('.','*',$password)." isencrypted=".$isencrypted);
// Si nouveau mot de passe non communiqué, on génère par module
if (! $password)
{
// TODO Mettre appel au module de génération de mot de passe
$longueurmotdepasse=8;
$password = strtolower(substr(md5(uniqid(rand())),0,$longueurmotdepasse));
}
// Cryptage mot de passe
if ($isencrypted)
{
// Crypte avec systeme encodage par defaut du PHP
//$sqlpass = crypt($password, makesalt());
$sqlpass = md5($password);
$password_indatabase = md5($password);
}
else
{
$sqlpass = $password;
$password_indatabase = $password;
}
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET pass = '".addslashes($sqlpass)."'";
// Mise a jour
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET pass = '".addslashes($password_indatabase)."'";
$sql.= " WHERE rowid = ".$this->id;
$result = $this->db->query($sql);
@ -936,6 +953,7 @@ class User
if ($this->db->affected_rows())
{
$this->pass=$password;
$this->pass_indatabase=$password_indatabase;
// Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php");

View File

@ -245,7 +245,7 @@ if ($_POST["action"] == 'update' && ! $_POST["cancel"] && $caneditfield)
$edituser = new User($db, $_GET["id"]);
$edituser->fetch();
$edituser->oldpass = $edituser->pass;
//$edituser->oldpass_indatabase = $edituser->pass_indatabase;
$edituser->nom = trim($_POST["nom"]);
$edituser->prenom = trim($_POST["prenom"]);
@ -734,7 +734,7 @@ else
*/
if ($action == 'enable')
{
$html->form_confirm("fiche.php?id=$fuser->id",$langs->trans("EnableAUser"),$langs->trans("ConfirmEnabledUser",$fuser->login),"confirm_enable");
$html->form_confirm("fiche.php?id=$fuser->id",$langs->trans("EnableAUser"),$langs->trans("ConfirmEnableUser",$fuser->login),"confirm_enable");
print '<br>';
}
@ -812,9 +812,16 @@ else
}
else
{
print '<td width="50%">'.eregi_replace('.','*',$fuser->pass);
print '<td width="50%">';
if ($fuser->pass) print eregi_replace('.','*',$fuser->pass);
else
{
if ($user->admin) print $langs->trans("Crypted").': '.$fuser->pass_indatabase;
else print $langs->trans("Hidden");
}
print "</td>";
}
print "</td></tr>\n";
print "</tr>\n";
// Administrateur
print '<tr><td width="25%" valign="top">'.$langs->trans("Administrator").'</td>';