mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-29 20:44:24 +00:00
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
import importlib
|
|
from django.conf import settings
|
|
from django.utils.functional import SimpleLazyObject
|
|
from django.contrib.auth import get_user
|
|
from django.contrib.auth.middleware import AuthenticationMiddleware as DjangoAuthenticationMiddleware
|
|
|
|
module, klass = settings.AUTH_ANONYMOUS_MODEL.rsplit('.', 1)
|
|
AnonymousUser = getattr(importlib.import_module(module), klass)
|
|
|
|
|
|
def get_cached_user(request):
|
|
if not hasattr(request, '_cached_user'):
|
|
user = get_user(request)
|
|
if user.is_anonymous():
|
|
user = AnonymousUser(request)
|
|
|
|
request._cached_user = user
|
|
|
|
return request._cached_user
|
|
|
|
|
|
class AuthenticationMiddleware(DjangoAuthenticationMiddleware):
|
|
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' before "
|
|
"'account.middleware.AuthenticationMiddleware'."
|
|
)
|
|
request.user = SimpleLazyObject(lambda: get_cached_user(request))
|
|
|