Gestion modification use en transaction

This commit is contained in:
Laurent Destailleur 2005-02-03 15:04:53 +00:00
parent eff68c9eac
commit 23607a1593
3 changed files with 64 additions and 35 deletions

View File

@ -37,4 +37,5 @@ LastGroupsCreated=Last created groups
LastUsersCreated=Last %s users created
ShowGroup=Show group
ShowUser=Show user
NonAffectedUsers=Non affected users
NonAffectedUsers=Non affected users
UserModified=User modified successfully

View File

@ -58,7 +58,7 @@ class User
var $societe_id;
var $webcal_login;
var $errorstr;
var $error;
var $userpref_limite_liste;
var $all_permissions_are_loaded; /**< \private all_permissions_are_loaded */
@ -668,6 +668,8 @@ class User
function create()
{
global $langs;
$sql = "SELECT login FROM ".MAIN_DB_PREFIX."user WHERE login ='$this->login';";
//$sql = "SELECT login FROM ".MAIN_DB_PREFIX."user WHERE login ='$this->email';";
if ($this->db->query($sql))
@ -677,7 +679,7 @@ class User
if ($num)
{
$this->errorstr = "Ce login existe déjà";
$this->error = $langs->trans("ErrorLoginAlreadyExists");
return 0;
}
else
@ -720,6 +722,8 @@ class User
function create_from_contact($contact)
{
global $langs;
$this->nom = $contact->nom;
$this->prenom = $contact->prenom;
$this->email = $contact->email;
@ -735,7 +739,7 @@ class User
if ($num)
{
$this->errorstr = "Ce login existe déjà";
$this->error = $langs->trans("ErrorLoginAlreadyExists");
return 0;
}
else
@ -811,13 +815,14 @@ class User
}
/**
* \brief Mise à jour en base d'un utilisateur
*
* \brief Mise à jour en base d'un utilisateur
* \return <0 si echec, >0 si ok
*/
function update()
{
global $langs;
$sql = "SELECT login FROM ".MAIN_DB_PREFIX."user WHERE login ='$this->login' AND rowid <> $this->id;";
@ -829,8 +834,8 @@ class User
if ($num)
{
$this->errorstr = "Ce login existe déjà";
return 0;
$this->error = $langs->trans("ErrorLoginAlreadyExists");
return -1;
}
else
{
@ -867,13 +872,16 @@ class User
}
/**
* \brief Change le mot de passe d'un utilisateur et l'envoie par mail
* \param password nouveau mot de passe (généré par defaut si non communiqué)
* \param isencrypted 0 ou 1 si il faut crypter le mot de passe en base (0 par défaut)
* \brief Change le mot de passe d'un utilisateur et l'envoie par mail
* \param password Nouveau mot de passe (généré par defaut si non communiqué)
* \param isencrypted 0 ou 1 si il faut crypter le mot de passe en base (0 par défaut)
* \return int <0 si erreur, 0 si changement ok mais envoi mail ko, 1 si ok
*/
function password($password='', $isencrypted = 0)
{
global $langs;
if (! $password)
{
$password = strtolower(substr(md5(uniqid(rand())),0,6));
@ -898,19 +906,25 @@ class User
if ($this->db->affected_rows())
{
$mesg = "Votre mot de passe pour accéder à Dolibarr a été changé :\n\n";
$mesg .= "Login : $this->login\n";
$mesg .= "Mot de passe : $password\n\n";
$mesg .= "Adresse : ".substr($_SERVER["SCRIPT_URI"],0,strlen($_SERVER["SCRIPT_URI"]) - 14);
if (mail($this->email, "Mot de passe Dolibarr", $mesg))
$mesg .= $langs->trans("Login")." : $this->login\n";
$mesg .= $langs->trans("Password")." : $password\n\n";
if (mail($this->email, $langs->trans("NewPassword"), $mesg))
{
return 1;
return 1;
}
else {
$this->error=$langs->trans("ErrorFailtedToSendPassword");
return 0;
}
}
else {
return -2;
}
}
else
{
dolibarr_print_error($this->db);
return -1;
}
}
@ -921,7 +935,7 @@ class User
function error()
{
return $this->errorstr;
return $this->error;
}
/**

View File

@ -108,25 +108,39 @@ if ($_POST["action"] == 'add' && $user->admin)
if ($_POST["action"] == 'update' && $user->admin)
{
$edituser = new User($db, $_GET["id"]);
$edituser->fetch();
$db->begin();
$edituser->nom = $_POST["nom"];
$edituser->note = $_POST["note"];
$edituser->prenom = $_POST["prenom"];
$edituser->login = $_POST["login"];
$edituser->email = $_POST["email"];
$edituser->admin = $_POST["admin"];
$edituser->webcal_login = $_POST["webcal_login"];
if (! $edituser->update())
$edituser = new User($db, $_GET["id"]);
$edituser->fetch();
$edituser->nom = $_POST["nom"];
$edituser->note = $_POST["note"];
$edituser->prenom = $_POST["prenom"];
$edituser->login = $_POST["login"];
$edituser->email = $_POST["email"];
$edituser->admin = $_POST["admin"];
$edituser->webcal_login = $_POST["webcal_login"];
$ret=$edituser->update();
if ($ret < 0)
{
print $edituser->error();
$message='<div class="error">'.$edituser->error.'</div>';
}
if (isset($password) && $password !='' )
if ($ret >= 0 && isset($_POST["password"]) && $_POST["password"] !='' )
{
$edituser->password($password,$conf->password_encrypted);
$ret=$edituser->password($password,$conf->password_encrypted);
if ($ret > 0) {
$message='<div class="error">'.$edituser->error.'</div>';
}
}
if ($ret >= 0) {
$message.='<div class="ok">'.$langs->trans("UserModififed").'</div>';
$db->commit();
} else {
$db->rollback;
}
}
if ($_GET["action"] == 'password' && $user->admin)
@ -136,7 +150,7 @@ if ($_GET["action"] == 'password' && $user->admin)
if ($edituser->password('',$conf->password_encrypted))
{
$message = $langs->trans("PasswordChangedAndSentTo",$edituser->email);
$message = '<div class="ok">'.$langs->trans("PasswordChangedAndSentTo",$edituser->email).'</div>';
}
}
@ -255,7 +269,6 @@ else
if ($_GET["action"] == 'perms')
{
if ($message) { print "$message<br>"; }
/*
* Ecran ajout/suppression permission
@ -415,6 +428,7 @@ else
print "</div>\n";
if ($message) { print $message; }
/*
* Barre d'actions