Implement super admin pagei, Close #66
This commit is contained in:
parent
0f52c4bfab
commit
dc8cd6e3e1
@ -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/<int:user_id>/', super_admin_views.add_superuser, name='django-additional-admin-add'),
|
||||
path('lama/admin/remove/<int:user_id>/', 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'),
|
||||
|
||||
41
src/account_manager/views/super_admin_views.py
Normal file
41
src/account_manager/views/super_admin_views.py
Normal file
@ -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'})
|
||||
@ -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',
|
||||
# }
|
||||
},
|
||||
}
|
||||
|
||||
51
src/templates/admin/list_user.jinja2
Normal file
51
src/templates/admin/list_user.jinja2
Normal file
@ -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 %}
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h2>Django bekannte Nutzer</h2>
|
||||
{{ mutils.get_warning_box(extra_errors) }}
|
||||
<div class="alert alert-info">Um einen Nutzer zum Superadmin zu ernennen, klicke auf das Superadmin Icon
|
||||
</div>
|
||||
<div class="table-search-field form-group w-25 float-right">
|
||||
<input type="text"
|
||||
class="form-control"
|
||||
id="data-table-search-input">
|
||||
<label for="data-table-search-input">Suche</label>
|
||||
</div>
|
||||
<table class="table table-hover table-striped table-inverse table-bordered data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Superadmin</th>
|
||||
<th scope="col">Nutzername</th>
|
||||
<th scope="col">E-Mail</th>
|
||||
<th scope="col">Vorname</th>
|
||||
<th scope="col">Nachname</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td class="text-center">{% if user.is_superuser %}
|
||||
<a href="{{ url('django-additional-admin-remove', args=[user.id]) }}"><i
|
||||
class="fas fa-check-circle text-success"></i></a>{% else %}
|
||||
<a href="{{ url('django-additional-admin-add', args=[user.id]) }}"><i
|
||||
class="far fa-times-circle text-warning"></i></a>{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ user.username }}
|
||||
</td>
|
||||
<td><a href="mailto:{{ user.email }}">{{ user.email }}</a></td>
|
||||
<td>{{ user.first_name }}</td>
|
||||
<td>{{ user.last_name }}</td>
|
||||
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@ -30,7 +30,6 @@
|
||||
{% block extra_nav %}
|
||||
{% endblock %}
|
||||
<a class="navbar-brand" href="{{ url('realm-home') }}">
|
||||
{# TODO: Icon#}
|
||||
<img src="{{ static('images/lama.svg') }}" width="30" height="30" class="d-inline-block align-top"
|
||||
alt="">
|
||||
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%}
|
||||
|
||||
<footer class="bg-light footer mt-auto py-3 text-center">
|
||||
<div class="container">
|
||||
|
||||
@ -3,6 +3,13 @@
|
||||
{% block body %}
|
||||
<div class="d-flex wrapper">
|
||||
<div class="bg-light border-right sidebar-wrapper">
|
||||
<div class="border-top w-100"></div>
|
||||
{% if request.user.is_superuser %}
|
||||
<div class="list-group list-group-flush">
|
||||
<a class="list-group-item list-group-item-action bg-light"
|
||||
href="{{ url('django-additional-admin-list') }}">Django Adminbereich</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if realms %}
|
||||
<h2 class="sidebar-heading">Bereiche</h2>
|
||||
<div class="list-group list-group-flush">
|
||||
@ -12,7 +19,7 @@
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="list-group-flush border-top">
|
||||
<div class="list-group-flush">
|
||||
<a href="{{ url('realm-home') }}" class="list-group-item list-group-item-action bg-light">
|
||||
<i class="fas fa-list"></i> Bereichsübersicht</a>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user