На моем сайте я хочу дать некоторым пользователям возможность менять свою роль, нажимая кнопку. Я реализовал это следующим образом:
$post = Request::createFromGlobals();
if($post->request->has('change') && $user->hasRole('ROLE_MEDIA') == False){
$em = $this->getDoctrine()->getManager();
$user->setRoles(array('ROLE_MEDIA'));
$em->flush();
}
Он работает нормально, после проверки базы данных и я могу восстановить в главном контроллере флаг без проблем. Проблема заключается в следующем: после нажатия кнопки и доступа к закрытым страницам пользователям, у которых есть ROLE_MEDIA, я получаю ошибку 403. Кажется, что Symfony не обнаруживает новую роль пользователя. Я ограничиваю некоторые страницы, используя следующий код:
/**
*
* @Security("has_role('ROLE_MEDIA')")
*/
Я не понимаю проблему, потому что я могу получить правильные значения в моем контроллере … Заранее спасибо
Я обнаружил, что самое простое решение — обновить сеанс путем восстановления идентификатора сеанса:
$post = Request::createFromGlobals();
if($post->request->has('change') && $user->hasRole('ROLE_MEDIA') == False){
$em = $this->getDoctrine()->getManager();
$user->setRoles(array('ROLE_MEDIA'));
$em->flush();
$this->get('session')->migrate();
}
Других решений пока нет …