Created
May 14, 2010 06:01
-
-
Save statico/400860 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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