Line 47:
Line 47:
Le #1# représente le chargement de tout un tas de librairie que nous utiliserons par la suite, ainsi que l'initialisation du contexte d'exécution du code PHP (langue, configuration, utilisateur vierge).
Le #1# représente le chargement de tout un tas de librairie que nous utiliserons par la suite, ainsi que l'initialisation du contexte d'exécution du code PHP (langue, configuration, utilisateur vierge).
−
Le #2# représente l'exécution de code propre à l'authentification: La verification que l'on ait dans une session loguée et si ce n'est pas le cas l'affichage de l'écran de login. C'est la que l'objet utilisateur est initialisé:
+
Le #2# represente le code d'authentification: Le programm vérifie si on est dans une session logguée (cela signifie que $_SESSION["dol_login"] existe). Si non, on vérifie si on a reçu des données issu du formulaire de login/mote passe. Au premier appel, ce n'est pas le cas puisque nous n'avons pas encore eu le formulaire à l'écran. Donc on continue et $login est faut, aussi on affiche alors le formulaire HTML et le script se termine.
−
L'exécution du login, elle, se présente comme suit:
+
Après la soumission du login, la même page (donc index.php) est appelée, nous allons toujours dans le #1#, puis #2# et cette fois $_POST["username"] est défini. Aussi nous vérifions si le user et mot de passe sont ok (la vérifivation est faite dans la base, en LDAP ou autre, cela dépend de la variable $dolibarr_main_authentication du fichier de configuration). Si le couple login/pass est ok, la variable $login est définie, aussi nous n'affichons pas à nouveau le formulaire mais nous conitnuons et positionnons $_SESSION["dol_login"], ainsi au prochain appel d'une page, nous ne rentrons plus dans le "if (! isset($_SESSION["dol_login"]))".
−
<source lang="php">
−
$authmode=array('http','dolibarr');
−
if (isset($dolibarr_auto_user)) $authmode=array('auto');
−
// 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.
−
// A l'issu de cette phase, la variable $login sera définie.
−
$login='';
−
if (! session_id() || ! isset($_SESSION["dol_user"]))
−
{
−
# Procédure de login. Affiche page login #
−
}
−
else
−
{
−
// On est déjà en session
−
$login=$_SESSION["dol_user"];
−
}
−
// Charge l'objet user depuis son login
−
$result=$user->fetch($login);
−
if ($result <= 0)
−
{
−
dolibarr_print_error($db,$langs->trans("ErrorCantLoadUserFromDolibarrDatabase"));
−
exit;
−
}
−
// Est-ce une nouvelle session
−
if (! isset($_SESSION["dol_user"]))
−
{
−
// 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;
−
}
−
</source>
−
−
Mais analysons plus en détail le code d'appel de la méthode de vérification du couple user/password (il y a plusieurs méthodes disponibles, donc plusieurs appels possibles et qui devraient être mutuellement exclusifs).
−
−
<source lang="php">
−
session_name("DOLSESSID_".$dolibarr_main_db_name);
−
session_start();
−
// Si on rentre ici suite a soumission d'un couple user/password alors
−
// Selon la valeur dolibarr_main_authentication, on appelle la fonction
−
// dans le bon fichier qui verifie si un couple user/mot de passe est correcte
−
// Sinon, on affiche la page de login
−
</source>
== Les modules de login ==
== Les modules de login ==