Les permissions

Le cadenas rose, Paris, France, sept. 2010
Le cadenas rose

J’ai défini des constantes pour définir les permissions dans Dotclear et les plugins peuvent eux aussi en définir de nouvelles, ce qui est le cas de :

  • Blogroll : dcLinks::PERMISSION_BLOGROLL = 'blogroll'
  • Pages : dcPages::PERMISSION_PAGES = 'pages'

Donc normalement, au lieu d’indiquer des permissions comme par exemple 'usage,contentadmin,pages' pour le plugin Attachments, on peut utiliser :

dcCore::app()->auth->makePermissions([
    dcAuth::PERMISSION_USAGE,
    dcAuth::PERMISSION_CONTENT_ADMIN,
    dcPages::PERMISSION_PAGES,
]);

Ça évite de se tromper de libellé de permission et ça rend transparent une future modification de celui-ci.

Sauf que…

Comme le plugin Attachments est chargé avant le plugin Pages, ça hurle sur l’écran parce qu’il ne connait pas (encore) dcPages::PERMISSION_PAGES :-p

Évidemment !

La solution idéale serait de modifier l’autoloader pour qu’il se débrouille tout seul, mais on en est pas encore là dans la branche 2 de Dotclear1

À ce stade, trois solutions :

  1. Laisser les libellés en l’état, mais c’est moche ces libellés répétés partout dans le code !

  2. Faire en sorte que le plugin Pages soit chargé avant le plugin Attachments2

  3. Faire en sorte que les permissions soient connues avant le chargement effectif des plugins.

J’avoue que la 3e me titille un peu et je suis à ça de rajouter un fichier _init.php3 dans les plugins en question (ceux qui définissent leur propre permission) et les charger avant tout le reste.

Z’en dites ?


Pour info, l’ordre de chargement des fichiers d’un plugin est celui-ci :

  1. _define.php.

  2. _prepend.php (s’il existe).

  3. locales/??/main.po ou locales/??/main.php (fichier de traduction), en fonction de la langue (s’il existe), ainsi que l’éventuel fichier d’aide locales/resources.php ; dans le contexte d’administration uniquement.

  4. _admin.php ou _public.php ou _xmlrpc.php selon le contexte (s’il existe).


Les possibilités de nom qui me viennent en tête :

  1. _init.php
  2. _bootstrap.php
  3. _load.php

  1. C’est déjà le cas dans la branche 3.0 de JcDenis. ↩︎

  2. Au risque de foutre le dawa dans les dépendances relatives d’autres parties de leurs codes respectifs. ↩︎

  3. Je ne suis pas encore tout à fait fixé sur le nom de ce fichier, il y a peut-être plus explicite. ↩︎

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15488

Haut de page