Say for example I grant a new role to the currently authenticated user in a controller, like so:
$em = $this->getDoctrine()->getManager();
$loggedInUse
While an answer is accepted, Symfony actually has a native way to refresh the User object. Credit goes out to Joeri Timmermans for this article.
Steps for refreshing the User object:
Symfony\Component\Security\Core\User\EquatableInterface
public function isEqualTo(UserInterface $user)
{
if ($user instanceof User) {
// Check that the roles are the same, in any order
$isEqual = count($this->getRoles()) == count($user->getRoles());
if ($isEqual) {
foreach($this->getRoles() as $role) {
$isEqual = $isEqual && in_array($role, $user->getRoles());
}
}
return $isEqual;
}
return false;
}
The code above refreshes the User object if any new roles are added. The same principle also holds true for other fields you compare.