diff --git a/src/account_manager/urls.py b/src/account_manager/urls.py index 5a76285..d06a6ef 100644 --- a/src/account_manager/urls.py +++ b/src/account_manager/urls.py @@ -3,8 +3,14 @@ from django.urls import path from . import main_views from account_manager.views import user_views from account_manager.views import group_views +from account_manager.views import super_admin_views urlpatterns = [ + # Superadmin + path('lama/admin/list', super_admin_views.user_list, name='django-additional-admin-list'), + path('lama/admin/add//', super_admin_views.add_superuser, name='django-additional-admin-add'), + path('lama/admin/remove//', super_admin_views.remove_superuser, name='django-additional-admin-remove'), + # Realm path('', main_views.realm_list, name='realm-home'), path('realm/add/', main_views.realm_add, name='realm-add'), diff --git a/src/account_manager/views/super_admin_views.py b/src/account_manager/views/super_admin_views.py new file mode 100644 index 0000000..5b0ad4d --- /dev/null +++ b/src/account_manager/views/super_admin_views.py @@ -0,0 +1,41 @@ +from django.contrib.auth.decorators import user_passes_test +from django.contrib.auth.models import User +from django.shortcuts import render, redirect +from django.core.exceptions import ObjectDoesNotExist +import logging + +logger = logging.getLogger(__name__) + + +@user_passes_test(lambda u: u.is_superuser) +def user_list(request): + return render(request, 'admin/list_user.jinja2', {'users': _get_django_users()}) + + +def _get_django_users(): + users = User.objects.all().order_by('username') + return users + + +@user_passes_test(lambda u: u.is_superuser) +def add_superuser(request, user_id): + try: + user = User.objects.get(id=user_id) + user.is_superuser = True + user.save() + return redirect('django-additional-admin-list') + except ObjectDoesNotExist as err: + return render(request, 'admin/list_user.jinja2', + {'users': _get_django_users(), 'extra_errors': 'Nutzer ist uns nicht bekannt'}) + + +@user_passes_test(lambda u: u.is_superuser) +def remove_superuser(request, user_id): + try: + user = User.objects.get(id=user_id) + user.is_superuser = False + user.save() + return redirect('django-additional-admin-list') + except ObjectDoesNotExist as err: + return render(request, 'admin/list_user.jinja2', + {'users': _get_django_users(), 'extra_errors': 'Nutzer ist uns nicht bekannt'}) diff --git a/src/core/docker_settings.py b/src/core/docker_settings.py index d0ec864..bac2a9c 100644 --- a/src/core/docker_settings.py +++ b/src/core/docker_settings.py @@ -213,13 +213,13 @@ LOGGING = { 'handlers': ['console', ], 'level': 'DEBUG', }, - 'django_auth_ldap': { - 'level': 'DEBUG', - 'handlers': ['console'], - }, - 'django': { - 'handlers': ['console'], - 'level': 'DEBUG', - } + # 'django_auth_ldap': { + # 'level': 'WARNING', + # 'handlers': ['console'], + # }, + # 'django': { + # 'handlers': ['console'], + # 'level': 'DEBUG', + # } }, } diff --git a/src/templates/admin/list_user.jinja2 b/src/templates/admin/list_user.jinja2 new file mode 100644 index 0000000..5aeb989 --- /dev/null +++ b/src/templates/admin/list_user.jinja2 @@ -0,0 +1,51 @@ +{% extends 'base_admin.jinja2' %} +{% import 'macros/form_macros.jinja2' as mform %} +{% import 'macros/utils_macros.jinja2' as mutils %} + +{% block admin_content %} +
+
+

Django bekannte Nutzer

+ {{ mutils.get_warning_box(extra_errors) }} +
Um einen Nutzer zum Superadmin zu ernennen, klicke auf das Superadmin Icon +
+
+ + +
+ + + + + + + + + + + + {% for user in users %} + + + + + + + + + {% endfor %} + +
SuperadminNutzernameE-MailVornameNachname
{% if user.is_superuser %} + {% else %} + {% endif %} + + {{ user.username }} + {{ user.email }}{{ user.first_name }}{{ user.last_name }}
+ +
+
+{% endblock %} diff --git a/src/templates/base.jinja2 b/src/templates/base.jinja2 index 6a88eb5..fee57d0 100644 --- a/src/templates/base.jinja2 +++ b/src/templates/base.jinja2 @@ -30,7 +30,6 @@ {% block extra_nav %} {% endblock %} - {# TODO: Icon#} LAMa @@ -50,7 +49,7 @@ {% block content %}{% endblock %} {% endblock %} -{% if not realms and not realm %} +{% if not realms and not realm and not request.user.is_superuser%}