We are using Symfony2’s roles feature to restrict users’ access to certain parts of our app. Users can purchase yearly subscriptions and each of our User entities has many Subscription entities that have a start date and an end.
Now, is there a way to dynamically add a role to a user based on whether they have an ‘active’ subscription? In rails i would simply let the model handle whether it has the necessary rights but I know that by design symfony2 entities are not supposed to have access to Doctrine.
I know that you can access an entity’s associations from within an entity instance but that would go through all the user’s subscription objects and that seems unnecessaryly cumbersome to me.
I think you would do better setting up a custom voter and attribute.
The
SUBSCRIPTION_Xrole (aka attribute) would need to be handled by a custom voter class.You would need to configure and tag your voter: