Ensure ASTAKOS_COOKIE is not set if there is no django session cookie: and check...
authorSofia Papagiannaki <papagian@gmail.com>
Wed, 28 Nov 2012 13:45:08 +0000 (15:45 +0200)
committerSofia Papagiannaki <papagian@gmail.com>
Wed, 28 Nov 2012 13:45:08 +0000 (15:45 +0200)
snf-astakos-app/astakos/im/middleware.py

index 625ad03..6c68d52 100644 (file)
 # interpreted as representing official policies, either expressed
 # or implied, of GRNET S.A.
 
+from urllib import unquote
+from urlparse import urlunsplit, urlsplit
+
+from django.http import HttpResponse
+from django.utils.http import urlencode
+
 from astakos.im.cookie import Cookie
+from astakos.im.settings import COOKIE_NAME
+from astakos.im.util import get_query
 
 class CookieAuthenticationMiddleware(object):
+    def process_request(self, request):
+        if request.user.is_authenticated():
+            return
+        
+        cookie = unquote(request.COOKIES.get(COOKIE_NAME, ''))
+        if not cookie:
+            return
+        
+        response = HttpResponse(status=302)
+        
+        parts = list(urlsplit(request.path))
+        params = get_query(request)
+        parts[3] = urlencode(params)
+        url = urlunsplit(parts)
+        
+        response['Location'] = url
+        Cookie(request, response).fix()
+        return response
+    
     def process_response(self, request, response):
         Cookie(request, response).fix()
         return response
\ No newline at end of file