From d499b781d4d349561068d7af7ef07fd62cd6d8ef Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sat, 15 Apr 2023 11:48:53 +0200 Subject: [PATCH] Implement impersonation --- gnuviechadmin/gnuviechadmin/settings.py | 70 ++++++++++--------- gnuviechadmin/gnuviechadmin/urls.py | 3 +- gnuviechadmin/templates/base.html | 9 ++- .../templates/impersonate/list_users.html | 31 ++++++++ .../templates/impersonate/search_users.html | 45 ++++++++++++ poetry.lock | 13 +++- pyproject.toml | 1 + 7 files changed, 135 insertions(+), 37 deletions(-) create mode 100644 gnuviechadmin/templates/impersonate/list_users.html create mode 100644 gnuviechadmin/templates/impersonate/search_users.html diff --git a/gnuviechadmin/gnuviechadmin/settings.py b/gnuviechadmin/gnuviechadmin/settings.py index b1a6d1c..243b6e8 100644 --- a/gnuviechadmin/gnuviechadmin/settings.py +++ b/gnuviechadmin/gnuviechadmin/settings.py @@ -86,7 +86,6 @@ USE_TZ = True LOCALE_PATHS = (normpath(join(SITE_ROOT, "gnuviechadmin", "locale")),) - # ######### MEDIA CONFIGURATION # See: https://docs.djangoproject.com/en/dev/ref/settings/#media-root MEDIA_ROOT = normpath(join(SITE_ROOT, "media")) @@ -180,7 +179,6 @@ AUTHENTICATION_BACKENDS = ( "allauth.account.auth_backends.AuthenticationBackend", ) - # ######### URL CONFIGURATION # See: https://docs.djangoproject.com/en/dev/ref/settings/#root-urlconf ROOT_URLCONF = "%s.urls" % SITE_NAME @@ -208,6 +206,7 @@ DJANGO_APPS = ( # Flatpages for about page "django.contrib.flatpages", "crispy_forms", + "impersonate", ) ALLAUTH_APPS = ( @@ -277,7 +276,7 @@ LOGGING = { "formatters": { "verbose": { "format": "%(levelname)s %(asctime)s %(name)s " - "%(module)s:%(lineno)d %(process)d %(thread)d %(message)s" + "%(module)s:%(lineno)d %(process)d %(thread)d %(message)s" }, "simple": {"format": "%(levelname)s %(name)s:%(lineno)d %(message)s"}, }, @@ -366,7 +365,10 @@ def show_debug_toolbar(request): # See: http://django-debug-toolbar.readthedocs.org/en/latest/installation.html#explicit-setup # noqa INSTALLED_APPS += ("debug_toolbar",) -MIDDLEWARE += ["debug_toolbar.middleware.DebugToolbarMiddleware"] +MIDDLEWARE += [ + "impersonate.middleware.ImpersonateMiddleware", + "debug_toolbar.middleware.DebugToolbarMiddleware", +] DEBUG_TOOLBAR_CONFIG = { "SHOW_TOOLBAR_CALLBACK": "gnuviechadmin.settings.show_debug_toolbar" @@ -403,21 +405,21 @@ if GVA_ENVIRONMENT == "local": [ (key, {"handlers": ["console"], "level": "DEBUG", "propagate": True}) for key in [ - "dashboard", - "domains", - "fileservertasks", - "gvacommon", - "gvawebcore", - "hostingpackages", - "ldaptasks", - "managemails", - "mysqltasks", - "osusers", - "pgsqltasks", - "taskresults", - "userdbs", - "websites", - ] + "dashboard", + "domains", + "fileservertasks", + "gvacommon", + "gvawebcore", + "hostingpackages", + "ldaptasks", + "managemails", + "mysqltasks", + "osusers", + "pgsqltasks", + "taskresults", + "userdbs", + "websites", + ] ] ) ) @@ -438,21 +440,21 @@ elif GVA_ENVIRONMENT == "test": [ (key, {"handlers": ["console"], "level": "ERROR", "propagate": True}) for key in [ - "dashboard", - "domains", - "fileservertasks", - "gvacommon", - "gvawebcore", - "hostingpackages", - "ldaptasks", - "managemails", - "mysqltasks", - "osusers", - "pgsqltasks", - "taskresults", - "userdbs", - "websites", - ] + "dashboard", + "domains", + "fileservertasks", + "gvacommon", + "gvawebcore", + "hostingpackages", + "ldaptasks", + "managemails", + "mysqltasks", + "osusers", + "pgsqltasks", + "taskresults", + "userdbs", + "websites", + ] ] ) ) diff --git a/gnuviechadmin/gnuviechadmin/urls.py b/gnuviechadmin/gnuviechadmin/urls.py index 8be802e..8bcfca5 100644 --- a/gnuviechadmin/gnuviechadmin/urls.py +++ b/gnuviechadmin/gnuviechadmin/urls.py @@ -11,6 +11,8 @@ admin.autodiscover() urlpatterns = [ re_path(r"", include("dashboard.urls")), + re_path(r"^admin/", admin.site.urls), + re_path(r"^impersonate/", include("impersonate.urls")), re_path(r"^accounts/", include("allauth.urls")), re_path(r"^database/", include("userdbs.urls")), re_path(r"^domains/", include("domains.urls")), @@ -18,7 +20,6 @@ urlpatterns = [ re_path(r"^website/", include("websites.urls")), re_path(r"^mail/", include("managemails.urls")), re_path(r"^osuser/", include("osusers.urls")), - re_path(r"^admin/", admin.site.urls), re_path(r"^contact/", include("contact_form.urls")), re_path(r"^impressum/$", views.flatpage, {"url": "/impressum/"}, name="imprint"), ] diff --git a/gnuviechadmin/templates/base.html b/gnuviechadmin/templates/base.html index 8040f63..de0c35b 100644 --- a/gnuviechadmin/templates/base.html +++ b/gnuviechadmin/templates/base.html @@ -71,6 +71,7 @@