Problème dolibarr connexion

Certains problèmes dolibarr connexion sont relativement complexe à résoudre. Le système d’authentification de Dolibarr est devenu très complexe et il peut être très difficile de trouver des erreurs si l’on n’est pas familier avec le processus d’authentification. Cette page détaille le processus, ce qui permet de suivre la procédure et d’intervenir si nécessaire. Une connaissance des concepts de session PHP est nécessaire.

Processus

Le processus commence par l’appel de la page souhaitée. Par exemple, la page d’accueil htdocs/index.php. Mais ce n’est pas le fichier qui s’occupe de la demande d’authentification. En fait, chaque page Dolibarr contient un fichier main.inc.php, qui contient à son tour le fichier master.inc.php. Il y a donc :


     
       
         #1#
       
       #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;
         }
         ...
       }
     
   #3#
 

Le #1# est utilisé pour charger un tas de bibliothèques qui seront utilisées plus tard, et pour initialiser l’environnement d’exécution (langage, configuration, utilisateur vide) du code PHP.

Le #2# représente le code d’authentification : le programme vérifie que nous sommes connectés (cela signifie que $_SESSION[« dol_login »] existe). Si ce n’est pas le cas, il vérifie si nous avons reçu les données du formulaire de connexion/mot de passe. Ce n’est pas le cas lors du premier appel, car le formulaire n’était pas encore à l’écran. Nous tapons donc if, et puisque $login est false, nous affichons le formulaire de connexion HTML et le script se termine.

Après avoir soumis le login, nous appelons la même page (c’est-à-dire index.php), continuons à la page #1#, puis à la page #2#, et cette fois $_POST[« username »] est défini. Nous vérifions également que l’utilisateur et le mot de passe sont corrects (la vérification est faite dans la base de données, LDAP ou ailleurs, cela dépend de la variable $dolibarr_main_authentication dans le fichier de configuration). Si la paire login/login est ok, nous définissons la variable $login pour ne pas réafficher le formulaire, mais allons de l’avant et définissons la variable $_SESSION[« dol_login »] pour que lorsque la page suivante est appelée, nous n’entrons pas « if ( ! isset($_SESSION[« dol_login »])) ».

Le #3# sert à vérifier les privilèges commerciaux et à afficher la page si tout est OK. Consultez la page View Permissions pour plus d’informations.

Les modules de login

Les modules de connexion sont les fichiers qui contiennent les fonctions de validation du couple utilisateur/mot de passe. Il y a un fichier pour chaque module. Chaque fichier fournit un type de vérification différent.

Le fichier htdocs/core/login/functions_http.php vérifie la validité de la paire utilisateur/mot de passe en utilisant l’authentification http Basic.
Le fichier htdocs/core/login/functions_ldap.php vérifie la validité d’un couple utilisateur/mot de passe dans un annuaire LDAP.
Le fichier htdocs/core/login/functions_dolibarr.php vérifie la validité d’un couple utilisateur/mot de passe dans la base de données Dolibarr.
Chaque fichier ne contient en fait qu’une seule fonction check_user_password_xxx, mais Dolibarr n’en utilisera qu’une seule. Ce sera celle dont la valeur xxx correspond à la valeur de la variable dolibarr_main_authentication dans le fichier conf/conf.php. Dans ce fichier, Dolibarr définit la seule fonction qui se trouve dans ce fichier, en envoyant l’utilisateur et le mot de passe comme paramètres.la fonction retourne true si la paire est valide.