]> git.parisson.com Git - django-social-auth.git/commitdiff
Disconnect accounts by associations. Fix gh-#85
authorRohan Jain <crodjer@gmail.com>
Mon, 13 Jun 2011 06:49:17 +0000 (12:19 +0530)
committerRohan Jain <crodjer@gmail.com>
Mon, 13 Jun 2011 06:49:17 +0000 (12:19 +0530)
Add url for disconnecting by individual association.
Allow association id as arg when dissociating.

This does not add any backward compatibility issues.

social_auth/backends/__init__.py
social_auth/urls.py
social_auth/views.py

index ce3046d4f575bcecd948cceed2a94c65b3f8480c..52482ba0219b3799039725026f8e0de78cca7d8f 100644 (file)
@@ -432,12 +432,14 @@ class BaseAuth(object):
         """Return backend enabled status, all enabled by default"""
         return True
 
-    def disconnect(self, user):
+    def disconnect(self, user, association_id=None):
         """Deletes current backend from user if associated.
         Override if extra operations are needed.
         """
-        user.social_auth.filter(provider=self.AUTH_BACKEND.name).delete()
-
+        if association_id:
+            user.social_auth.get(id=association_id).delete()
+        else:
+            user.social_auth.filter(provider=self.AUTH_BACKEND.name).delete()
 
 class OpenIdAuth(BaseAuth):
     """OpenId process handling"""
index 9f8b2c9882471e2cd8f2c0504dcaed6c04bf59b4..19db2632610424ebab7816379caab94e7f1416f4 100644 (file)
@@ -12,4 +12,5 @@ urlpatterns = patterns('',
     url(r'^associate/complete/(?P<backend>[^/]+)/$', associate_complete,
         name='associate_complete'),
     url(r'^disconnect/(?P<backend>[^/]+)/$', disconnect, name='disconnect'),
+    url(r'^disconnect-individual/(?P<backend>[^/]+)/(?P<association_id>\d+)/$', disconnect, name='disconnect-individual'),
 )
index 62a72384a1e4f01aa0ec61557065222c4c3b6b06..28f33bcdb70aa21098ef7b2f8cffede74123a132 100644 (file)
@@ -93,12 +93,12 @@ def associate_complete(request, backend):
 
 
 @login_required
-def disconnect(request, backend):
+def disconnect(request, backend, association_id=None):
     """Disconnects given backend from current logged in user."""
     backend = get_backend(backend, request, request.path)
     if not backend:
         return HttpResponseServerError('Incorrect authentication service')
-    backend.disconnect(request.user)
+    backend.disconnect(request.user, association_id)
     url = request.REQUEST.get(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT
     return HttpResponseRedirect(url)