Skip to content

Instantly share code, notes, and snippets.

@statico
Created May 14, 2010 06:01
Show Gist options
  • Save statico/400860 to your computer and use it in GitHub Desktop.
Save statico/400860 to your computer and use it in GitHub Desktop.
import logging
from django.core import urlresolvers
class FacebookLogoutMiddleware(object):
LOGOUT_PATHS = (
urlresolvers.reverse('django.contrib.auth.views.logout'),
urlresolvers.reverse('django.contrib.auth.views.login'),
urlresolvers.reverse('django.contrib.auth.views.logout_then_login'),
urlresolvers.reverse('socialregistration.views.logout'),
)
def _clear_session(self, session):
logging.debug('Clearing session')
for key in 'facebook_user_id', 'facebook_session_key':
if session.has_key(key):
del session[key]
logging.debug('Deleted session var %s', key)
def process_request(self, request):
if request.path in self.LOGOUT_PATHS:
logging.debug('Processing logout request for FacebookLogouMiddleware')
if not hasattr(request, 'facebook'):
logging.debug('No facebook object found in request')
return None
logging.debug('Clearing cookies')
for key in request.COOKIES:
if key.startswith(request.facebook.api_key):
del request.COOKIES[key]
logging.debug('Deleted cookie %s', key)
self._clear_session(request.session)
def process_response(self, request, response):
if request.path in self.LOGOUT_PATHS:
logging.debug('Processing logout response for FacebookLogouMiddleware')
if not hasattr(request, 'facebook'):
logging.debug('No facebook object found in request')
return response
logging.debug('Clearing cookies')
for key in request.COOKIES:
if key.startswith(request.facebook.api_key):
response.delete_cookie(key)
logging.debug('Deleted cookie %s', key)
self._clear_session(request.session)
return response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment