Qual: Simplification et purification du code de gestion de la logon
This commit is contained in:
parent
2dd6b94222
commit
9772fa43a0
@ -70,15 +70,17 @@ $authmode=array('http','dolibarr');
|
|||||||
//$authmode=array('ldap');
|
//$authmode=array('ldap');
|
||||||
if (isset($dolibarr_auto_user)) $authmode=array('auto');
|
if (isset($dolibarr_auto_user)) $authmode=array('auto');
|
||||||
|
|
||||||
|
$sessionname="DOLSESSID_".$dolibarr_main_db_name;
|
||||||
|
session_name($sessionname);
|
||||||
|
session_start();
|
||||||
|
//dolibarr_syslog("We are in a session. Session name=".$sessionname." Session id()=".session_id().", _SESSION['dol_user']=".$_SESSION["dol_user"]);
|
||||||
|
|
||||||
// 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"]) && ! isset($_SESSION["dol_token"]))
|
if (! session_id() || ! isset($_SESSION["dol_user"]))
|
||||||
{
|
{
|
||||||
session_name("DOLSESSID_".$dolibarr_main_db_name);
|
|
||||||
session_start();
|
|
||||||
|
|
||||||
// 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_user et dol_token et la page rappelée.
|
||||||
@ -121,7 +123,7 @@ if (! session_id() && ! isset($_SESSION["dol_user"]) && ! isset($_SESSION["dol_
|
|||||||
);
|
);
|
||||||
|
|
||||||
$aDol = new DOLIAuth("DB", $params, "dol_loginfunction");
|
$aDol = new DOLIAuth("DB", $params, "dol_loginfunction");
|
||||||
$aDol->setSessionName("DOLSESSID_".$dolibarr_main_db_name);
|
$aDol->setSessionName($sessionname);
|
||||||
$aDol->start();
|
$aDol->start();
|
||||||
$result = $aDol->getAuth(); // Si deja logue avec succes, renvoie vrai, sinon effectue un redirect sur page loginfunction et renvoie false
|
$result = $aDol->getAuth(); // Si deja logue avec succes, renvoie vrai, sinon effectue un redirect sur page loginfunction et renvoie false
|
||||||
if ($result)
|
if ($result)
|
||||||
@ -171,6 +173,7 @@ if (! session_id() && ! isset($_SESSION["dol_user"]) && ! isset($_SESSION["dol_
|
|||||||
);
|
);
|
||||||
|
|
||||||
$aDol = new DOLIAuth("LDAP", $params, "dol_loginfunction");
|
$aDol = new DOLIAuth("LDAP", $params, "dol_loginfunction");
|
||||||
|
$aDol->setSessionName($sessionname);
|
||||||
$aDol->start();
|
$aDol->start();
|
||||||
$result = $aDol->getAuth(); // Si deja logue avec succes, renvoie vrai, sinon effectue un redirect sur page loginfunction et renvoie false
|
$result = $aDol->getAuth(); // Si deja logue avec succes, renvoie vrai, sinon effectue un redirect sur page loginfunction et renvoie false
|
||||||
if ($result)
|
if ($result)
|
||||||
@ -194,28 +197,31 @@ if (! session_id() && ! isset($_SESSION["dol_user"]) && ! isset($_SESSION["dol_
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Charge l'objet user depuis son login
|
||||||
|
$result=$user->fetch($login);
|
||||||
|
if ($result <= 0)
|
||||||
|
{
|
||||||
|
dolibarr_print_error($db,$langs->trans("ErrorCantLoadUserFromDolibarrDatabase"));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// On est déjà en session
|
// On est déjà en session qui a sauvegardé profil utilisateur
|
||||||
$login=$_SESSION["dol_user"];
|
$user=$_SESSION["dol_user"];
|
||||||
}
|
dolibarr_syslog("This is an already user logged session. _SESSION['dol_user']=".$user);
|
||||||
|
$user->db=$db;
|
||||||
// Charge l'objet user depuis son login
|
$login=$user->login;
|
||||||
$result=$user->fetch($login);
|
|
||||||
if ($result <= 0)
|
|
||||||
{
|
|
||||||
dolibarr_print_error($db,$langs->trans("ErrorCantLoadUserFromDolibarrDatabase"));
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Est-ce une nouvelle session
|
// Est-ce une nouvelle session
|
||||||
if (! isset($_SESSION["dol_user"]))
|
if (! isset($_SESSION["dol_user"]))
|
||||||
{
|
{
|
||||||
// Nouvelle session pour ce login
|
// Nouvelle session pour ce login
|
||||||
dolibarr_syslog("New session in DOLSESSID_".$dolibarr_main_db_name.": ".session_id());
|
|
||||||
$user->update_last_login_date();
|
|
||||||
$_SESSION["dol_user"]=$user;
|
$_SESSION["dol_user"]=$user;
|
||||||
|
dolibarr_syslog("This is a new started user session. _SESSION['dol_user']=".$user);
|
||||||
|
$user->update_last_login_date();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user