badge Dotclear 2.36

Le mécanisme de session de Dotclear dans ces versions inférieures à 2.36 était très stricte et écrit en dur là ou il y en avait besoin. La version 2.36 introduit des outils de connexions variés et la possibilité d'utilser des sessions coté publique, ce qui a obligé la team à revoir le fonctionnement des sessions. Pas de révoluton, les classes de sessions n'ont quasi pas été modifié, mais des changements qui peuvent porter à consequence.

Backend

Précedement, les sessions coté admin (backend) n'existait que lorsqu'on en avait besoin, c'est à dire lorsque l'utilisateur était connu. On pouvait donc faire simplement un test d'existence de session pour diveses routines. Mais depuis la version 2.36, les sessions sont toujours démarrées et existantes. Et peuvent donc être vide et sans valeur de test.

Frontend

Coté publique, les sessions fournies par Dotclear n'existait tout simplement pas avant la version 2.36. Depuis si un plugin veut utiliser des sessions coté publique, une simple ligne de code suffira à la démarrer.

App::session()->start();

Et si plusieurs plugins utilisent de session coté publique, chacun ajoutera cette ligne de code. Pas de soucis à l'appeler plusiseurs fois, elle teste qu'elle a déjà été appelé. Ce nouveau systeme de session commune coté publique risque de poser problème avec de vieux plugins pas à jour utilisant leurs propres sessions, ce qui provoquera des erreurs assez fatales ! Un bien pour un mal, car avec la 2.36 on met tout le monde d'accord.

Sans me faire de pub (qui risque plutôt de m'apporter des problèmes) un plugin FrontendSession propose de gérer les sessions coté publique avec tous les points d'entrée nécessaire à d'autres plugins. Widget, formulaire de login, menu utilisateur, page de gestion des options publique de l'utilisateur, etc...