33 lines
1007 B
Python
33 lines
1007 B
Python
|
|
"""
|
||
|
|
Auto-authenticate all requests as a default admin user.
|
||
|
|
This removes the need for login in local/test environments.
|
||
|
|
"""
|
||
|
|
from django.conf import settings
|
||
|
|
from django.contrib.auth import get_user_model
|
||
|
|
|
||
|
|
User = get_user_model()
|
||
|
|
|
||
|
|
|
||
|
|
class NoAuthMiddleware:
|
||
|
|
"""Middleware that auto-authenticates every request as the first superuser."""
|
||
|
|
|
||
|
|
def __init__(self, get_response):
|
||
|
|
self.get_response = get_response
|
||
|
|
|
||
|
|
def __call__(self, request):
|
||
|
|
# Only set user if not already authenticated
|
||
|
|
if not request.user.is_authenticated:
|
||
|
|
try:
|
||
|
|
user = User.objects.filter(is_superuser=True).first()
|
||
|
|
if not user:
|
||
|
|
user = User.objects.create_superuser(
|
||
|
|
username="auto",
|
||
|
|
email="auto@local.dev",
|
||
|
|
password="auto",
|
||
|
|
)
|
||
|
|
request.user = user
|
||
|
|
except Exception:
|
||
|
|
pass
|
||
|
|
|
||
|
|
return self.get_response(request)
|