Ressources Spip-Agora Clever Age

Modifier les droits par défaut dans SPIP-Agora, le 17 novembre 2005

SPIP-Agora intègre un système de gestion des droits flexibles permettant la mise à disposition d’actions (notamment dans le back-office)

Le système de driver pour les autorisations est géré dans l’arborescence des fichiers de SPIP-Agora dans le répertoire : ecrire/include/authorization.

Dans ce répertoire, le sous répertoire common représente le système de droit par défaut. Plutôt que le modifier directement  [1] il vaut mieux utiliser le système de driver de SPIP-Agora.

Quelques explications

Dans SPIP-Agora, à chaque profil (administrateur, webmestre, rédacteur ...) est associé un poids numérique :

ProfilPoids
visiteur 1
rédacteur
 rédacteur en chef
 webmestre  8
 administrateur 16 

 [2]

Les actions sont décrites dans le fichier ecrire/include/authorisation/ActionDB_common.php. Voici un aperçu de ce fichier :


<?php 
// ....
$actiondb["creerArticle"]=2;
$actiondb["supprimerBreve"]=8;
$actiondb["refuserBreve"]=4;
$actiondb["modifierBreveApresPublication"]=4;
$actiondb["creerBreve"]=2;
$actiondb["modifierBreveAvantPublication"]=2;
$actiondb["afficherAuteursVisiteurs"]=16;
// ...
?>

Pour chaque action, représentée par les clefs de ce tableau associatif, un poids est également associé. Le prérequis, pour un contributeur, à la réalisation de cette action (par exemple, creerArticle pour créer un article) est qu’il dispose d’un poids numérique au moins égal au poids de l’action.  [3]

Mise en place de votre propre driver

  1. déclarer votre driver dans le fichier ecrire/mes_options.php3 en y ajoutant ce code

    <?php
    ...
    $GLOBALS['type_authorization'] = "mes_autorisations";
    ...
    ?>
  2. créer un répertoire sous ecrire/include/authorization, appelons le mes_autorisations
  3. copier le fichier suivant dans ce répertoire : ActionDB_common.php et renommer le en changeant le common en mes_autorisations

Si, par exemple, on désire que les rédacteurs puissent créer des rubriques, il suffit de modifier l’entrée creerRubrique et de lui affecter un poids de 2 :


<?php
// ...
$actiondb["creerRubrique"]=2;
// ... 
?>

Il faut ensuite impérativement effacer les fichiers suivants correspondant au cache des autorisations :

  • ecrire/data/auth_1.php
  • ecrire/data/auth_2.php
  • ecrire/data/auth_4.php
  • ecrire/data/auth_8.php
  • ecrire/data/auth_16.php

Puis vous déconnecter et vous connecter à nouveau.

Je vous invite à consulter un cas pratique

[1] ce qui rendrait votre instance de SPIP-Agora particulière par rapport à la version de référence

[2] ces poids sont fixés dans la table _profils

[3] ce n’est pas toujours suffisant ; par exemple, dans le cas de la création d’un article, il faut également que le contributeur ait accès à la rubrique. C’est pourquoi qu’à chaque action est associé une classe métier. Voir ce cas pratique de modification d’une classe métier