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

  • Je suppose que ca se passe dans plugins/autorite/inc/autoriser.php ? Et ailleurs d’ailleurs, je vois sur la page du plugin.
    Mais OURG... la ca devient trop compliqué pour moi !
    Si il y a une bonne âme que ça amuserait....?!
    Agnes

    Répondre à ce message

  • 1

    Seuls les adminsitrateurs peuvent modifier les brèves validées.... dommage que ce ne soit pas géré par Autorités !

    • Ce ne serait pas très compliqué à ajouter, le plugin est codé de façon explicite pour permettre ce genre d’extension au fur et à mesure des besoins.

    Répondre à ce message

  • 6

    compte-rendu utilisateur

    Sous spip version 1.9.2.i, le plugin « Autorité » est compatible avec le plugin « Accès restreints ». Certaines fonctionnalités de « Autorité » ne sont cependant active qu’avec spip 2.0.

    Souhaitons que les deux plugins : « Autorité » et « Accès restreints » continuent à être développés en étant compatibles. Ces deux plugins étant très complémentaires quand l’on veut pouvoir affiner les droits d’accès et fonctionnalités attribués aux différents statuts : forumeurs, rédacteurs, administrateurs, webmestres

    les questions qui se posent sont bien sûr de savoir :

    1/s’il serait pertinent que ces deux plugins soient fusionner en un seul ?

    2/si la plupart des fonctionnalités de ces deux plugins ne devraient pas être intégrés dans la version originale de spip ?

    • La réponse aux deux questions est « non ».

      Pour la fusion : ces deux entités n’ont ni le même objectif ni la même approche technique.

      Pour l’intégration au core : le plugin Autorité vise à démontrer ce qu’il est possible de faire comme extension aux autorisations standard de SPIP. Quant à l’accès restreint, le core a pour rôle de diffuser des infos sur Internet, et pas de les planquer :-)

    • Fil a écrit « Pour l’intégration au core : le plugin Autorité vise à démontrer ce qu’il est possible de faire comme extension aux autorisations standard de SPIP »

      A en juger par les demandes des utilisateurs depuis plusieurs années et des retours positifs des utilisateurs de ce plugin depuis sa mis en oeuvre, la démonstration est éloquante, le plugin est « bon » pour une intégration au core, à termes. :0 )

    • Fil a écrit « Pour la fusion : ces deux entités n’ont ni le même objectif ... »

      Historiquement c’est vrai, alors disons que « Accès Restreint » + « Autorité » permet de « faire » ce que ne permet pas encore de faire « Autorité » seul.

      Toutefois pour des sites comportant de nombreux rédacteurs et administrateurs (plusieurs 100nes ), la combinaison « Accès restreints »et « Autorité » est essentielle. Celà permet de créer des interfaces privées adaptées aux besoins de chaque auteur : quand il y a trop de fonctionnalités/possibilités les auteurs non technophiles sont « perdus », ce qui donne un surcroit de travail aux webmestres, admins, etc ...

    • Fil a écrit : « Quant à l’accès restreint, le core a pour rôle de diffuser des infos sur Internet, et pas de les planquer :-) »

      En utilisant « Accès restreint » notre objectif n’est pas de planquer de l’information. En ce qui nous concerne, nous n’avons rien à planquer en partie privée.
      Nous souhaitons simplement permettre à chaque rédacteur d’accéder à une partie privée adaptée à ces objectifs et besoins. En complément de « Accès restreint », nous supprimons des « boutons » : édition, forum, etc ou nous en rajoutons avec le plugin « Autorité ».
      C’est la même idée de principe que « interface simplifiée »/« interface complète » qui existait dans des versions précédentes de spip. Comme cette bonne fonctionnalité n’a pas été développée, elle a finit par gêner. C’était bien de la supprimer, sauf que le problème demeure...

    • Pour ceux qui sont obligés d’utiliser spip 192i, sinon il vaut mieux passer sur les dernières versions de spip 2.0..., le pluggin pour cette version de spip intègre ou permet les modifs qu’il est possible de faire avec le code ci-dessous.

      rappel des critères :

      statut webmestres : autoriser(’webmestre’)
      statut admins complets : ’0minirezo’ et ’connect_toutes_rubriques’

      statut admins complets et restreints : ’0minirezo’

      dans le fichier spip/ecrire/inc/boutons.php

      entre les lignes 46 à 113

      $boutons_admin=array(
      ’accueil’ => new Bouton(’asuivre-48.png’, ’icone_a_suivre’),
      /*’naviguer’ => new Bouton(« documents-48$spip_lang_rtl.png »,
      ’icone_edition_site’),
      ’forum’ => new Bouton(’messagerie-48.png’, ’titre_forum’),
      ’auteurs’ => new Bouton(’redacteurs-48.png’, ’icone_auteurs’)*/
      ) ;

      /* Bouton « Editer » que si >= admin complet
      Sous-menus editer si >= admin complet */
      if ($GLOBALS[’connect_statut’]==’0minirezo’
      AND $GLOBALS[’connect_toutes_rubriques’])
      $boutons_admin[’naviguer’]=
      new Bouton(’documents-48$spip_lang_rtl.png’, ’icone_edition_site’) ;

      /* Bouton « Statistiques » que si >= admin restreint */
      if ($GLOBALS[’connect_statut’] == « 0minirezo »
      AND $GLOBALS[’meta’][« activer_statistiques »] != ’non’)
      $boutons_admin[’statistiques_visites’]=
      new Bouton(’statistiques-48.png’, ’icone_statistiques_visites’) ;

      /* Bouton « Auteurs » que si >= admin restreint */
      if ($GLOBALS[’connect_statut’] == ’0minirezo’)
      $boutons_admin[’auteurs’]=
      new Bouton(’redacteurs-48.png’, ’icone_auteurs’) ;

      /* acces a configuration que si on est webmestre */
      /*if ($GLOBALS[’connect_statut’]==’0minirezo’*/
      if ($flag_autorise = autoriser(’webmestre’))
      $boutons_admin[’configuration’]=
      new Bouton(’administration-48.png’, ’icone_configuration_site’) ;

      /* Bouton « Forum » que si >= admin complet
      Sous-menu gestion forums si >= admin complet */
      if ($GLOBALS[’connect_statut’] == ’0minirezo’
      AND $GLOBALS[’connect_toutes_rubriques’])
      $boutons_admin[’forum’]=
      new Bouton(’messagerie-48.png’, ’titre_forum’) ;

      .......
      ..................
      // les sous-menus des boutons, que si on est >= admin complet
      if ($GLOBALS[’connect_statut’] == ’0minirezo’
      AND $GLOBALS[’connect_toutes_rubriques’])

      contrib de ref : 23 octobre 2008 / 09:49, par Ludo

      http://forum.spip.org/fr_196894.html

    • Attention, vous pouvez aussi avoir besoin de supprimer :

      le sous-menu configuration

      spip/ecrire/inc/boutons.php

      ligne 221

      /* code initial $boutons_admin[’configuration’]->sousmenu= $sousmenu ; */
      if ($flag_autorise = autoriser(’webmestre’))
      $boutons_admin[’configuration’]->sousmenu= $sousmenu ;

      // fin si admin

      $boutons_admin = pipeline(’ajouter_boutons’, $boutons_admin) ;

      et si vous utilisez Accès Restreint 1_9 rendre accessible la configuration de Accès Restreint au(x) seul(s) webmestre(s)

      spip/plugins/acces_restreint_1_9/acces_restreint_pipelines

      ligne 13

      /* public static */
      function AccesRestreint_ajouterBoutons($boutons_admin)
      // si on est webmestre
      /* code initial si on est admin : if (autoriser(’modifier’,’zone’)) */
      if ($flag_autorise = autoriser(’webmestre’,’modifier’,’zone’))
      // on voit le bouton dans la barre « naviguer »
      $boutons_admin[’configuration’]->sousmenu[’acces_restreint’]= new Bouton(
      « ../ »._DIR_PLUGIN_ACCESRESTREINT.« /img_pack/zones-acces-24.gif », // icone
      _T(’accesrestreint:icone_menu_config’) // titre
      ) ;

      return $boutons_admin ;

      sur spip 2.0 et suivantes Autorité permet depuis la Revision 33037
      de faire celà sans toucher au code et plus généralement voir aussi
      ici http://programmer.spip.org/-Gestion-d-autorisations-

      merci aux développeurs de ce plugin.

    Répondre à ce message

  • 1

    Bonsoir,
    d’abord merci pour ce plugin. Je ren contre cependant un problème : où dois-je trouver -ou créer- le dossier /config pour y mettre le fichier mes_options.php ? En effet, je voudrais donner tous les droits à un second webmestre.
    Merci, Giampiero Russo

    • Normalement sur une version récente de SPIP le répertoire config/ existe déjà ; tu peux y créer le fichier mes_options.php s’il n’est pas présent.

    Répondre à ce message

  • 7

    Avec ce plugin serait-il possible de permettre à un rédacteur de valider lui-même la publication de son article sans passer par l’administrateur ?
    Merci.

    • Pour le moment non, mais ça ne devrait pas être très compliqué à ajouter.

    • Personnellement je ne suis pas un développeur de SPIP mais un simple utilisateur débutant...

      Je crois que je vais me contenter pour l’instant de nommer mes participants « administrateurs de rubrique » en leur expliquant bien qu’il ne faut pas qu’ils aillent mettre leur nez partout.

      S’ils sont sages, ça devrait aller !

       ;o))

      A +

    • Bonjour,

      Effectivement ça serait top si on pouvait donner au rédacteurs le droit de publier eux même les articles. Très pratique pour les petites site dont le contenu et géré par 1 seul personne.

      Y-a-t-il une wish list quelque part pour ce plugin ?

    • Bonsoir,
      et le top du top ça serait que non seulement, un auteur puisse publier lui même son papier mais qu’en plus un webmestre ou un administrateur complet puisse lui imposer de le faire dans une seule rubrique (ou plusieurs rubriques) mais pas dans toutes et à fortiori pas n’importe où...

      Alors là, on atteindrait le nirvana :o)

      Je teste ce plugin et je le trouve vraiment très prometteur, je salive, je salive :o)
      Il faut continuer à le développer.

      Merci

      Frédéric

    • JamesNicolas

      Et bien il est possible qu’un utilisateur publie les brèves et articles il me smble. Il faut simplement modifier deux lignes de codes du plugins :

      Dans inc/autoriser.php
      Environ l 200

      ##
      ## autoriser_rubrique_publierdans
      ##
      .
      .
      .
      
      if (($GLOBALS['autorite']['publierdans'] & 8)
      		&& ($qui['statut'] == '1comite'))
      			return true;

      Il faut enlever tout ce qui tourne autour de ça (et qui empêche le code de fonctionner) (on peut aussi mettre « 6forum » au lieu de « 1comite »

      Et dans fonds/cfg_autorite.html
      l 470 environ, enlever ce qui entoure

      	<option value="15"[ selected="(#ENV{publierdans}|=={15}|?{selected})"]>Les r&#233;dacteurs</option>

      Ainsi en allant sur CFG > autorité dans la partie privée, vous pourrez dans la partie « Qui peut publier sur le site ? » avoir le menu déroulant présentant « Les rédacteurs », ceux-ci pourront alors publier dans le site.

      Cependant, une chose… vous devrez faire cette manip’ à chaque fois que vous mettrez à jour complètement le plugin. Il serait donc bien, si on pouvait enlever cette "sécurité parce que refaire celle-ci à chaque fois est assez long^^

    • Merci pour ces infos. Ca marche !

      Un petit bémol toutefois : en laissant la possibilité aux rédacteurs de publier leurs propres articles, ils deviennent également capable de modifier tous les articles, même ceux qui ne sont pas les leurs !!

      Ligne 213 du fichier autoriser.php, le code source précise :

      // cas du redacteur : attention, il faut verifier
      // aussi qu’il est l’auteur de l’objet publie...

      Mais le code PHP qui permettrait de faire ça n’est pas présent. Et là je cale.

    • dans la version actuelle au 13/11/2009 « Autorité » permet-il de configurer qu’un rédacteur ne publie/modifie que ses articles et eux seuls ?

      Est-il possible de rajouter ce critère dans inc/autoriser par ex , quel en est le code et où le mettre si c’est possible ?

      ou en est-on toujours à :

      http://www.spip-contrib.net/spip.php

      qui donne cette possibilité mais également sur les articles d’autres rédacteurs ?

    Répondre à ce message

  • Bonjour,

    Avec spip2, sarka3, Acces restreint et Autorité
    J’ai un souci de configuration avec ce plugin.
    J’ai le statut de webmestre donc ai acces à tout.
    J’ai crée un administrateur qui lui n’a pas acces à la configuration du site,
    mais devrait avoir accès pour gérer les acces restreint.
    Quand je me logue avec ce statut d’administrateur, j’ai dans la partie admin un
    picto symbolisant « acces restreint » à droite. Quand je clique dessus, la page se
    bloque et me dit :
    configuration : Accès interdit

    Comment pourrais-je débloquer cet acces interdit ?

    Merci

    Répondre à ce message

  • Bonjour,

    J’ai installé spip 2.0.9 et sarka-spip 3.0. Je rencontre un problème avec Autorité (super plug ! merci). J’ai paramétré le plug via la partie privé avec des restrictions. Cependant maintenant que je m’occupe de paramétrer le squelette sarka via son interface dédiée dans la partie privé, je suis considéré comme un admin et plus comme un webmestre. Donc d’après mes paramètre d’Autorité je n’ai plus le droit de modifier les réglages des plug. Ce qui est gênant dans mon cas... J’ai inclue le code dans mes_fonctions.php pour me déclarer webmestre mais cela ne change rien. Que dois-je faire ou qu’ai-je fais qui ne va pas ?

    Répondre à ce message

  • 1

    J’ajoutais des nouveaux webmestres dans mon SPIP mutualise, et je me suis rendu compte qu’il falllait ajouter le code ’define (’_ID_WEBMESTRES’, ’1:2:11:4’) ;’ dans le fichier /config/mes_options.php qui est situe a la racine du site et non pas dans le repertoire de configuration de chque sites (sites/domain.com/config/mes_options.php).

    C’est ma config qui est tordu ou c’est normal ?

    Si c’est normal c’est dommage que ca soit pas definissable dans chaque site mutualise, car le plugin authorite marche plutot bien avec different sites mutualise donc ca c’est le seul truc ’partage’

    Enfin je me trompe peu etre

    • je me reponds a moi meme :)

      bon ca vient de ma configuration. Le ’premier’ site web doit etre configurer dans /config/mes_options.php

      quand je dis ’premier’ site, c’est l’url qui a servit pour l’installation de SPIP.

      autant pour moi :)

      super plugin !

    Répondre à ce message

  • Bonjour,

    Je souhaite autoriser des visiteurs enregistrés par « Inscription2 » à pouvoir modifier un article qui leur appartiendrai.

    Seulement je ne vois pas comment mettre en oeuvre la partie : « 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) ; »

    J’ai bien installé « Publication Ouverte » mais je ne peux jamais associer un « visiteur » comme « auteur » d’ un article, donc je ne peux lui permettre de modifier son article (j’ai installé « crayons »).

    Merci de vos réponses.
    Florent

    Répondre à ce message

  • 1

    Bonjour !

    Tout d’abord merci pour ce plugin qui est très bien conçu !

    J’ai cependant un petit souci. Je souhaiterais autoriser les rédacteurs à publier des articles. Seulement si j’e me sers des lignes prévues à cet effet, qui sont commentées dans le code, les rédacteurs se voient attribuer beaucoup d’autres droits comme la possibilité de modifier tous les articles, ou de modifier les rubriques etc.

    En gros je souhaiterais simplement que les rédacteurs aient un seul et unique pouvoir en plus :
    avoir le droit de publier eux mêmes les articles qu’ils créent.

    Est-ce possible et si oui qq aurait il une piste à me donner ? J’ai bien essayer de modifier les conditions des fonctions mais je pense que c’est la fonction publiersans qui ouvre trop de droits d’un coup !

    bref ! à l’aide !

    merci d’avance.

    • c’est vrai qu’il est indiqué dans la doc du plugin

      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) ;

      alors que sur contrib un auteur peut aussi modifier les articles des autres dans des rubriques où il n’est pas administrateur .

      un bug ?.

    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