Activer les ACLs dans SonataAdmin

Publié le par samuel

Les ACLs est un puissant outil de gestion des droits utilisateurs. Nous allons voir dans cet article la configuration de base pour activer les ACLs sur SonataAdmin (avec SonataUser)

Note : L’implémentation des ACLs est décrite dans la documents officiel de Symfony et Sonata.

Configuration pour l’article :

  • Symfony : version 2.7
  • SonataAdmin : version 2.3
  • SonataUser : > version 2.2.4 (actuellement @dev)

Commençons part le config.yml

parameters:
    # map de base fourni par sonata
    security.acl.permission.map.class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap

sonata_admin:
    security:
        handler: sonata.admin.security.handler.acl
        # agregat de base des roles (exemple guest peut "voir" et "lister")
        information:
            GUEST:    [VIEW, LIST]
            STAFF:    [VIEW, LIST, CREATE]
            EDITOR:   [VIEW, LIST, CREATE, EDIT, DELETE]
            ADMIN:    [MASTER]

        # permissions général de l'administration
        admin_permissions: [VIEW, EDIT, CREATE, LIST, DELETE, UNDELETE, EXPORT, OPERATOR, MASTER]
        # permissions pouvant être attribué au cas par cas dans l'administration - ceci est un exemple
        object_permissions: [VIEW, EDIT, DELETE, MASTER]

Puis le security.yml :

security:
    acl:
        connection: default

Allons dans une console et executons trois commandes :

  • php app/console init:acl -> ajout les tables dans votre BDD (une migration est recommandé)
  • php app/console sonata:admin:setup-acl -> créer les rôles définit plus haut
  • php app/console sonata:admin:generate-object-acl -> applique les droits sur les objets déjà existant dans votre base de données

Et c’est tout !

Les ACLs sont en places vous pouvez maintenant les utiliser dans le security.yml, sur un utilisateur (via les rôles), sur un groupe ou via le bouton d’édition des permissions dans le formulaire d’un objet.

Bienvenue dans le monde des ACLs.

Bonus commande capifony pour les ACLs :

    namespace :sonata do
        namespace :admin do
            desc "Setup acl for sonata admin"
            task :setupacl do
                run "cd #{current_release} && php app/console sonata:admin:setup-acl --no-debug"
            end
            desc "Generate object acl for sonata admin"
            task :generateobjectacl do
                run "cd #{current_release} && php app/console sonata:admin:generate-object-acl --no-debug --no-interaction"
            end
        end
    end
Cette entrée a été publiée dans Administration. Vous pouvez la mettre en favoris avec ce permalien.



Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*


* three = 21

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>