Add realm overview
This commit is contained in:
parent
fe3b61a3c1
commit
73a8ff5380
@ -2,4 +2,4 @@ from django.apps import AppConfig
|
|||||||
|
|
||||||
|
|
||||||
class RdnHelperConfig(AppConfig):
|
class RdnHelperConfig(AppConfig):
|
||||||
name = 'rdn_helper'
|
name = 'account_helper'
|
||||||
@ -1,5 +1,5 @@
|
|||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
from rdn_helper.models import LdapGroupRDN, LdapUserRDN
|
from account_helper.models import LdapGroupRDN, LdapUserRDN
|
||||||
|
|
||||||
LDAP_OUS = ['ou=fs_wiai,ou=fachschaften', 'ou=fs_sowi,ou=fachschaften']
|
LDAP_OUS = ['ou=fs_wiai,ou=fachschaften', 'ou=fs_sowi,ou=fachschaften']
|
||||||
|
|
||||||
27
account_helper/models.py
Normal file
27
account_helper/models.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
from django.db import models
|
||||||
|
from django.contrib.auth.models import User, Group
|
||||||
|
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
|
class Realm(models.Model):
|
||||||
|
name = models.CharField(max_length=200, unique=True)
|
||||||
|
email = models.EmailField(blank=True, null=True)
|
||||||
|
admin_group = models.ForeignKey(Group, models.PROTECT, blank=True, null=True)
|
||||||
|
ldap_rdn_org = models.CharField(max_length=400, unique=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f'{self.name} - {self.ldap_rdn_org}'
|
||||||
|
|
||||||
|
|
||||||
|
class LdapUserRDN(models.Model):
|
||||||
|
rdn = models.CharField(max_length=400, unique=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.rdn
|
||||||
|
|
||||||
|
|
||||||
|
class LdapGroupRDN(models.Model):
|
||||||
|
rdn = models.CharField(max_length=400, unique=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.rdn
|
||||||
@ -1,5 +1,6 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from rdn_helper.models import LdapUserRDN, LdapGroupRDN
|
from django.contrib.auth.models import User, Group
|
||||||
|
from account_helper.models import LdapUserRDN, LdapGroupRDN
|
||||||
from .models import LdapUser
|
from .models import LdapUser
|
||||||
|
|
||||||
|
|
||||||
@ -15,3 +16,15 @@ class AddLDAPGroupForm(forms.Form):
|
|||||||
rdn = forms.ModelChoiceField(queryset=LdapGroupRDN.objects.all())
|
rdn = forms.ModelChoiceField(queryset=LdapGroupRDN.objects.all())
|
||||||
name = forms.CharField(label='name', max_length=400)
|
name = forms.CharField(label='name', max_length=400)
|
||||||
members = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=LdapUser.objects.all())
|
members = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=LdapUser.objects.all())
|
||||||
|
|
||||||
|
|
||||||
|
class RealmAddForm(forms.Form):
|
||||||
|
name = forms.CharField(label='name', max_length=200)
|
||||||
|
ldap_rdn_org = forms.CharField(label='ldap_rdn_org', max_length=200)
|
||||||
|
|
||||||
|
|
||||||
|
class RealmUpdateForm(forms.Form):
|
||||||
|
ldap_rdn_org = forms.CharField(label='ldap_rdn_org', max_length=200)
|
||||||
|
name = forms.CharField(label='name', max_length=200)
|
||||||
|
email = forms.EmailField()
|
||||||
|
admins = forms.ModelChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Group.objects.all())
|
||||||
|
|||||||
@ -2,6 +2,8 @@ from django.urls import path
|
|||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
path('realm/', views.realm, name='realm-home'),
|
||||||
|
path('realm/<int:id>/', views.realm_detail, name='realm-detail'),
|
||||||
path('user/list/', views.userlist, name='user-list'),
|
path('user/list/', views.userlist, name='user-list'),
|
||||||
path('user/get/<str:dn>/', views.user_detail, name='user'),
|
path('user/get/<str:dn>/', views.user_detail, name='user'),
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
from django.shortcuts import render, redirect
|
from django.shortcuts import render, redirect
|
||||||
from .models import LdapGroup, LdapUser
|
from .models import LdapGroup, LdapUser
|
||||||
from .forms import AddLDAPUserForm, AddLDAPGroupForm
|
from .forms import AddLDAPUserForm, AddLDAPGroupForm, RealmAddForm, RealmUpdateForm
|
||||||
|
from account_helper.models import Realm
|
||||||
|
|
||||||
|
|
||||||
# @login_required
|
# @login_required
|
||||||
@ -12,18 +13,47 @@ from .forms import AddLDAPUserForm, AddLDAPGroupForm
|
|||||||
# context = {'request': request, 'ldapuser': ldapuserprofile, }
|
# context = {'request': request, 'ldapuser': ldapuserprofile, }
|
||||||
# return render(request, 'myapp/userinfo.html', context)
|
# return render(request, 'myapp/userinfo.html', context)
|
||||||
|
|
||||||
|
def realm(request):
|
||||||
|
realms = Realm.objects.all()
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = RealmAddForm(request.POST)
|
||||||
|
if form.is_valid():
|
||||||
|
name = form.cleaned_data['name']
|
||||||
|
ldap_rdn_org = form.cleaned_data['ldap_rdn_org']
|
||||||
|
realm_obj = Realm.objects.create(name=name, ldap_rdn_org=ldap_rdn_org)
|
||||||
|
realm_obj.save()
|
||||||
|
return redirect('realm-detail', realm_obj.id)
|
||||||
|
else:
|
||||||
|
form = RealmAddForm()
|
||||||
|
return render(request, 'realm/realm_home.jinja', {'realms': realms, 'form': form})
|
||||||
|
|
||||||
|
|
||||||
|
def realm_detail(request, id):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
realm_obj = Realm.objects.get(id=id)
|
||||||
|
data = {'id': realm_obj.id, 'ldap_rdn_org': realm_obj.ldap_rdn_org, 'name': realm_obj.name,
|
||||||
|
'email': realm_obj.email,
|
||||||
|
'admin_group': realm_obj.admin_group}
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = RealmUpdateForm(request.POST)
|
||||||
|
if form.is_valid():
|
||||||
|
name = form.cleaned_data['name']
|
||||||
|
ldap_rdn_org = form.cleaned_data['ldap_rdn_org']
|
||||||
|
realm_obj = Realm.objects.create(name=name, ldap_rdn_org=ldap_rdn_org)
|
||||||
|
realm_obj.save()
|
||||||
|
return redirect('realm-detail', realm_obj.id)
|
||||||
|
else:
|
||||||
|
form = RealmUpdateForm(initial=data)
|
||||||
|
return render(request, 'realm/realm_home.jinja', {'realm': realm_obj, 'form': form})
|
||||||
|
else:
|
||||||
|
realm_obj = Realm.objects.get(id=id)
|
||||||
|
return render(request, 'realm/realm_home.jinja', {'realm': realm_obj})
|
||||||
|
|
||||||
|
|
||||||
def userlist(request):
|
def userlist(request):
|
||||||
user = LdapUser.objects.all()
|
user = LdapUser.objects.all()
|
||||||
groups = LdapGroup.objects.all()
|
groups = LdapGroup.objects.all()
|
||||||
context = {'users': user, 'groups': groups}
|
context = {'users': user, 'groups': groups}
|
||||||
# ldap_user = LdapUser.objects.get(username='fred')
|
|
||||||
# ldap_user = LdapUser.objects.create(rdn='ou=people,ou=fs_wiai,ou=fachschaften', username='b3',
|
|
||||||
# password='lappen1', first_name='ferdinand1',
|
|
||||||
# last_name='red1', )
|
|
||||||
# new_group = LdapGroup.objects.create(rdn='ou=groups,ou=fs_wiai,ou=fachschaften', name="funny_wiai12",
|
|
||||||
# members=['dc=stuve,dc=de'])
|
|
||||||
# new_group.save()
|
|
||||||
|
|
||||||
return render(request, 'user_list.jinja', context)
|
return render(request, 'user_list.jinja', context)
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,8 @@ DEBUG = True
|
|||||||
ALLOWED_HOSTS = []
|
ALLOWED_HOSTS = []
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
|
LOGIN_URL = 'login'
|
||||||
|
LOGIN_REDIRECT_URL = 'realm-home'
|
||||||
|
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
'django.contrib.admin',
|
'django.contrib.admin',
|
||||||
@ -38,7 +40,7 @@ INSTALLED_APPS = [
|
|||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
'account_manager',
|
'account_manager',
|
||||||
'rdn_helper',
|
'account_helper',
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
|||||||
@ -15,8 +15,11 @@ Including another URLconf
|
|||||||
"""
|
"""
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
|
from django.contrib.auth import views as auth_views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', include('account_manager.urls')),
|
path('', include('account_manager.urls')),
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
|
path('login/', auth_views.LoginView.as_view(), name='login'),
|
||||||
|
path('logout/', auth_views.LogoutView.as_view(), {'next_page': '/'}, name='logout'),
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
class LdapUserRDN(models.Model):
|
|
||||||
rdn = models.CharField(max_length=400, unique=True)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.rdn
|
|
||||||
|
|
||||||
|
|
||||||
class LdapGroupRDN(models.Model):
|
|
||||||
rdn = models.CharField(max_length=400, unique=True)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.rdn
|
|
||||||
15
templates/realm/realm_detailed.jinja
Normal file
15
templates/realm/realm_detailed.jinja
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{% extends 'base.jinja' %}
|
||||||
|
{% block content %}
|
||||||
|
<a href="{{ url('user-add') }}">Nutzer anlegen</a> | <a href="{{ url('group-add') }}">Gruppe anlegen</a>
|
||||||
|
|
||||||
|
<h2>Neuen Bereich anlegen</h2>
|
||||||
|
<form method="post">
|
||||||
|
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
|
||||||
|
{{ form.as_p()|safe }}
|
||||||
|
<button type="submit">Login</button>
|
||||||
|
</form>
|
||||||
|
<h2>Realms</h2>
|
||||||
|
{% for realm in realms %}
|
||||||
|
<p>{{ realm.name }}</p>
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
15
templates/realm/realm_home.jinja
Normal file
15
templates/realm/realm_home.jinja
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{% extends 'base.jinja' %}
|
||||||
|
{% block content %}
|
||||||
|
<a href="{{ url('user-add') }}">Nutzer anlegen</a> | <a href="{{ url('group-add') }}">Gruppe anlegen</a>
|
||||||
|
|
||||||
|
<h2>Neuen Bereich anlegen</h2>
|
||||||
|
<form method="post">
|
||||||
|
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
|
||||||
|
{{ form.as_p()|safe }}
|
||||||
|
<button type="submit">Login</button>
|
||||||
|
</form>
|
||||||
|
<h2>Realms</h2>
|
||||||
|
{% for realm in realms %}
|
||||||
|
<p>{{ realm.name }}</p>
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
18
templates/registration/login.html
Normal file
18
templates/registration/login.html
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{% extends 'base.jinja' %}
|
||||||
|
|
||||||
|
{% block title %}Login{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col-12 ">
|
||||||
|
<div class="row justify-content-center justify-content-sm-center">
|
||||||
|
<div class="col-12 col-sm-6 col-md-5 col-lg-4 col-xl-3 bg-white text-dark text-center p-3 mt-5">
|
||||||
|
<h2>Login</h2>
|
||||||
|
<form method="post">
|
||||||
|
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
|
||||||
|
{{ form.as_p()|safe }}
|
||||||
|
<button type="submit">Login</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
Reference in New Issue
Block a user