. */ namespace vierbergenlars\AuthserverExternalAccountBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\HttpFoundation\Request; use vierbergenlars\AuthserverExternalAccountBundle\Entity\ExternalUser; class ConnectController extends Controller { public function disconnectServiceAction(Request $request, ExternalUser $externalUser) { $externalAccountProviderManager = $this->get('vierbergenlars.authserver_external_account.account_provider_manager'); /* @var $externalAccountProviderManager \vierbergenlars\AuthserverExternalAccountBundle\ExternalAccount\ExternalAccountProviderManager */ $externalAccountProvider = $externalAccountProviderManager->getProviderForExternalUser($externalUser); if (!$externalAccountProvider->hasDisconnect()) throw $this->createNotFoundException('This account can not be disconnected.'); $form = $this->createForm(FormType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $externalAccountProvider->disconnect($externalUser); return $this->redirectToRoute('user_profile'); } return $this->render('AuthserverExternalAccountBundle:Connect:disconnect_service.html.twig', [ 'externalAccountProvider' => $externalAccountProvider, 'externalUser' => $externalUser, 'form' => $form->createView() ]); } }