diff --git a/htdocs/conf/conf.class.php b/htdocs/conf/conf.class.php
index 1df733aaebd..a0c43774c86 100644
--- a/htdocs/conf/conf.class.php
+++ b/htdocs/conf/conf.class.php
@@ -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;
diff --git a/htdocs/install/etape5.php b/htdocs/install/etape5.php
index 52c49e0896b..ea080f50e86 100644
--- a/htdocs/install/etape5.php
+++ b/htdocs/install/etape5.php
@@ -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);
diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang
index 1a697e7f652..3a8985c3fc8 100755
--- a/htdocs/langs/en_US/users.lang
+++ b/htdocs/langs/en_US/users.lang
@@ -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 %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 ?
+ConfirmEnableUser=Are you sure you want to enable user %s ?
+ConfirmEnableGroup=Are you sure you want to enable 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 ?
NewUser=New user
CreateUser=Create user
SearchAGroup=Search a group
diff --git a/htdocs/langs/fr_FR/users.lang b/htdocs/langs/fr_FR/users.lang
index 87a8888110f..c28a26974b6 100755
--- a/htdocs/langs/fr_FR/users.lang
+++ b/htdocs/langs/fr_FR/users.lang
@@ -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 %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 ?
+ConfirmEnableUser=Êtes-vous sûr de vouloir réactiver l'utilisateur %s ?
+ConfirmEnableGroup=Êtes-vous sûr de vouloir réactiver 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 ?
NewUser=Nouvel utilisateur
CreateUser=Créer l'utilisateur
SearchAGroup=Rechercher un groupe
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 5f9942f0de2..fecc6161634 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -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";
}
diff --git a/htdocs/user.class.php b/htdocs/user.class.php
index fcd8e3d1c61..1c88403d1c5 100644
--- a/htdocs/user.class.php
+++ b/htdocs/user.class.php
@@ -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");
diff --git a/htdocs/user/fiche.php b/htdocs/user/fiche.php
index 21d9fc2226b..e7065121f47 100644
--- a/htdocs/user/fiche.php
+++ b/htdocs/user/fiche.php
@@ -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 '
';
}
@@ -812,9 +812,16 @@ else
}
else
{
- print '