|
|
@ -33,30 +33,52 @@ use vierbergenlars\AuthserverExternalAccountBundle\ExternalAccountEvents; |
|
|
|
|
|
|
|
|
|
|
|
class LoginTemplateEventListener implements EventSubscriberInterface |
|
|
|
class LoginTemplateEventListener implements EventSubscriberInterface |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
|
|
|
|
* |
|
|
|
* @var ExternalAccountProviderManager |
|
|
|
* @var ExternalAccountProviderManager |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private $accountProviderManager; |
|
|
|
private $accountProviderManager; |
|
|
|
|
|
|
|
|
|
|
|
public function __construct(ExternalAccountProviderManager $accountProviderManager) |
|
|
|
/** |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @var UrlGeneratorInterface |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private $urlGenerator; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function __construct(ExternalAccountProviderManager $accountProviderManager, UrlGeneratorInterface $urlGenerator) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$this->accountProviderManager = $accountProviderManager; |
|
|
|
$this->accountProviderManager = $accountProviderManager; |
|
|
|
|
|
|
|
$this->urlGenerator = $urlGenerator; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static function getSubscribedEvents() |
|
|
|
public static function getSubscribedEvents() |
|
|
|
{ |
|
|
|
{ |
|
|
|
return [ |
|
|
|
return [ |
|
|
|
AppEvents::LOGIN_VIEW_BODY => ['onLoginViewBody', 1], |
|
|
|
AppEvents::LOGIN_VIEW_BODY => [ |
|
|
|
|
|
|
|
'onLoginViewBody', |
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
] |
|
|
|
]; |
|
|
|
]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function onLoginViewBody(TemplateEvent $event) |
|
|
|
public function onLoginViewBody(TemplateEvent $event, $eventName, EventDispatcherInterface $eventDispatcher) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
$loginButtonEvent = new LoginButtonEvent($this->urlGenerator); |
|
|
|
|
|
|
|
|
|
|
|
$providers = $this->accountProviderManager->getAccountProviders(); |
|
|
|
$providers = $this->accountProviderManager->getAccountProviders(); |
|
|
|
if(count($providers) > 0) { |
|
|
|
foreach ($providers as $provider) { |
|
|
|
|
|
|
|
$loginButtonEvent->addButton($provider->getLoginButton()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$eventDispatcher->dispatch(ExternalAccountEvents::LOGIN_BUTTON, $loginButtonEvent); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$buttons = $loginButtonEvent->getButtons(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (count($buttons) > 0) { |
|
|
|
$event->setArgument('hiddenPasswordLogin', true); |
|
|
|
$event->setArgument('hiddenPasswordLogin', true); |
|
|
|
$event->addTemplate(new TemplateReference('AuthserverExternalAccountBundle', 'Login', 'buttons', 'html', 'twig'), [ |
|
|
|
$event->addTemplate(new TemplateReference('AuthserverExternalAccountBundle', 'Login', 'buttons', 'html', 'twig'), [ |
|
|
|
'accountProviders' => $providers, |
|
|
|
'buttons' => $buttons |
|
|
|
]); |
|
|
|
]); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|