Вы можете использовать обработчик с .postDelayed () и настроить его на наличие рекурсивной структуры, поэтому каждый раз через него будет изменен цвет, а затем будет опубликован следующий runnable, чтобы скрыть несколько секунд позже.
Я пошел с избирателями Symfony: https://symfony.com/doc/current/security/voters.html
Не смог достичь этого без роли безопасности без регистрации отъезд.
Я думаю, этот вопрос похож на ваш. Принятый ответ был:
$user = $this->getUser();
$user->addRole('ROLE_ADMIN');
$this->get('fos_user.user_manager')->updateUser($user);
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.context')->setToken($token);