Fix: Sauvegarde use en session ne fonctionne pas dans certains cas. On sauvegarde donc que le login et on recharge le user.

This commit is contained in:
Laurent Destailleur 2006-12-12 22:44:19 +00:00
parent 2716626296
commit baebd75b58

View File

@ -73,17 +73,17 @@ if (isset($dolibarr_auto_user)) $authmode=array('auto');
$sessionname="DOLSESSID_".$dolibarr_main_db_name; $sessionname="DOLSESSID_".$dolibarr_main_db_name;
session_name($sessionname); session_name($sessionname);
session_start(); session_start();
//dolibarr_syslog("We are in a session. Session name=".$sessionname." Session id()=".session_id().", _SESSION['dol_user']=".$_SESSION["dol_user"]); //dolibarr_syslog("We are in a session. Session name=".$sessionname." Session id()=".session_id().", _SESSION['dol_login']=".$_SESSION["dol_login"]);
// Si la demande du login a déjà eu lieu, on le récupère depuis la session // Si la demande du login a déjà eu lieu, on le récupère depuis la session
// sinon appel du module qui réalise sa demande. // sinon appel du module qui réalise sa demande.
// A l'issu de cette phase, la variable $login sera définie. // A l'issu de cette phase, la variable $login sera définie.
$login=''; $login='';
if (! session_id() || ! isset($_SESSION["dol_user"])) if (! session_id() || ! isset($_SESSION["dol_login"]))
{ {
// On est pas déjà authentifié, on demande le login/mot de passe // On est pas déjà authentifié, on demande le login/mot de passe
// A l'issu de cette demande, le login et un jeton doivent avoir été placé // A l'issu de cette demande, le login et un jeton doivent avoir été placé
// en session dans dol_user et dol_token et la page rappelée. // en session dans dol_login et dol_token et la page rappelée.
// MODE AUTO // MODE AUTO
if (in_array('auto',$authmode) && ! $login) if (in_array('auto',$authmode) && ! $login)
@ -208,19 +208,20 @@ if (! session_id() || ! isset($_SESSION["dol_user"]))
} }
else else
{ {
// On est déjà en session qui a sauvegardé profil utilisateur // On est déjà en session qui a sauvegardé login
$user=$_SESSION["dol_user"]; // Remarks: On ne sauvegarde pas objet user car pose pb dans certains cas mal idnetifiés
dolibarr_syslog("This is an already user logged session. _SESSION['dol_user']=".$user); $login=$_SESSION["dol_login"];
$user->db=$db; dolibarr_syslog("This is an already user logged session. _SESSION['dol_login']=".$login);
$user->fetch($login);
$login=$user->login; $login=$user->login;
} }
// Est-ce une nouvelle session // Est-ce une nouvelle session
if (! isset($_SESSION["dol_user"])) if (! isset($_SESSION["dol_login"]))
{ {
// Nouvelle session pour ce login // Nouvelle session pour ce login
$_SESSION["dol_user"]=$user; $_SESSION["dol_login"]=$user->login;
dolibarr_syslog("This is a new started user session. _SESSION['dol_user']=".$user); dolibarr_syslog("This is a new started user session. _SESSION['dol_login']=".$_SESSION["dol_login"]);
$user->update_last_login_date(); $user->update_last_login_date();
} }