. */ 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) { $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, ]); } }