Outils pour utilisateurs

Outils du site


appliquer_des_acl_sur_les_boutons_de_dokuwiki

Appliquer des ACL aux boutons de DokuWiki (et aux actions qui sont derrière)

Autant le dire tout de suite, cette fonctionnalité n'est pas au programme des évolutions de DokuWiki, malgré des demandes aussi nombreuses qu'anciennes.

Cela n'empêche pas de développer des fonctionnalités allant dans ce sens, voir de les distribuer sous la forme de plugin.

Cas d'utilisation

J'utilise DokuWiki pour mettre un ligne1) un ensemble de fiches pratiques que je suis seule à rédiger2). Il n'y pas de d'espace de discussion ni même de formulaire de contact.

Dans ce contexte d'utilisation, je souhaite que les internautes ne disposant pas de compte n'aient pas accès aux versions textuelles (source) des pages, aux liens de retour, aux anciennes versions, au gestionnaire de modification, aux derniers changements et au gestionnaire multimédia.

Solution

Le plugin tplmod (template modifier) couvre entièrement les besoins qui découlent de ce type d'utilisation et au-delà

La section ACL controls présente les fonctionnalités touchant à ces besoins.

Le plugin tplmod s'installe de manière archi-classique, via l'interface d'administration standard de DokuWiki. Il se configure via le gestionnaire de configuration standard de DokuWiki. Et voilà :UPSIDE-DOWN-FACE:

Contrairement à ce que pourrait laisser supposer son nom, tplmod ne se contente pas de faire disparaître les “boutons” et liens permettant d'accéder aux fonctionnalités que l'on souhaite bloquer. Il rend les actions sous-jascentes inacessibles via leur URL3).

Cerise sur le gâteau, tplmod s'appuie sur les niveaux de droits standards définis dans les ACL de DokuWiki4).

Le plugin contient un bug qui génère des messages d'avertissement à chaque chargement de page. Le seul préjudice est de rendre les log illisibles car noyés sous ces messages d'erreurs.
Si ça vous aide, le patch suivant effectue les modifications nécessaires5).

Limites des fonctionnalités intégrées à DokuWiki

Afin d'éviter d'avoir recours à un plugin, j'ai été tentée d'exploiter les seules fonctionnalités de base de DokuWiki. État des lieux…

Portée des listes de contrôle d'accès (ACL) existantes

La version de base de DokuWiki dispose d'une fonctionnalité d'ACL. Malheureusement, celle-ci est limitée aux pages que l'on rédige6).

Elles fonctionnent en tout ou rien. Si une page est rendue inaccessible, cela concerne bien sûr sa version mise en page mais aussi, son code source ainsi que ses versions passées. C'est la moindre de choses…
Si elle est rendue accessible, les contenus et pages associées le sont également. Impossible de faire le tri.

En l'état, les ACL intégrées à DokuWiki n'apporte aucune solution à mon cas d'utilisation.

Désactiver les fonctionnalités et le boutons

Par défaut, DokuWiki est équipé d'un mécanisme permettant de ne pas afficher certains boutons donnant accès aux contenus dont je souhaite contrôler l'affichage.

Le problème est que la gestion de ces autorisations, parallèle aux ACL, s'applique à toutes les utilisatrices, enregistrées ou non, administratrices ou non.

Dommage, car la suppression des boutons s'accompagne du blocage de l'accès aux pages/actions7) correspondantes. Autrement dit, cette suppression et n'est pas que «cosmétique».

Discussion

Philosophie

Le design de DokuWiki correspond à une conception très collaborative et ouverte. L'architecture logicielle reflète ce choix structurant. Il est donc logique que lorsqu'une page est accessible, toutes ses facettes le soient également.

Par exemple s'il est admis que les autrices souhaitent disposer de l'historique de leur pages et les partager avec leurs paires, c'est que cette information est utile. Dans ce cas, pourquoi ne pas la partager avec les lectrices. Quel risque réel y a-t-il à le faire ?

Aspiration de site et robots d'indexation

Une préoccupation fréquente est de limiter ce type d'accès à la version standard des pages. Il y a de bonnes raisons8) à cela mais il faut alors se poser plusieurs questions. Est-ce légitime de priver tout le monde de fonctionnalités qui pourraient leur servir pour ce seul motif ? Est-ce que je limite l'accès à mon site pour tous les crawlers faute de pouvoir interdire complètement à certains crawlers ? Est-ce que je souhaite interdire tous les crawlers ?

Sans entrer dans les détails, voici quelques bonnes pratiques qui m'évitent de me perdre en conjectures.

  • La seule chose immuable est le changement. Je cherche donc une solution pour aujourd'hui (et “demain”) mais gère plus.
  • robots.txt est un outil efficace pour limiter l'indexation à certaines pages. Corollaire : bloquer tous les crawlers qui ne respectent pas “robots.txt”9).
  • N'autoriser que les crawlers qui m'intéressent. Bloquer tous les autres. Bref, appliquer un principe de liste blanche.

Les solutions se trouvent et se configurent généralement au niveau du serveur web (via des modules spécialisés) et des outils dédiés, déployés à l'échelle du système.

Cela n'empêche pas de développer des plugins centrés sur ce type de problématique :

  • Bot Monitor Plugin peut donner une idée de l'importance du problème, sans avoir à ouvrir le capot de la machinerie…

Faire ou ne pas faire avec…

Les considérations qui précèdent interrogent mon expression de besoins. Cependant il est courant d'utiliser une application (ici DokuWiki) en décalage avec les objectifs poursuivis par les concepteurices et malgré le fait que ces objectifs conforment l'architecture de l'application, ses fonctionnalités, ses évolutions, ses interfaces.

Cela suscite le développement des plugins permettant de s'affranchir de certains mécanismes inhérents à DokuWiki10). Outre tplmod déjà mentionné, cmsmode explicite un type possible de détournement de DokuWiki à d'autre fins : ici transformer un wiki en cms, c'est-à-dire un éditeur d'hypertexte en gestionnaire de contenus11).

1)
Initialement pour un simple usage personnel.
2)
Le site que vous êtes en train de consulter.
3)
Par exemple, même si l'utilisatrice sait que l'URL d'accès aux modification d'une page s'obtient en ajoutant “?do=revisions” à l'URL de la page, ce lien est inopérant, comme ici : https://hotline.asdrad.com/appliquer_des_acl_sur_les_boutons_de_dokuwiki?do=revisions
4)
NONE, READ, EDIT, CREATE, UPLOAD, DELETE.
5)
Le dézipper et appliquer la commande : patch action.php < tplmod_action.patch
6)
Auxquelles s'ajoutent quelques pages génériques.
7)
DokuWiki traite ces les liens associés au bouton comme des actions appliquées à la page courante.
8)
Ne serait-ce que les ressources que l'on paie : bande passante, cpu, mémoire, etc.
9)
Tant pis pour archives.org qu'il reste possible d'autoriser via un mécanisme de liste blanche.
10)
Par exemple, struct Plugin apporte une solution à celles qui souhaitent associer des pages à des structures de données, typiquement à partir de bases de données :FLUSHED-FACE:
11)
Carrément proche de mon cas d'utilisation :-D
appliquer_des_acl_sur_les_boutons_de_dokuwiki.txt · Dernière modification : de Flaz