summaryrefslogtreecommitdiff
path: root/django/contrib/auth/middleware.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/contrib/auth/middleware.py')
-rw-r--r--django/contrib/auth/middleware.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/django/contrib/auth/middleware.py b/django/contrib/auth/middleware.py
new file mode 100644
index 0000000000..4b3ed54960
--- /dev/null
+++ b/django/contrib/auth/middleware.py
@@ -0,0 +1,19 @@
+class LazyUser(object):
+ def __init__(self):
+ self._user = None
+
+ def __get__(self, request, obj_type=None):
+ if self._user is None:
+ from django.contrib.auth.models import User, AnonymousUser, SESSION_KEY
+ try:
+ user_id = request.session[SESSION_KEY]
+ self._user = User.objects.get(pk=user_id)
+ except (KeyError, User.DoesNotExist):
+ self._user = AnonymousUser()
+ return self._user
+
+class AuthenticationMiddleware:
+ def process_request(self, request):
+ assert hasattr(request, 'session'), "The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
+ request.__class__.user = LazyUser()
+ return None