Sonata Admin: Let users only edit entities they own (ACL)

acl, sonata-admin, symfony

Solution

There is a new Symfony bundle doing just that: https://github.com/coopTilleuls/CoopTilleulsAclSonataAdminExtensionBundle

All you need to do is enable ACL in Sonata Admin, install the bundle and activate it. Pretty easy and effective, I use it in my Symfony2 project with Sonata Admin 2.2.

Problem

I have Sonata Admin set up with ACLs. I have different users, groups and permissions which work fine. To achieve this, i followed the Sonata Admin documentation on ACLs. So here is my question: What is a clean way to ensure that backend (admin) users can only view, edit and delete the entities they created with Symfony's and Sonata Admin's built-in ACL mechanisms? Sonata Admin automatically stores the owner (creator) of the object once it is persisted in the ACL tables (from the Sonata docs): Owner: when an object is created, the currently logged in user is set as owner for that object and is granted all access for that object; The same question has already been answered on Stackoverflow, but the answer does not explain in detail how to solve it with ACLs.

Original source

Related problems