
Auteurs : Łukasz Uznański
Traduit par : Célia - W-Seils
Dans cet article, Łukasz Uznański décrit la conception, le parcours de développement (y compris les expériences et les pièges liés à l'expérience utilisateur) et les scénarios pratiques d'application des ensembles d'autorisations dans les projets TYPO3 nouveaux et existants.
L'initiative d'amélioration des listes de contrôle d'accès (ACL) introduit une approche basée sur les fichiers, avec une interface utilisateur, pour la gestion des permissions backend dans TYPO3. Elle s'appuie sur les travaux précédents, mais les redéfinit grâce aux ensembles de permissions : des fichiers de configuration déployables, versionnables et faciles à intégrer. Avec la nouvelle extension ACL Enhancements (acl_enhancements) , les permissions peuvent être exportées, importées, modifiées et distribuées entre les environnements.
Les principaux avantages sont les suivants :
Nous souhaitions créer une extension autonome afin d'apporter à la communauté des améliorations essentielles au flux de travail de TYPO3. Nous avons repris les travaux précédents relatifs aux ACL, extrait des fonctionnalités de correctifs, puis étendu la compatibilité à TYPO3 v13 et commencé à développer des fonctionnalités supplémentaires.
L'objectif était de rendre les ensembles d'autorisations utilisables dans la vie réelle par la communauté .

Un ensemble d'autorisations est un fichier qui décrit intégralement les règles ACL d'un groupe backend. Il représente toutes les sélections de la configuration du groupe, stockées en dehors de la base de données.
Considérez un ensemble d'autorisations comme une infrastructure en tant que code pour les ACL TYPO3.
Auparavant, les ACL existaient uniquement dans la base de données, ce qui limitait leur portabilité et leur traçabilité. Grâce aux améliorations apportées aux ACL :
Cela transforme les ACL (listes de contrôle d'accès) d'enregistrements de base de données en ressources de code. Les permissions sont désormais portables, auditables et cohérentes entre les environnements de développement, de préproduction et de production.
Exemple de fichier d'exportation généré par l'extension, qui peut être utilisé comme ensemble, importé ou joint à votre extension :
étiquette : 'Tous les utilisateurs'
catégories : { }
options personnalisées : { }
Points de montage de fichiers : { }
Autorisations du fichier :
- dossier de lecture
- écrireDossier
- ajouterDossier
- renommer le dossier
- déplacer le dossier
- copierDossier
- supprimer le dossier
- lireFichier
- écrireFichier
- ajouterFichier
- renommer le fichier
- déplacerFichier
- copierFichier
- supprimerFichier
langues : { }
mfaProviders : { }
modules :
configuration_utilisateur : vrai
ressources:
pages :
autorisations :
- lire
fichier_système :
autorisations :
- lire
collection_de_fichiers_système :
autorisations :
- lireLes ensembles de permissions ne se limitent pas au code du projet. Les auteurs d'extensions peuvent fournir des préréglages ACL pour leurs propres modules et tables, ce qui facilite la mise en œuvre générale des permissions dans tous les projets TYPO3.
Cela introduit un modèle de responsabilité partagée : les auteurs d’extensions définissent les valeurs par défaut, les intégrateurs décident comment et si elles doivent être utilisées.

Le correctif initial permettait uniquement d'importer des ensembles d'autorisations et de les appliquer aux groupes backend. Cette fonctionnalité était puissante, mais trop limitée. Les éditeurs ne pouvaient ni créer ni modifier eux-mêmes ces ensembles, et les intégrateurs devaient gérer les fichiers manuellement dans les EDI.
Pour améliorer l'ergonomie, j'ai introduit un bouton « Créer un préréglage » qui vous permet de créer des préréglages à partir du groupe d'administration.
Choisissez d'enregistrer ou d'exporter la configuration sous forme de fichier YAML dans config/permission-sets/.
Cela permet aux éditeurs de migrer les groupes existants basés sur une base de données vers des ensembles d'autorisations basés sur des fichiers.

J'ai d'abord essayé d'intégrer la fausse vue TCA dans une fenêtre modale. C'était esthétique, mais son utilité était discutable. Les recommandations UX de TYPO3 déconseillent également d'intégrer des vues logiques dans des fenêtres modales.
J'ai opté pour l'ouverture des préréglages dans un nouveau module. Cela a résolu les problèmes de navigation et a permis d'ajouter des fonctionnalités comme l'enregistrement, l'exportation et la modification.
Au départ, les groupes et les ensembles d'autorisations du backend disposaient d'un bouton d'exportation générant des fichiers YAML. Bien que fonctionnel, ce système a engendré de la confusion : exporter un groupe n'avait guère de sens, puisqu'il s'agissait d'exporter un ensemble d'autorisations et non le groupe lui-même.
Décision : Supprimer l’exportation des groupes et la conserver uniquement dans le contexte des ensembles d’autorisations. Cela renforce la clarté et s’aligne sur le modèle de données logique.

Pour remplacer l'édition manuelle des fichiers, j'ai créé un module backend dédié.

Caractéristiques :
Défis techniques : la gestion des fichiers dans l’interface d’administration de TYPO3 n’était pas simple ; la gestion des répertoires, des horodatages et des identifiants a nécessité une logique personnalisée. Mais ce travail était indispensable pour rendre les améliorations ACL véritablement conviviales pour les éditeurs.

Ce module propose des aperçus en lecture seule des ensembles d'autorisations. Ces aperçus ne peuvent pas être modifiés dans l'interface utilisateur, mais peuvent être examinés en détail.
Cela empêche les modifications accidentelles tout en offrant aux administrateurs une visibilité complète sur l'impact de chaque ensemble.
Lorsqu'un champ backend est verrouillé car il est géré par un ensemble d'autorisations, l'interface utilisateur affiche exactement :

Sans cela, le débogage des permissions relève de la conjecture. Grâce à cela, les intégrateurs peuvent immédiatement voir pourquoi un champ est bloqué et quel ensemble de paramètres est responsable.
En plus des aperçus et des informations au niveau des champs, le module suit également les groupes backend connectés à un ensemble d'autorisations donné.
Cette fonctionnalité est particulièrement utile dans les installations TYPO3 de grande envergure où plusieurs groupes peuvent dépendre du même préréglage. Elle permet aux administrateurs d'évaluer les modifications en toute sécurité, sans effets secondaires indésirables.
Par défaut, les permissions sont définies sur YAML, mais le système prend en charge d'autres formats d'écriture de fichiers. Les projets peuvent implémenter JSON, XML ou d'autres formats si nécessaire. Cette approche flexible garantit une intégration aisée dans divers pipelines CI/CD.
L'extension ACL Enhancements est disponible publiquement et nous souhaitons l'améliorer collectivement. Les développeurs d'extensions tierces peuvent proposer leurs propres ensembles d'autorisations, ce qui favoriserait son adoption et normaliserait son utilisation dans TYPO3. Voici quelques pistes pour l'avenir :
Ajoutez une fonctionnalité permettant de comparer deux préréglages et de visualiser les différences dans leur configuration ACL. Cela aidera les intégrateurs à identifier rapidement les incohérences et à déterminer s'il est nécessaire de créer un nouvel ensemble d'autorisations ou si un ensemble existant peut être réutilisé.
Introduisez une fonction d'importation permettant de charger directement les définitions de listes de contrôle d'accès (ACL) depuis un module backend TYPO3 vers le répertoire système `config/permission-sets/`. Cela accélère la création d'ensembles sans avoir à exporter ni modifier manuellement les fichiers.
Activer l'héritage entre les ensembles d'autorisations. En pratique :
Ajouter un mécanisme permettant de remplacer les anciennes listes de contrôle d'accès (ACL) définies dans la base de données par de nouveaux ensembles basés sur des fichiers. Cela permettrait aux intégrateurs de migrer les groupes existants sans avoir à les recréer manuellement, garantissant ainsi une adoption plus fluide des permissions déployables.
Modifiez le bouton « Nouveau » pour qu'il lance un assistant. Cet assistant permettra de sélectionner un ou plusieurs ensembles d'autorisations existants comme modèles, puis de les copier dans un nouvel ensemble. Cela simplifie la création de nouveaux ensembles en réutilisant les configurations existantes.
Instaurer une liaison entre les groupes backend et les ensembles d'autorisations. Ainsi, toute modification apportée au groupe mettra automatiquement à jour le fichier associé. Combiné au suivi des versions, cela garantit la synchronisation des fichiers sans nécessiter d'exportations manuelles.
Lors de l'exportation d'un ensemble, affichez une fenêtre contextuelle demandant si vous souhaitez écraser le fichier existant ou l'enregistrer sous un nouveau nom. Par défaut, les nouveaux fichiers doivent respecter la convention de nommage [nom_de_fichier]-X , où le nom de base dépend du titre du groupe. Cela évite les écrasements accidentels tout en garantissant des noms de fichiers prévisibles.
Les améliorations apportées aux ACL redéfinissent la gestion des permissions dans TYPO3 :
Cette initiative fait le lien entre l'ergonomie et l'infrastructure en tant que code, rendant les permissions TYPO3 flexibles, maintenables et pérennes, et le résultat de cette initiative est une extension autonome que vous pouvez utiliser dans votre projet.
Nous vous encourageons à utiliser l'extension ACL Enhancements, à nous faire part de vos commentaires et à signaler tout problème rencontré.
Découvrez les améliorations ACL sur GitHub !