Say for example I grant a new role to the currently authenticated user in a controller, like so:
$em = $this->getDoctrine()->getManager();
$loggedInUser = $this->get('security.context')->getToken()->getUser();
$loggedInUser->addRole('ROLE_XYZ');
$em->persist($loggedInUser);
$em->flush();
On the next page load, when I grab the authenticated user again:
$loggedInUser = $this->get('security.context')->getToken()->getUser();
They are not granted the role. I am guessing this is because the user is stored in the session and needs to be refreshed.
How do I do this?
I am using FOSUserBundle if that makes a difference.
EDIT: This question was originally asked in the context of Symfony version 2.3 but there are answers for more recent versions below as well.
if is_granted('ROLE_XYZ')
. I changed this toif app.user.hasRole('ROLE_XYZ')
and now it is working. Strange... – Precipitantis_granted('ROLE_XYZ')
does return TRUE as soon as I have logged out and back in again. – Precipitant