From 7cf99af20de7b449ccbbd27f8abe75c3119c3522 Mon Sep 17 00:00:00 2001 From: A B Date: Mon, 28 Oct 2024 00:06:35 +0000 Subject: [PATCH] Autologin --- mysite/middleware.py | 13 ++++++++----- mysite/settings.py | 13 +------------ vpn/admin.py | 5 +++++ vpn/apps.py | 3 ++- vpn/management/commands/create_admin.py | 17 +++++++++++++++++ 5 files changed, 33 insertions(+), 18 deletions(-) create mode 100644 vpn/management/commands/create_admin.py diff --git a/mysite/middleware.py b/mysite/middleware.py index ce49501..eb765a5 100644 --- a/mysite/middleware.py +++ b/mysite/middleware.py @@ -1,6 +1,5 @@ -from django.urls import resolve -from django.http import Http404, HttpResponseNotFound -from django.contrib.auth.middleware import RemoteUserMiddleware +from django.contrib.auth import authenticate, login +from django.utils.deprecation import MiddlewareMixin class RequestLogger: def __init__(self, get_response): @@ -15,5 +14,9 @@ class RequestLogger: return response -class AutoLoginMiddleware(RemoteUserMiddleware): - header = "HTTP_X_AUTHENTIK_USERNAME" +class AutoLoginMiddleware(MiddlewareMixin): + def process_request(self, request): + if not request.user.is_authenticated: + user = authenticate(username='admin', password='admin') + if user: + login(request, user) diff --git a/mysite/settings.py b/mysite/settings.py index 760dade..7113e92 100644 --- a/mysite/settings.py +++ b/mysite/settings.py @@ -3,6 +3,7 @@ import os import environ from django.core.management.utils import get_random_secret_key + ENV = environ.Env( DEBUG=(bool, False) ) @@ -23,13 +24,6 @@ CELERY_RESULT_EXTENDED = True AUTH_USER_MODEL = "vpn.User" -# CACHES = { -# 'default': { -# 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', -# 'LOCATION': 'cache_table', -# } -# } - DEBUG = ENV('DEBUG') ALLOWED_HOSTS = ENV.list('ALLOWED_HOSTS', default=["*"]) @@ -109,10 +103,6 @@ INSTALLED_APPS = [ 'vpn', ] -AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.RemoteUserBackend", -] - MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', @@ -120,7 +110,6 @@ MIDDLEWARE = [ 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.RemoteUserMiddleware', 'mysite.middleware.AutoLoginMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', diff --git a/vpn/admin.py b/vpn/admin.py index c20fa29..e6672aa 100644 --- a/vpn/admin.py +++ b/vpn/admin.py @@ -19,6 +19,11 @@ from .server_plugins import ( OutlineServerAdmin) +admin.site.site_title = "VPN Manager" +admin.site.site_header = "VPN Manager" +admin.site.index_title = "OutFleet" + + @admin.register(Server) class ServerAdmin(PolymorphicParentModelAdmin): base_model = Server diff --git a/vpn/apps.py b/vpn/apps.py index e3350dd..7a8988a 100644 --- a/vpn/apps.py +++ b/vpn/apps.py @@ -1,6 +1,7 @@ from django.apps import AppConfig - +from django.contrib.auth import get_user_model class VPN(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'vpn' + diff --git a/vpn/management/commands/create_admin.py b/vpn/management/commands/create_admin.py new file mode 100644 index 0000000..7305e80 --- /dev/null +++ b/vpn/management/commands/create_admin.py @@ -0,0 +1,17 @@ +from django.core.management.base import BaseCommand +from django.contrib.auth import get_user_model + +class Command(BaseCommand): + help = 'Create default admin user' + + def handle(self, *args, **kwargs): + User = get_user_model() + if not User.objects.filter(username='admin').exists(): + User.objects.create_superuser( + username='admin', + password='admin', + email='admin@localhost' + ) + self.stdout.write(self.style.SUCCESS('Admin user created')) + else: + self.stdout.write(self.style.WARNING('Admin user already exists'))