. */ namespace vierbergenlars\AuthserverOAuthAccountBundle\EventListener; use HWI\Bundle\OAuthBundle\Security\OAuthUtils; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Request; use vierbergenlars\AuthserverExternalAccountBundle\Event\LoginButtonEvent; use vierbergenlars\AuthserverExternalAccountBundle\ExternalAccountEvents; use vierbergenlars\AuthserverOAuthAccountBundle\ResourceOwner\ResourceOwnerMap; class LoginButtonListener implements EventSubscriberInterface { /** * @var OAuthUtils */ private $oauthUtils; /** * @var ResourceOwnerMap */ private $resourceOwnerConfig; public function __construct(OAuthUtils $oauthUtils, ResourceOwnerMap $resourceOwnerConfig) { $this->oauthUtils = $oauthUtils; $this->resourceOwnerConfig = $resourceOwnerConfig; } public static function getSubscribedEvents() { return [ ExternalAccountEvents::LOGIN_BUTTON => 'onLoginButton' ]; } public function onLoginButton(LoginButtonEvent $event) { foreach($this->oauthUtils->getResourceOwners() as $owner) { $event->addButton($this->resourceOwnerConfig[$owner]->getLoginButton() + [ 'url' => $this->oauthUtils->getLoginUrl(new Request(), $owner), ]); } } }