08/08/2026
Ranger n'est pas fermer
La demande était simple : « j'aimerais donner à chaque membre l'accès aux outils qui lui sont propres ; certains n'auront pas besoin du calendrier, d'autres oui ». On voit tout de suite quoi construire — des cases à cocher dans la fiche du compte. Ce qu'on voit moins, c'est le piège qui attend juste derrière.
Le mot qu'on a failli employer
Le mot qui vient naturellement, c'est « permission ». Il est faux, et il est cher.
Une permission décide de ce qu'on a le droit de faire. Elle vit du côté du serveur, sur chaque route, et elle est vérifiée à chaque appel. Ce que nous construisions décide de ce qu'on voit : un menu plus court, une palette qui ne propose plus ce qui ne sert pas. Les deux se ressemblent à l'écran. Ils ne protègent pas la même chose du tout.
Confondre les deux mène à une phrase que personne ne devrait jamais avoir à dire : « je croyais l'avoir désactivé ». Un outil retiré d'un menu n'est pas un outil fermé. Son adresse reste tapable, son API reste ouverte à qui y avait droit. Si on appelle ça une permission, on cesse de regarder la vraie serrure.
Nous avons donc écrit l'inverse partout où quelqu'un pourrait se tromper : dans l'écran, sous les cases, dans la documentation, et jusque dans le commentaire en tête du fichier qui porte la logique. Ce réglage range l'espace de travail. Il ne remplace pas le rôle, qui seul décide des droits.
La seule chose qui devait être une garantie
Il restait malgré tout une propriété à tenir, et une seule : cocher une case ne doit jamais ouvrir un droit.
C'est une question d'ordre, littéralement. Le filtre du rôle s'applique d'abord ; la sélection ne fait que retrancher à ce qu'il a laissé passer. Deux lignes échangées, et une case cochée par inattention dans une fiche deviendrait une élévation de privilège silencieuse.
Une propriété qui tient à l'ordre de deux lignes ne tient pas longtemps toute seule. Un test coche donc les trente outils pour un compte qui n'a le droit d'aucun, et exige que rien ne s'ouvre. Nous l'avons validé en réintroduisant le défaut — c'est la seule façon de savoir qu'un test surveille bien ce qu'il prétend surveiller.
Ne pas pouvoir s'enfermer dehors
Tout dispositif qui retire des accès finit par en retirer un de trop, et généralement à celui qui manipulait le réglage.
Deux cases ne se décochent donc pas : l'accueil et « Mon profil ». Sans la première, un membre atterrit sur une page qu'il n'a pas le droit de voir et se fait renvoyer vers elle-même. Sans la seconde, il ne peut plus changer son mot de passe. Et un administrateur ne peut pas restreindre ses propres outils : il se priverait de la page des comptes, qui est le seul écran d'où défaire ce qu'on vient de faire. Ce refus vit dans l'API, pas seulement dans l'écran — sinon ce ne serait qu'une politesse.
Une absence qui ne veut pas dire « rien »
Le jour du déploiement, aucun compte n'a de sélection enregistrée. Si « pas de sélection » avait voulu dire « aucun outil », toute l'équipe se serait connectée le lendemain devant un menu vide.
L'absence signifie donc « tout ce que son rôle permet », outils à venir compris. C'est aussi la seule valeur qui reste juste dans six mois : une sélection explicite, elle, est figée — un outil livré plus tard n'y sera pas. Nous aurions pu faire l'inverse et rendre visible tout nouvel outil pour tout le monde ; ç'aurait fait de chaque livraison une ouverture d'accès que personne n'aurait décidée. Nous avons préféré la sélection figée, et l'écrire dans l'écran plutôt que de le laisser découvrir.
Les quatre listes qui oublient toujours de suivre
Cette console a un défaut récurrent, et nous le connaissons bien : elle navigue par quatre chemins — le menu latéral, la palette au clavier, la barre du bas sur téléphone, les raccourcis de création — et il y en a toujours un qui oublie de suivre. Un outil retiré reste alors atteignable par là, ce qui donne l'impression d'un réglage qui ne marche qu'à moitié.
Les quatre lisent la même sélection, et un test le vérifie fichier par fichier. Le cinquième chemin, c'est l'adresse elle-même : retirer une entrée d'un menu ne ferme aucune porte, un favori de navigateur la rouvre intacte. Une garde renvoie donc à l'accueil — en attendant que le profil soit chargé, sans quoi un administrateur se ferait éjecter de sa propre page à chaque rechargement.
Et vingt-cinq cases à cocher
Reste le vrai risque : un réglage qui demande vingt-cinq clics par personne ne sera utilisé qu'une fois. Six profils types posent une base en un clic, puis s'effacent — ce ne sont pas des rôles, rien ne les mémorise. On les retouche ensuite case par case, ce qui est exactement l'usage qu'on veut : un point de départ, pas une catégorie de plus à administrer.
