diff --git a/Controller/ConnectController.php b/Controller/ConnectController.php
new file mode 100644
index 0000000..31f9497
--- /dev/null
+++ b/Controller/ConnectController.php
@@ -0,0 +1,56 @@
+.
+ */
+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()
+ ]);
+ }
+}
diff --git a/ExternalAccount/ExternalAccountProviderInterface.php b/ExternalAccount/ExternalAccountProviderInterface.php
index 8f2912b..c3c99c4 100644
--- a/ExternalAccount/ExternalAccountProviderInterface.php
+++ b/ExternalAccount/ExternalAccountProviderInterface.php
@@ -17,52 +17,65 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see
Are you sure you want to disconnect your {{ externalAccountProvider.serviceName }} account "{{ externalUser.providerFriendlyName }}"?
++ {{ form_start(form) }} + {{ form_widget(form) }} +
Connected to {{ externalUser.providerFriendlyName }} {% if currentProvider.hasDisconnect() %} - {{ icon('chain-broken') }} Disconnect account + {{ icon('chain-broken') }} Disconnect account {% endif %}
{% endfor %}