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, vous pouvez le charger par svn :

svn co svn://zone.spip.org/trac/spip-zone/browser/_plugins_/autorite

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

126 discussions

  • Julien

    Bonjour,
    j’ai voulu activer l’espace wiki « à tout les visiteurs du site » avec le plugin « crayons » mais cela ne fonctionne dans l’espace publique avec #EDIT{...}. Cela fonctionne uniquement pour les utilisateurs loggé.

    Quelqu’un pourrait-il me renseigner ?

    Répondre à ce message

  • 3

    Bonjour,
    Sur un spip 3.1, j’aurai besoin d’autoriser les admins restreints à pouvoir accéder et utiliser les formulaires de vidage de cache.
    Je ne vois pas comment procéder, car je ne trouve pas de fonction autoriser_vider_cache ou similaire à surcharger.. Quelqu’un aurait-il une piste à proposer SVP ?
    Merci.

    • Je me réponds à moi-même et partage la solution que je viens enfin de trouver :

      function autoriser_configurer($faire, $type, $id, $qui, $opt) {
      	//echo 'faire: ' .$faire . ' - type: ' .$type;
      	if (isset($type)) {
      		if ($type == 'adminvider') {
      			return $qui['statut'] == '0minirezo';
      		}
      	}
       
      	return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
       
      }
    • Bonjour, je cherche à faire la même chose que ce que vous citez ici : autoriser les admins restreints à pouvoir accéder au vidage de cache sur l’espace privé.
      Ma question porte sur ce bout de code... Où faut-il l’insérer ? Sur config/mes_options.php ?
      Merci d’avance pour votre réponse. Lucie.

    • Bonjour,
      oui dans config/mes_options.php

      function autoriser_configurer($faire, $type, $id, $qui, $opt) {
          if (isset($type)) {
              if ($type == 'adminvider') {
                  return $qui['statut'] == '0minirezo';
              }
          }
          return $qui['webmestre'] == 'oui';
      }

    Répondre à ce message

  • 1
    Spidermian

    Bonsoir,

    J’ai collé

     $GLOBALS['spip_pipeline']['contact_infos_supplementaires'] .= '|autre_contact_infos_supplementaires';
            
    function autre_contact_infos_supplementaires($champs){
            $champs['sujet_alternatif'] = 'Sujet alternatif';
            return $champs;
        }

    dans mes_options.php et je ne vois nulle part apparaître le champ supplémentaire.
    J’ai merdé quelquepart ? Y a-t-il un soucis avec la dernière version de spip que j’utilise ?

    • Spidermian

      Ah ben non me suis planté de plugin...
      Voila ce que c’est de bosser avec quarante douze onglets !
      Si un moderateur veut supprimer ce message...

    Répondre à ce message

  • Spidermian

    Bonjour,
    je voudrais lors de la modification du statut par défaut lors de la création d’un auteur
    ajouter un nouveau statut (7expire) comme je l’ai fait dans la page de création d’un nouvel auteur à la’ide du code suivant :

    -  dans mesfonctions.php

    // Rajouter un nouveau statut pour les auteurs 7expire
    
    $GLOBALS['liste_des_statuts'] = array(
                     'info_administrateurs' => '0minirezo',
                     'info_redacteurs' => '1comite',
                     'info_visiteurs' => '6forum',
                     'info_abonnements_expires' => '7expire',
                     'texte_statut_poubelle' => '5poubelle'
                     );
    
    // Surcharger autoriser_inscrireauteur pour autoriser l'inscription avec ce nouveau statut
    
    function autoriser_inscrireauteur($faire, $quoi, $id, $qui, $opt){
    
            $s = array_search($quoi, $GLOBALS['liste_des_statuts']);
            switch ($s) {
    
                    case 'info_redacteurs' :
                      return ($GLOBALS['meta']['accepter_inscriptions'] == 'oui');
                   
                    case 'info_abonnements_expires' :
                      return ($GLOBALS['meta']['accepter_visiteurs'] == 'oui' OR $GLOBALS['meta']['forums_publics'] == 'abo');
                   
                    case 'info_visiteurs' :
                      return ($GLOBALS['meta']['accepter_visiteurs'] == 'oui' OR $GLOBALS['meta']['forums_publics'] == 'abo');
    
            }
    
            return false;
    }

    -  dans mesoptions.php

    // Et dans un fichier de pipeline
    function mon_plugin_abonnement_declarer_tables_objets_sql($tables){
           
            $tables['spip_auteurs']['statut_titres']['7expire'] = 'info_abonnements_expires';
            $tables['spip_auteurs']['statut_images']['7expire'] = 'auteur-7expire-16.png';
           
            return $tables;
    }

    Répondre à ce message

  • 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

Ajouter un commentaire

Qui êtes-vous ?

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

Dernière modification de cette page le 8 novembre 2017