Adapter son code pour la 2.24 n° 23

Suite des nouvelles constantes qui définissent les permissions :

  1. dcAuth::PERMISSION_ADMIN équivalent à admin (administration complète des contenus)
  2. dcAuth::PERMISSION_CONTENT_ADMIN équivalent à contentadmin (tous les billets et commentaires)
  3. dcAuth::PERMISSION_USAGE équivalent à usage (ses propres billets et commentaires)
  4. dcAuth::PERMISSION_PUBLISH équivalent à publish (publication — mise en ligne — des billets et commentaires)
  5. dcAuth::PERMISSION_DELETE équivalent à delete (suppression de billets et commentaires)
  6. dcAuth::PERMISSION_CATEGORIES équivalent à categories (gestion des catégories)
  7. dcAuth::PERMISSION_MEDIA_ADMIN équivalent à media_admin (gestion des médias)
  8. dcAuth::PERMISSION_MEDIA équivalent à media (gestion de ses propres médias)

Par ailleurs certains plugins définissent leurs propres permissions :

  1. dcLinks::PERMISSION_BLOGROLL équivalent à blogroll (gestion des liens)
  2. dcPages::PERMISSION_PAGES équivalent à pages (gestion des pages)

Notez que les permissions supplémentaires des plugins sont définies dans un fichier particulier, nommé _init.php (situé à la racine du dossier du plugin), fichier qui est chargé systématiquement1 avant même le fichier _define.php, ce qui permet d’utiliser ces permissions n’importe où, même si le ou les plugins correspondants sont désactivés.

Exemple de fichier _init.php :

<?php
/**
 * @brief blogroll, a plugin for Dotclear 2
 *
 * @package Dotclear
 * @subpackage Plugins
 *
 * @copyright Olivier Meunier & Association Dotclear
 * @copyright GPL-2.0-only
 */
if (!defined('DC_RC_PATH')) {
    return;
}

class dcLinks
{
    // Constants

    /**
     * Blogroll permission
     *
     * @var        string
     */
    public const PERMISSION_BLOGROLL = 'blogroll';
}

Dans Dotclear la liste des permissions est traditionnellement une liste de permissions séparées par des virgules et sans espaces. Pour simplifier cette construction — et être en mesure de la modifier dans le futur si besoin — une fonction utilitaire, nommée dcCore::app()->auth->makePermissions() est disponible pour construire cette liste à partir d’un tableau de permission.

Exemple (pris dans le fichier _define.php du plugin attachments :

Avant :

…
'permissions' => 'usage,contentadmin,pages',
'priority'    => 999,
'type'        => 'plugin',
…

Après :

…
'permissions' => dcCore::app()->auth->makePermissions([
    dcAuth::PERMISSION_USAGE,
    dcAuth::PERMISSION_CONTENT_ADMIN,
    dcPages::PERMISSION_PAGES,
]),
'priority' => 999,
'type'     => 'plugin',
…

Autre exemple pris dans la page de gestion des catégories :

dcPage::check('categories');

qui devient :

dcPage::check(dcCore::app()->auth->makePermissions([
    dcAuth::PERMISSION_CATEGORIES,
]));

Techniquement pas de différence au niveau de l’exécution du code puisque les constantes conservent les mêmes valeurs qu’auparavant pour les noms des permissions, mais, d’une part, c’est plus explicite dans le code, par ailleurs ça permet, si besoin, de modifier ces valeurs sans casser le code qui s’en sert.


  1. Y compris en mode de secours. ↩︎

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

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/15526

Haut de page