From 915fd7b5f025559f988a43384ac121ba423f4d92 Mon Sep 17 00:00:00 2001 From: Lars Vierbergen Date: Sun, 22 Oct 2017 20:17:03 +0200 Subject: [PATCH] Only add external accounts template when there are providers available --- EventListener/ProfileTemplateListener.php | 33 ++++++++++++++--------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/EventListener/ProfileTemplateListener.php b/EventListener/ProfileTemplateListener.php index 515efbd..41da524 100644 --- a/EventListener/ProfileTemplateListener.php +++ b/EventListener/ProfileTemplateListener.php @@ -17,10 +17,8 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ - namespace vierbergenlars\AuthserverExternalAccountBundle\EventListener; - use App\Event\TemplateEvent; use HWI\Bundle\OAuthBundle\Security\OAuthUtils; use Symfony\Bridge\Doctrine\ManagerRegistry; @@ -33,16 +31,19 @@ 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; @@ -53,21 +54,27 @@ class ProfileTemplateListener implements EventSubscriberInterface { return [ UserEvents::USER_PROFILE_VIEW => [ - ['addExternalAccounts', -60] - ], + [ + 'addExternalAccounts', + -60 + ] + ] ]; } public function addExternalAccounts(TemplateEvent $event) { - $externalUsers = $this->registry->getManagerForClass(ExternalUser::class) - ->getRepository(ExternalUser::class) - ->findBy([ - 'user' => $event->getSubject(), + $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 ]); - $event->addTemplate(new TemplateReference('AuthserverExternalAccountBundle', 'Profile', 'external_accounts', 'html', 'twig'), [ - 'externalUsers' => $externalUsers, - 'providerManager' => $this->accountProviderManager, - ]); + } } }