Le plugin « Autorité »

Ce plugin permet de configurer des « autorisations » différentes de celles par défaut.

Introduction

D’aucuns trouvent le modèle d’autorisations de SPIP trop rigide (voir « psychorigide ») : par exemple, seuls les rédacteurs en qui l’on a confiance (et qu’on a donc promu « administrateurs ») sont autorisés à modifier les articles déjà publiés.

Depuis sa version 1.9.2, SPIP propose toutefois une API (interface de programmation) qui centralise tous les contrôles d’autorisations diverses et variées.

Le plugin « Autorité » est le premier à exploiter cette API pour proposer d’autres modes de fonctionnement hiérarchique. Il utilise (et nécessite) le plugin CFG, ce qui fait que son code reste relativement simple, en tous cas sans superflu.

Fonctionnalités

Dans sa version 0.9, le plugin « Autorité » propose les possibilités suivantes :

Rôle de webmestre

Ce rôle est indispensable pour modifier la configuration du plugin. Le webmestre est, par défaut, l’administrateur id_auteur=1 du site.

Les webmestres ainsi définis ont également le privilège de ne plus être obligés de passer par FTP pour valider les opérations sensibles du site, comme la mise à jour de la base de données ou la restauration d’un dump.

On peut changer la liste des webmestres en allant éditer le fichier config/mes_options.php (à créer le cas échéant), pour y indiquer l’id_auteur des auteurs qui auront les autorisations de webmestre. Par exemple, si les webmestres sont les administrateurs 2, 4 et 11 :

<?php
define ('_ID_WEBMESTRES', '2:4:11');
?>

Droits des auteurs et visiteurs

  • Auteur modifie article : chaque rédacteur (ou visiteur si l’on utilise un plugin tiers type Openpublishing) peut modifier les articles dont il est l’auteur (uniquement via les crayons pour les visiteurs) ;
  • Auteur modère forum : chaque rédacteur peut modérer le forum des articles dont il est l’auteur ;
  • Auteur modère pétition : chaque rédacteur peut modérer la pétition des articles dont il est l’auteur.

À noter : le premier de ces choix valide obligatoirement les deux suivants.

Droits des rédacteurs

  • Rédacteur modifie email : chaque rédacteur peut modifier son email sur sa fiche d’informations personnelles ;
  • Mots-clés : qui peut créer et éditer les mots-clés (administrateurs restreints, rédacteurs...) ;
  • Rédacteur voit stats : les rédacteurs peuvent visualiser les statistiques.

Crayons

  • Editer les forums : par défaut, personne n’est autorisé à modifier les forums ; ce réglage permet de laisser le webmestre (ou les administrateurs) éditer les forums. Mais aussi, si on le souhaite, les auteurs des messages de forum eux-mêmes (à condition qu’ils soient identifiés). Une option (très expérimentale) permet de ne laisser cette dernière autorisation que pour une durée d’une heure ;
  • Editer les signatures : par défaut, personne n’est autorisé à modifier les signatures de pétition. Ce réglage permet d’ouvrir ce droit au webmestre ou aux administrateurs.

Attention : pour ces deux réglages, SPIP n’offre pas d’interface de modification ; il faut utiliser Crayons (ou développer un plugin spécifique).

Espace wiki

Après avoir choisi dans le menu un secteur que l’on veut traiter comme un wiki (c’est-à-dire éditable par tous depuis l’espace public — à condition d’avoir une interface, par exemple les crayons), on indique si l’on souhaite ouvrir le wiki :

  • aux rédacteurs du site ;
  • aux visiteurs enregistrés ;
  • à tous les visiteurs du site.

Configuration du site :

  • interdire la configuration du site aux administrateurs non-« webmestres » ;
  • autoriser les sauvegardes pour les administrateurs restreints / ou les interdire pour tous ;
  • interdire de supprimer les données de la base (s’ajoute à l’authentification FTP) ;
  • interdire la création de nouvelles rubriques à la racine, ou en sous-rubriques.

Configuration des auteurs :

  • À la création d’un auteur, quel est son statut par défaut ?
  • Quels types d’auteurs peut-on associer à des rubriques ?
  • Ignorer la notion d’administrateur restreint

D’autres réglages peuvent s’ajouter à ces idées... N’hésitez pas à faire des propositions et à participer au développement.

Installation & configuration

C’est « plug and play ». Une fois les deux plugins « Autorité » et « CFG » activés, on se rend sur la page ecrire/?exec=cfg&cfg=autorite pour modifier les réglages (si l’on n’indique aucun réglage, les autorisations standards de SPIP s’appliquent).

Ensuite, roule le navire, après un éventuel vidage du cache les nouvelles autorisations sont en place.

L’interface de configuration
Avec le message d’erreur idoine :)

Compatibilité

La quasi-totalité des réglages ne sont opérationnels qu’avec les versions récentes de SPIP (version 2.x ou 3.x) ; seul le réglage auteur modifie article est compatible avec SPIP 1.9.2a. Il faut également une version de CFG supérieure ou égale à 1.0.2.

Structure du code (si vous souhaitez participer au développement)

Le plugin est développé sur SPIP zone.

Ce plugin comporte quatre fichiers principaux [1] :
-  plugin.xml décrit le plugin ;
-  inc/autoriser.php étend le système d’autorisations et définit les fonctions nécessaires lorsque les autorisations sont différentes des autorisations par défaut ;
-  fonds/cfg_autorite.html définit l’interface de configuration, sous forme d’un simple squelette (ceci grâce au plugin CFG) ;
-  fonds/cfg_autorite_fonctions.php établit la liste des webmestres pour affichage dans le panneau de configuration (Cf. copie d’écran ci-dessous).

Dans inc/autoriser.php on fait bien attention à coder très proprement les fonctions, de manière à toujours pouvoir les redéfinir « de l’extérieur » (dans mes_options.php par exemple) ; le cas échéant, un message adapté signale les conflits dans le panneau de configuration.

Il est recommandé, lors des tests, d’utiliser plusieurs navigateurs connectés sous des profils d’utilisation différents ; et d’activer le debug des autorisations en inscrivant dans mes_options.php la ligne :

define ('_DEBUG_AUTORISER', true);

Notes

[1Les autres fichiers sont les icones, les chaînes de langue et le pipeline qui permet d’ajouter un onglet dans la page de configuration.

Discussion

132 discussions

  • 1

    Bonjour,

    Il me semble qu’il y a une petite coquille dans la configuration de ce plugin via CFG, pour permettre aux rédacteurs de consulter les stats.

    Dans Configuration >> CFG >> Autorité >> Réglage des autorisations >> Droits des auteurs >> Rédacteur voit stats. Soit le fichier plugins/autorite/fonds/cfg_autorite.html ; ligne 158 :

    <label><input type="checkbox" name="redacteurs_voirstats" [checked="(#ENV{redacteurs_lire_stats}?{checked})"] />

    Cela ne correspond pas au fichier plugins/autorite/inc/autoriser.php (à partir de la ligne 349).

    Cela fonctionne en remplaçant par :

    <label><input type="checkbox" name="redacteurs_lire_stats" [checked="(#ENV{redacteurs_lire_stats}?{checked})"] />

    Répondre à ce message

  • 2

    Bonjour,
    Je suis en SPIP 192d, plugins CFG 1.10.3 et autorité 0.9.2.
    Je suis administrateur « total » du site avec l’ID 59, j’ai mis dans config/mes_options.php les lignes suivantes

    <?php
    define ('_ID_WEBMESTRES', '22:59');
    ?>

    j’ai vidé le cache, supprimé le cookie de connexion et rien ne se passe, j’ai toujours

    Accès refusé
    Seuls les webmestres du site sont autorisés à modifier ces paramètres.
    Pour en savoir plus, voir la documentation.

    Que se passe-t-il docteur ?

    • J’ai même vidé /tmp, mais ça ne fait rien de plus... :-(

    • J’ai réussi à faire fonctionner le plugin en modifiant le fichier /inc/autoriser.php ce qui n’est pas très pérenne. Peut-être un problème de droits ? Pourtant config/mes_options.php est en lecture...
      Mystère !

    Répondre à ce message

  • 4

    Bonjour

    Nouveau venu dans le monde merveilleux de SPIP, je cherche une solution pour que chaque rédacteur est accès à une ou plusieurs rubriques que le webmestre aura défini.

    Par exemple, dans le cas d’un site multi associatif,
    le rédacteur du club de foot peut proposer un article dans la rubrique FOOT mais je ne veux pas qu’il puisse proposer un article dans la rubrique BIBLIOTHEQUE.

    Je pensais que AUTORITE pouvait m’aider mais d’après mes tests, un auteur à qui j’ai restreint l’accès à FOOT peut quand même rédiger un article dans BIBLIOTHEQUE.
    Est-ce normal ?
    Suis-je passé à coté de quelque chose.

    PS : Je précise que je n’utilise pas de « crayons ». Les modifications se font via l’espace privé (./mon_site/ecrire/).

    • Bonjour,

      Je suis dans le même cas de figure, aussi suis-je très intéressé par la ou les réponses qui pourront être apportées à cette question.

      Merci aux contributeurs

      A++++++

    • C’est le plugin « acces_restreint » qui permet de cacher les rubriques en partie public et/ou privé.

    • Merci pour ce retour d’infos vraiment très rapide.
      C’est sympa.
      Bonne journée
      A+++

    • Il n’est pas nécessaire d’utiliser Autorité pour ce que tu veux faire. Il suffit d’utiliser la fonction « administrateur restreint » de SPIP. Lorsque tu crée un auteur depuis le compte super-administrateur tu le nome administrateur puis tu restreint sa capacité d’administration à une rubrique en particulier.

      Bonne config et à bientôt.

    Répondre à ce message

  • 2

    bonsoir,

    ce plugin m’intéresse au plus au point mais lorsque j’active celui-ci, j’ai ça qui s’affiche à la place de la barre d’icône du haut (partie privée bien sûr) :

    Warning : in_array() [function.in-array] : Wrong datatype for second argument in /home/villages/public_html/ecrire/public/composer.php(48) : eval()’d code on line 45

    comprenez vous ce qui peut se passer ? je suis sous spip 1.9.2 alternatives.
    merci de votre aide !

    Jacques

    • Bonjour,

      J’ai le même message. J’avais commencé à récupérer le zip de CFG sur la page : http://www.spip-contrib.net/Coder-un-plugin-simple-avec-cfg#forum397353
      en bas : « cfg en zip »
      et cela ne marchait pas du tout, avec 6 fois le message :
      / !\ Fichier absent : ../plugins/cfg/cfg_pipeline.php .

      Comme c’était apparemment une version très récente 4 juillet 08, j’ai pris une version de CFG trouvée à deux endroits différents, qui marche beaucoup mieux (possibilité de renseigner les champs de l’interface des plugins autorité et crayon), mais j’ai ce message d’avertissement (Wrong datatype for second argument in... même ligne 45) de nombreuses fois.

      La partie du code de composer.php concernée est apparemment :

      // si squelette est deja en memoire (INCLURE  a repetition)
      	if (function_exists($nom))
      		return $nom;
      
      	$phpfile = sous_repertoire(_DIR_SKELS) . $nom . '.php';
      
      	// si squelette est deja compile et perenne, le charger
      	if (!squelette_obsolete($phpfile, $sourcefile)
      	AND lire_fichier ($phpfile, $contenu,
      	array('critique' => 'oui', 'phpcheck' => 'oui'))) 
      		eval('?'.'>'.$contenu);
      
      	if (@file_exists($fonc = $squelette . '_fonctions'.'.php')
      	OR @file_exists($fonc = $squelette . '_fonctions'.'.php3')) {
      		include_once $fonc;
      	}
      
      	// tester si le eval ci-dessus a mis le squelette en memoire
      
      	if (function_exists($nom)) return $nom; 

      Mais je ne vois pas très bien où se trouve le pb.

      je suis sous spip 1.9.2d, et je n’ai que ces plugins.
      Je suis repassé à tout hasard aux urls « spip.php ?article3 » (j’étais en propres QS, étant chez Free.fr) mais sans succès.

      Help ! merci

    • marcimat

      Merci d’indiquer systématiquement les versions des plugins.

      Si vous avez mis à jour soit CFG, soit Autorité, il faut mettre les deux à jour. Si l’erreur apparait avec CFG (>=1.9.x) et autorité (0.9.2) à jour, alors c’est qu’il y a un problème.

      Ce problème apparait (de mémoire) avec CFG >= 1.9 et les autres plugins non mis à jour.

      Pour info, j’ai supprimé un petit hack de CFG, qui était utilisé par certains plugins dont autorité, que j’ai alors mis à jour.

    Répondre à ce message

  • bouboulou

    Bonjour,

    J’ai pourtant coché la case permettant l’auteur de modifier son adresse mail. Pour une personne de statut rédacteur. Ce n’est pas possible.
    Pouvez-vous m’aider s’il vous plaît ?

    Merci d’avance

    Répondre à ce message

  • J Christophe

    Puisque tu fais un appel aux propositions dans ton article, il y a une fonctionnalité qui m’intéresserait, c’est qu’un rédacteur puisse remettre « en cours de rédaction » un article qu’il a « proposé à l’évaluation », voire qui a été publié, mais tout en continuant à lui refuser le droit de publication.

    En effet, il n’y a qu’une fois qu’on est sorti du mode « rédaction » que l’on peut visualiser en ligne et c’est parfois là qu’on se rend compte d’une erreur, d’un manque ou d’un souci quelconque. Même en prévisualisant avec la barre typo enrichie, on peut louper des choses.

    Et c’est vrai que, comme on l’a proposé dans un autre message, je trouverais bien également qu’un administrateur restreint puisse créer un nouvel auteur, au moins avec le statut de rédacteur. Si même on pouvait restreindre à ce choix unique, ce serait pour moi l’idéal.

    Répondre à ce message

  • Bonjour,

    Après avoir installé le plugin « autorité », les auteurs auxquels j’ai donné les droits de modifier leurs articles ne peuvent plus les modifier avec fckeditor. La fenêtre de fckeditor s’ouvre mais le contenu de l’article n’y apparait pas : la fenêtre de fckeditor contient uniquement le menu des boutons relatifs à la mise en forme et un espace blanc où devrait s’afficher le texte déjà présent dans l’article. Il en est de même pour les administrateurs.

    Les deux plugins sont-ils incompatibles ?

    Répondre à ce message

  • Tu demandes des suggestions, en voici une :

    permettre de paramétrer plus finement les droits des administrateurs restreints ;

    par exemple, la création d’auteurs.

    Répondre à ce message

  • Bonjour
    merci pour ce plugin essentiel

    Néanmoins j’ai un souci.

    Quand je vais dans la config du plugins dans cfg j’obtiens le message d’erreur « Impossible de lire fonds/cfg_autorite.html ».
    J’ai bien vidé le cache comme demandé mais ça ne marche pas.

    Répondre à ce message

  • 7
    JamesNicolas

    Je souhaiterai juste signaler que la ligne 145 dans autoriser.php semblerait comporter une erreur. En neffet quand je remplace sql_count par spip_num_rows cela fonctionne beaucoup mieux...

    • Ta version n’est pas à jour car, sauf erreur de ma part, on a bien sql_count() depuis la révision 17210

    • JamesNicolas

      euh justement là est mon problème en mettant à la ligne 145 sql_count() ça ne fonctionne pas !

      Par contre en mettant spip_num_rows() là ça fonctionne... je ne sais pas pourquoi mais c’est ainsi^^

    • Ah !! Alors c’est ta version de SPIP qui n’est pas à jour

    • JamesNicolas

      la version 1.9.2.c [10268] n’est pas suffisante ? (tout en sachant que le plugin marche à merveille juste en modifiant cette ligne^^)

      Bon Noël !

    • Je confirme les propos de jamesNicolas, dans un SPIP 1.9.2c [10268], la fonction sql_count n’est pas définie (pas de trace dans son code), donc Autorité (dans ses dernières version) ne fonctionne plus...

      Sa modif le rend fonctionnel.

    • En effet il manquait la clé de compatibilité pour cette fonction, ça devrait être réglé en http://zone.spip.org/trac/spip-zone...

    • JamesNicolas

      Merci beaucoup !

      Il y aurait aussi un autre problème. Un rédacteur en passant par les crayons n’arrive pas à modifier le texte car la page est rechargée en SPIP 1.9.3 dev [11061]. Faut-il une version plus élevée de dev ou est-ce autre chose ?

      Je souhaiterais aussi savoir quelque chose... à côté des brèves il est marqué qu’un rédacteur peut la modifier, or il tombe sur une page interdite en essayant de la modifier. Est-ce normal qu’il voit un bouton lui permettant de modifier la brève ? Serait-il possible de lui donner les autorisations pour qu’il puisse modifier une brève déjà publiée ?

      S’il faut que je m’explique plus clairement, dites le moi ou écrivez moi sur mon mail.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom