Add url for disconnecting by individual association.
Allow association id as arg when dissociating.
This does not add any backward compatibility issues.
"""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"""
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'),
)
@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)