Table des matières
Appliquer des ACL aux boutons de DokuWiki (et aux actions qui sont derrière)
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à
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).
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).


