Vous êtes sur la page 1sur 2

29/02/2020 Authentification — Dolibarr ERP CRM Wiki

Authentification

Retour index
Documentation développeur

Introduction
Le système d'authentification de Dolibarr devient relativement complexe, et un bug peut être particulièrement difficile
à trouver si l'on ne connaît pas le processus d'authentification. Cette page présente une découpe du processus, qui
permet de suivre la procédure et d'intervenir là où il le faut. Une connaissance de la notion de session PHP est requise.

Processus
Le processus démarre par l'appel de la page que l'on souhaite voir. Par exemple, la page d'accueil htdocs/index.php.
Mais ce n'est pas ce fichier qui assure la demande d'authentification. En fait toute page de Dolibarr inclut un fichier
main.inc.php qui lui même inclut le fichier master.inc.php. Nous avons donc:

<mapage.php>
<main.inc.php>
<master.inc.php>
#1#
</master.inc.php>
#2#
if (! isset($_SESSION["dol_login"]))
{
if (isset($_POST["username"]))
{
...
// if user and pass are ok, we set $login
$login=
}
if (! $login)
{
// We show login page
include_once(DOL_DOCUMENT_ROOT."/lib/security.lib.php");
dol_loginfunction($langs,$conf,$mysoc);
exit;
}
...
}
</main.inc.php>
#3#
</mapage.php>

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).

https://wiki.dolibarr.org/index.php/Authentification 1/2
29/02/2020 Authentification — Dolibarr ERP CRM Wiki

Le #2# représente le code d'authentification: Le programme vérifie si on est dans une session logué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. Aussi on rentre dans le
if, et $login étant faux, on affiche alors le formulaire HTML de login et le script se termine.

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 continuons et positionnons $_SESSION["dol_login"], ainsi au prochain appel d'une page, nous
ne rentrons plus dans le "if (! isset($_SESSION["dol_login"]))".

Le #3# correspond à la vérification des permissions métiers et à l'affichage de la page si c'est ok. Voir la page See
Permissions pour plus d'informations.

Les modules de login


Les modules de login sont les fichiers qui contiennent les fonctions qui contrôlent la validité d'un couple
user/password. Il y a un fichier par module. Chaque fichier assure un type de contrôle différent.

Le fichier htdocs/core/login/functions_http.php contrôle la validité du couple user/mot de passe par une


authentification de type http Basic.
Le fichier htdocs/core/login/functions_ldap.php vérifie la validité d'un couple user/mot de passe dans un
annuaire LDAP.
Le fichier htdocs/core/login/functions_dolibarr.php vérifie la validité d'un couple user/mot de passe dans la
base de donnée Dolibarr.
Chaque fichier contient en fait uniquement une fonction check_user_password_xxx mais Dolibarr ne va en
utiliser qu'un. Ce sera celui dont la valeur xxx correspond a la valeur de la variable
dolibarr_main_authentication du fichier conf/conf.php. Dans ce fichier, Dolibarr sollicite la seule fonction qui
s'y trouve en envoyant comme paramètres le user et mot de passe.La fonction renvoie vrai si le couple est valide.

Récupérée de « https://wiki.dolibarr.org/index.php?title=Authentification&oldid=42020 »

https://wiki.dolibarr.org/index.php/Authentification 2/2