Trying remote-auth

This commit is contained in:
A B
2024-10-27 23:37:02 +00:00
parent 7585fb94a1
commit b6ad6e8578
2 changed files with 9 additions and 36 deletions

View File

@ -1,5 +1,6 @@
from django.urls import resolve from django.urls import resolve
from django.http import Http404, HttpResponseNotFound from django.http import Http404, HttpResponseNotFound
from django.contrib.auth.middleware import RemoteUserMiddleware
class RequestLogger: class RequestLogger:
def __init__(self, get_response): def __init__(self, get_response):
@ -14,37 +15,5 @@ class RequestLogger:
return response return response
from django.contrib.auth import get_user_model class AutoLoginMiddleware(RemoteUserMiddleware):
from django.contrib.auth import login header = "HTTP_X_AUTHENTIK_USERNAME"
from django.contrib.auth.models import Group
class AutoLoginMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if not request.user.is_authenticated:
user_email = request.META.get('HTTP_X_AUTHENTIK_EMAIL')
user_name = request.META.get('HTTP_X_AUTHENTIK_USERNAME')
user_groups = request.META.get('HTTP_X_AUTHENTIK_GROUPS')
if user_email and user_name:
User = get_user_model()
try:
user = User.objects.get(email=user_email)
except User.DoesNotExist:
user = User.objects.create_user(
username=user_name,
email=user_email
)
if user_groups:
groups_list = user_groups.split(',')
for group_name in groups_list:
group, created = Group.objects.get_or_create(name=group_name.strip())
user.groups.add(group)
login(request, user)
response = self.get_response(request)
return response

View File

@ -109,7 +109,9 @@ INSTALLED_APPS = [
'vpn', 'vpn',
] ]
AUTHENTICATION_BACKENDS = [
"django.contrib.auth.backends.RemoteUserBackend",
]
MIDDLEWARE = [ MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',
@ -118,10 +120,12 @@ MIDDLEWARE = [
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware',
'mysite.middleware.AutoLoginMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware', 'corsheaders.middleware.CorsMiddleware',
#'mysite.middleware.AutoLoginMiddleware',
] ]
ROOT_URLCONF = 'mysite.urls' ROOT_URLCONF = 'mysite.urls'