Comment configurer les droits d'accès d'un module ?
Easy2Do permet de gérer les droits d'accès au ressources, afin d'éviter qu'un utilisateur simple ne modifie pas un élément alors qu'il n'en a pas le droits.
L'objectif de ce cookbook est de fournir une méthode pour intégrer les droits sur un module.
Le code complet (structure de répertoires, tests, configuration) est disponible dans le repo d’exemples Doing.
➡ Easy2Do : https://bitbucket.org/doingfr/doing-cookbooks-examples/src/main/e2d-gestion-des-droits
➡ Pour installer le SQL : .../?bModeInstallModule=1&szModulesPourInstall=commande
➡ Pour mettre les submodules sur les bonnes branches, il faut faire un git submodule update --init --recursive dans le répertoire du projet.
Puis :
git submodule sync
git submodule update --recursive
git submodule foreach -q --recursive 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
TL;DR
- Déclarer de nouvelles actions et modes dans securite.yml.
- Associer ces actions/modes à des clés de droits (ressource_droit).
- Attribuer ces droits à un rôle via l'interface SPV.
- Vérifier que les droits sont correctement appliqués dans l'UI (boutons, formulaires, etc.).
Prérequis
| Élément | Version / Remarque |
|---|---|
| PHP | 8.4 |
| E2D - Core | 2.18 |
| E2D - Bdd | 3.0 |
| E2D - Auth | 1.8 |
| E2D - Groupe | 1.5 |
| E2D - Menu | 1.1 |
Gestion des droits d'écriture/lecture/suppression
Rappel : modification d'un fichier de configuration YAML, n'oublie pas de faire un appel avec le paramètre bResetCache pour que les modifications soient prises en compte.
Pré-requis dans le projet :
- Avoir paramètrer des groupes sur les utilisateurs.
- Avoir activé les restrictions d'accès en surchargeant le fichier
conf.ymlde la ressource authentification (modules/authentification/config/conf.yml).restriction_acces: oui
Contexte
Nous avons un module de gestion de commandes. Nous voulons que les utilisateurs :
- du groupe "Lecture seule" puissent uniquement voir les commandes.
- du groupe "Éditeur" puissent voir et modifier les commandes.
- du groupe "Administrateur" puissent voir, modifier et supprimer les commandes.
Mise en place
- Créer un fichier
securite.ymldans le répertoireconfigdu projet. - Déclarer les actions et modes d'accès dans ce fichier
securite.yml - Associer ces actions/modes à des clés de droits (ressource_droit).
Étapes pour Ajouter/Modifier des Droits
Déclarer les actions et modes dans le fichier securite.yml du module. Par exemple, pour un module de gestion de commandes, vous pourriez avoir :
aRessources:
zone:
admin:
module:
commande:
controller:
commande:
mode: # mode déclarer dens conf.yml
accueil_commande:
cle: accueil-commande
libelle: accueil-commande
...
action: # action du controller
edition:
cle: edition-commande
libelle: edition-commande
...
supprimer:
cle: supprimer-commande
libelle: supprimer-commande
Déclarer les droits dans le fichier securite.yml du module. Mettre les actions que l'on autorise pour chaque groupe.
aRestrictionsAcces:
lecture-seule:
...
editeur:
- accueil-commande
- edition-commande-form
- edition-commande
- enregistrer-commande
administrateur:
...
Tu peux alors tester après un bResetCache pour que les modifications soient prises en compte.
Tips
Les boutons de suppressions sont toujours affichés, mais si l'utilisateur n'a pas le droit de suppression.
Il faut ajouter la classe action lié au droit de suppression sur le bouton sans le btn_action. Par exemple, pour un bouton de suppression de commande :
<span title="Supprimer une commande" class="btn_supprimer_commande action_commande_btn_supprimer_commande">
<i class="material-icons">delete</i>
</span>