|
|
| 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 == |