I'm currently struggling with almost the same thing.
I've managed to get ACL working with Sonata Admin... but it seems the default implementation is basically Role / Class based security. You can set one or more Roles for each ACL managed entity in your system, but that gives the user access to at least View ALL objects of that entity type.
In my case, I do not want to give even Guest level access to any entity. Instead, I want to give Master access to one specific Object of an Entity.
So, I've managed to do that with some custom postPersist logic... however, what I'm finding, is that since the user does not have LIST permission for the entire class, he cannot see even the one object he is Master of!
I would expect that if the user has any permission level for at least one of an object of an entity type, then he should be able to access List view, but only see his permitted objects.
Hope I'm being clear.
Assuming I am, can anyone point me in the direction of the "expected solution" for this type of issue, if any? If there isn't a built-in Symfony / Sonata solution for this... what is the best path for customization? I'm thinking:
1) Override the isGranted method in the admin classes to redefine the meaning of granting LIST permission.
2) Override the createQuery method in the admin to return the permitted list of objects.
Is that what I've got to do or is there some other purely ACL configuration related solution?
TY,
G