. */ namespace vierbergenlars\AuthserverExternalAccountBundle\EventListener; use App\AppEvents; use App\Event\TemplateEvent; use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use vierbergenlars\AuthserverExternalAccountBundle\Event\LoginButtonEvent; use vierbergenlars\AuthserverExternalAccountBundle\ExternalAccount\ExternalAccountProviderManager; use vierbergenlars\AuthserverExternalAccountBundle\ExternalAccountEvents; class LoginTemplateEventListener implements EventSubscriberInterface { /** * @var ExternalAccountProviderManager */ private $accountProviderManager; public function __construct(ExternalAccountProviderManager $accountProviderManager) { $this->accountProviderManager = $accountProviderManager; } public static function getSubscribedEvents() { return [ AppEvents::LOGIN_VIEW_BODY => ['onLoginViewBody', 1], ]; } public function onLoginViewBody(TemplateEvent $event) { $providers = $this->accountProviderManager->getAccountProviders(); if(count($providers) > 0) { $event->setArgument('hiddenPasswordLogin', true); $event->addTemplate(new TemplateReference('AuthserverExternalAccountBundle', 'Login', 'buttons', 'html', 'twig'), [ 'accountProviders' => $providers, ]); } } }