20 lines
627 B
Python
20 lines
627 B
Python
import threading
|
|
from django.utils.deprecation import MiddlewareMixin
|
|
|
|
_local = threading.local()
|
|
|
|
def get_current_username():
|
|
u = getattr(_local, "user", None)
|
|
if not u or not getattr(u, "is_authenticated", False):
|
|
return ""
|
|
return getattr(u, "username", "") or ""
|
|
|
|
class CurrentUserMiddleware(MiddlewareMixin):
|
|
def process_request(self, request):
|
|
_local.user = getattr(request, "user", None)
|
|
def process_response(self, request, response):
|
|
_local.user = None
|
|
return response
|
|
def process_exception(self, request, exception):
|
|
_local.user = None
|
|
return None |