. */ namespace vierbergenlars\AuthserverExternalAccountBundle\EventListener; use App\Event\TemplateEvent; use HWI\Bundle\OAuthBundle\Security\OAuthUtils; use Symfony\Bridge\Doctrine\ManagerRegistry; use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use User\UserEvents; use vierbergenlars\AuthserverExternalAccountBundle\Entity\ExternalUser; use vierbergenlars\AuthserverExternalAccountBundle\ExternalAccount\ExternalAccountProviderManager; use vierbergenlars\AuthserverOAuthAccountBundle\ResourceOwner\ResourceOwnerMap; class ProfileTemplateListener implements EventSubscriberInterface { /** * * @var ManagerRegistry */ private $registry; /** * * @var ExternalAccountProviderManager */ private $accountProviderManager; public function __construct(ManagerRegistry $registry, ExternalAccountProviderManager $accountProviderManager) { $this->registry = $registry; $this->accountProviderManager = $accountProviderManager; } public static function getSubscribedEvents() { return [ UserEvents::USER_PROFILE_VIEW => [ [ 'addExternalAccounts', -60 ] ] ]; } public function addExternalAccounts(TemplateEvent $event) { $providers = $this->accountProviderManager->getAccountProviders(); if (count($providers) > 0) { $externalUsers = $this->registry->getManagerForClass(ExternalUser::class) ->getRepository(ExternalUser::class) ->findBy([ 'user' => $event->getSubject() ]); $event->addTemplate(new TemplateReference('AuthserverExternalAccountBundle', 'Profile', 'external_accounts', 'html', 'twig'), [ 'externalUsers' => $externalUsers, 'providerManager' => $this->accountProviderManager ]); } } }