Aller au contenu principal

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.

Code source complet

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)'
Easy2Do : 1h Total : 1h

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émentVersion / Remarque
PHP8.4
E2D - Core2.18
E2D - Bdd3.0
E2D - Auth1.8
E2D - Groupe1.5
E2D - Menu1.1

Gestion des droits d'écriture/lecture/suppression

info

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.yml de 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.yml dans le répertoire config du 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>