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

  • l’icone créer une sous rubrique n’apparait pas

    bonjour

    j’arrive pas a créer une sous rubrique dans l’espace réservé aux administrateurs restreint. je vous informe que j’ai pas coché l’option dans la partie configuration du site/rubriques. l’icone n’apparait pas.

    SVP Quoi faire ?

    Répondre à ce message

  • Bonjour,

    Ma question concerne la gestion des documents au sein des rubriques.
    Je n’ai pas trouvé comment donner la possibilité aux administrateurs restreints de gérer les documents des rubriques dont ils sont justement administrateurs.

    Sans les droits de publication sur le site ils ne peuvent pas le faire (ce qui peut paraître logique étant donné que l’ajout d’un document le publie automatiquement avec la configuration de base).

    En clair j’aimerais trouver un montage où des administrateurs ou rédacteurs peuvent modifier le contenu des rubriques et articles auxquels ils sont associés, gestion des documents comprise.

    J’ai essayé de nombreuses configurations différentes sans succès, quelque chose m’échappe.

    Encore merci pour ce plugin, quasiment essentiel dans la gestion des droits SPIP.

    Répondre à ce message

  • 1
    Olivier

    Bonjour,

    J’utilise autorité et gis sur 2 sites que je gère. J’ai une vingtaine d’utilisateurs ayant un profil « administrateur » sur une partie du site.

    Dernièrement, j’ai upgradé spip vers la 3.0.22. Avant cela, j’ai mis à jour tout mes plugins. Depuis, j’ai eu un changement dans les droits. En effet, les utilisateurs administrateurs « restreint » pouvaient associer un point géolocalisé à leur article. Hors, depuis la mise à jour, cette possibilité ne leur apparaît plus.
    Si je change les droits d’un utilisateur comme étant administrateur « complet » (c’est à dire sans limitation de rubrique), l’utilisateur a à nouveau accès à la géolocalisation.

    Est-ce que c’est une volonté du développeur de « brider » cette fonction ou est-ce un bug ou encore, peut-être que je m’y prends mal.

    Merci par avance pour votre aide !

    Olivier

    • Bonjour,

      Toujours pas trouvé à quoi cela était dû. Si quelqu’un a été confronté au problème, je suis preneur de toute info. Peut-être que la solution se trouve dans une version 3.1 de spip...

    Répondre à ce message

  • 2

    Bonjour,

    Comment cacher/empêcher l’accès, pour les rédacteurs qui s’enregistrent seuls, à :
    -  Edition > Mots clés
    -  Edition > Auteurs
    -  Edition > Formulaires (Formidable)

    Afin que les rédacteurs « anonymes » ne voient que « Rubriques » et « Articles » et ne puissent que proposer un article sans avoir accès à d’autres informations dans l’espace privé ?

    Merci d’avance !

    • Spipmalion

      Plus simplement : quelle est la ligne d’autorisation à mettre dans mes_options.php pour empêcher aux rédacteurs/visiteurs d’avoir accès à Edition > Auteurs ?

      Actuellement, n’importe quel visiteur qui s’inscrit au site peut prendre la liste des emails et coordonnées personnelles de tous les admins/rédacteurs, ce qui pose un problème de spam.

    • Spipmalion

      Avancée sur la recherche des autorisations SPIP 3 :

      // voir le menu Edition > Auteurs : OK
      function autoriser_auteurs_menu($faire, $type, $id, $qui, $opt) {
      	return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }
      // voir une fiche auteur : OK ; mais comment l'autoriser à voir sa propre fiche ?
      function autoriser_auteur_voir($faire, $type, $id, $qui, $opt) {
      	return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }
      
      // voir le menu Edition > Mots clés : OK
      function autoriser_mots_menu($faire, $type, $id, $qui, $opt) {
        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }
      // voir la page Mots : NE MARCHE PAS, on a toujours accès à exec=mots
      function autoriser_mots_voir($faire, $type, $id, $qui, $opt) {
        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }
      
      // voir le menu Publication > Suivi des révisions : OK
      function autoriser_revisions_menu($faire, $type, $id, $qui, $opt) {
        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }
      // voir la page exec=revisions : NE MARCHE PAS, on a toujours accès à exec=revisions
      function autoriser_revisions_voir($faire, $type, $id, $qui, $opt) {
        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }
      
      // voir le menu Edition > Articles : OK
      function autoriser_articles_menu($faire, $type, $id, $qui, $opt) {
        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }
      // voir la page exec=articles : NE MARCHE PAS, on a toujours accès à exec=articles
      function autoriser_articles_voir($faire, $type, $id, $qui, $opt) {
        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }
      // voir le menu Edition > Rubriques : OK
      function autoriser_rubriques_menu($faire, $type, $id, $qui, $opt) {
        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }
      // voir la page exec=rubriques : NE MARCHE PAS, on a toujours accès à exec=rubriques
      function autoriser_rubriques_voir($faire, $type, $id, $qui, $opt) {
        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
      }

    Répondre à ce message

  • 1
    Spipmalion

    Bonjour, lorsqu’on coche « seuls les webmasters peuvent modifier la configuration du site/des plugins » dans Autorité : comment créer une exception pour la page de config d’un plugin en particulier ?

    J’ai crée un petit plugin qui ne contient qu’une page de config, destinée aux administrateurs, mais il n’y ont pas accès ...

    • Salut, et en mettant le lien de configuration du plugin dans un menu autre , par exemple > squelette ?

      il suffit de rajouter une ligne au paquet :

      <menu nom="mon_plugin" titre="mon_plugin:titre_menu" parent="bando_squelette" icone="images/mon_plugin-16.png" action="configurer_mon_plugin" />

      Sinon faut créer un fichier d’autorisations

    Répondre à ce message

  • 2

    Bonjour,

    Je vous remonte un dysfonctionnement constaté en utilisation conjointe avec le plugin Couteau suisse.

    Impossible d’accéder à la configuration de ce dernier depuis un des comptes webmestre autre que le n°1, on obtient « admin_couteau_suisse : Accès interdit ».

    Configuration du plugin Autorité :

    • Qui peut modifier la configuration du site ? => Le webmestre
    • et
    • Qui peut modifier la configuration des plugins ? => Le webmestre

    En utilisant à la place le choix « Les administrateurs », ou en désactivant Autorité, on retrouve l’accès.

    Constaté également sur une installation "fraîche" avec les versions :
    -  SPIP 2.1.27
    -  Autorité 0.10.8
    -  CFG 1.16.1
    -  Le Couteau Suisse 1.9.7

    Je ne sais pas si ce bug concerne le code de Autorité ou du Couteau suisse...

    Répondre à ce message

  • 3

    Permettre aux rédacteurs de créer de nouveaux rédacteurs ?

    (Je n’ai pas encore eu le temps de voir s’il était possible d’ajouter cette fonctionnalité)

    • Bon, après qcqs essais et errements avec autoriser_exception (’modifier’, ’auteur’, $id, $autoriser=true) ;
      je me suis contenté de :

      ### Autorisation de créer un auteur, on peut n' être que redacteur 
      function autoriser_auteur_creer($faire, $type, $id, $qui, $opt) {
              return ($qui['statut'] == '1comite' OR 'admin');  //
      }

      et modifier le message spip_fr.php ’texte_statut_poubelle’ => ’en attente de validation (ou poubelle)’
      et un admin doit valider la création, nul !
      (comment gérer ça, permettre de modifier le statut à et seulement à la création ???...)

    • je ne comprend rien à vos remarques et questions.

    • je cherche à permettre aux rédacteurs de créer de nouveaux rédacteurs.
      (avec la function autoriser_auteur_creer ci-dessus un redacteur peut créer un redacteur mais avec un statut poubelle. Il faudrait pouvoir permettre de modifier ce statut seulement lors de la création, ?exec=auteur_edit&new=oui . avec $GLOBALS ??

    Répondre à ce message

  • 4

    bonjour,
    trouvant que le plugin Autorité, l’Espace wiki, appelle le plugin révisions,
    je trouvais intéressant de pouvoir signaler les révisions côté public.
    En partant de /plugins/revisions/prive/objets/liste/version.html :

     <BOUCLE_liste_rev(VERSIONS){id_version>1}{objet!=''} 
    {id_auteur?} {id_objet?} {objet?}{where?}{par date} {inverse} {0,10}>
    <tr><td>[(#INFO_STATUT{#OBJET,#ID_OBJET}|puce_statut{#OBJET})]</td>
    <td>[(#OBJET|objet_icone{16})]</td>
    <td><a #SET{titre,#INFO_TITRE{#OBJET,#ID_OBJET}}
    [(#AUTORISER{modifier, #OBJET, #ID_OBJET}|?{
     href="[(#ENV{url_modif,#URL_ECRIRE{revision}}|parametre_url{id_objet,#ID_OBJET} |parametre_url{objet,#OBJET}|parametre_url{id_version,#ID_VERSION})]"
     , href="[(#ENV{url_modif,#URL_PAGE{#OBJET}}|parametre_url{id_#OBJET,#ID_OBJET})]"}
     )]
     title="<:revisions:voir_revisions{objet=#OBJET,id_objet=#ID_OBJET,titre=#GET{titre}}
    |attribut_html:>">
     #GET{titre}</a>[ ((#TITRE_VERSION))] &nbsp;
    </td><td>[(#DATE|date_relative)]</td></tr>
     </BOUCLE_liste_rev>

    (Peut être aussi ainsi possible insérer Historique à la wikipédia ...)

    • tu pourrais proposer cela comme article côté privé (avec un peu plus de détails et de liant) ?

    • Bonjour Maïeul,
      je n’ai malheureusement pas une maîtrise très poussé de tout cela. Cela m’a demandé pas mal de tâtonnement (j’ai vu que d’autres cherchaient aussi dans ce sens) mais ça me parait un peu faible comme contenu pour faire un article, non ?...
      (voir résultat sur http://xxx/ bas de page)
      Qcq précisions si nécessaire :
      créer un fichier /squelettes/inclure/version.html avec le code ci-dessus, l’inclure par INCLUREfond=inclure/revision , pour avoir les 10 dernières révisions, avec lien sur la page revision de l’espace privé si connecté, sinon sur la page public.
      On peut de même signaler qu’il y a eu révision sur un objet (article, ..) :
      INCLUREfond=inclure/historique, /squelettes/inclure/historique.html :

      <table><tbody>
      <BOUCLE_liste_rev(VERSIONS?){id_version>1}{id_article ?}{id_xxxx ?}{where?}
      {tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
      <tr><td><a #SET{titre,#INFO_TITRE{#OBJET,#ID_OBJET}}
      [(#AUTORISER{modifier, #OBJET, #ID_OBJET}|oui)
       href="[(#ENV{url_modif,#URL_ECRIRE{revision}}|parametre_url{id_objet,#ID_OBJET}
      |parametre_url{objet,#OBJET}|parametre_url{id_version,#ID_VERSION})]"
      ]>
       <:revisions:voir_revisions
      {objet=#OBJET,id_objet=#ID_OBJET,titre=#GET{titre}}|attribut_html:></a>[ ((#TITRE_VERSION))]</td>
      <td>[<:der_revision:> : (#DATE|date_relative)]</td></tr>
      </BOUCLE_liste_rev>
      </tbody></table>

      (Mais maintenir le filtre |revisions_diff génère une erreur côté public, je ne peux donc montrer l’historique au public, comme sur wikipedia.)

    • si, si ouvre un article. Cela permettra à d’autres de compléter. Là ca va juste être perdu au milieu des messages de forum...

    • Bon, page créée : signaler-les-revisions-cote-public, du coup (après révisions ;-) peut être mettre un lien dans l’article présent sous espace wiki ?

    Répondre à ce message

  • Bonjour,

    Est ce qu’une autorisation pour que les rédacteurs publie leur articles serait utile dans le plugins ?

    Répondre à ce message

  • Bonjour,

    Merci pour ce très utile plugin.

    Je viens d’installer la dernière version (sur SPIP 2.1.26) et je n’ai plus la possibilité d’activer les options « Editer les forums » et « Editer les signatures ».

    Est-ce normal ? Est-ce un choix (il faudrait alors mettre la doc à jour) ? Est-il possible de réactiver ces deux possibilités d’une autre manière ?

    En vous remerciant,

    François

    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