diff --git a/templates/user_manager/manage_peer_group.html b/templates/user_manager/manage_peer_group.html deleted file mode 100644 index 6cdd3de..0000000 --- a/templates/user_manager/manage_peer_group.html +++ /dev/null @@ -1,77 +0,0 @@ -{% extends "base.html" %} - -{% block content %} -
-
-
-

{{ form.instance.pk|yesno:"Edit Peer Group,Create New Peer Group" }}

-
-
-
-
-
- {% csrf_token %} - - -
- - -
- - -
- - -
- - -
- - -
- -
- - Back - {% if peer_group %}Delete Peer Group{% endif %} -
-
-
- - -
- -
Peers
-

Select which peers can be managed by users with this peer group.

- -
WireGuard Instances
-

All peers in this WireGuard instance can be managed by users with this peer group, including adding or removing peers.

- -
- -
-
-
-
-{% endblock %} - -{% block custom_page_scripts %} - -{% endblock %} \ No newline at end of file diff --git a/templates/user_manager/peer_group_list.html b/templates/user_manager/peer_group_list.html index 47e250e..fa1eae0 100644 --- a/templates/user_manager/peer_group_list.html +++ b/templates/user_manager/peer_group_list.html @@ -7,6 +7,7 @@ Name Peers Server Instance + Users @@ -16,12 +17,17 @@ {{ peer_group.name }} {% for peer in peer_group.peer.all %} - {{ peer }}{% if not forloop.last %}, {% endif %} + {{ peer }}{% if not forloop.last %}, {% endif %} {% endfor %} {% for instance in peer_group.server_instance.all %} - {{ instance }}{% if not forloop.last %}, {% endif %} + {{ instance }}{% if not forloop.last %}, {% endif %} + {% endfor %} + + + {% for user_acl in peer_group.useracl_set.all %} + {{ user_acl.user.username }}{% if not forloop.last %}, {% endif %} {% endfor %} diff --git a/user_manager/forms.py b/user_manager/forms.py index 8d4c448..449d0e9 100644 --- a/user_manager/forms.py +++ b/user_manager/forms.py @@ -4,6 +4,8 @@ from django.contrib.auth.models import User from .models import UserAcl from django.core.exceptions import ValidationError from wireguard.models import PeerGroup +from crispy_forms.helper import FormHelper +from crispy_forms.layout import Layout, Row, Column, Submit, HTML class UserAclForm(UserCreationForm): @@ -56,8 +58,37 @@ class PeerGroupForm(forms.ModelForm): def __init__(self, *args, **kwargs): self.user_id = kwargs.pop('user_id', None) super().__init__(*args, **kwargs) + self.helper = FormHelper() + self.helper.form_method = 'post' - + if self.instance.pk: + delete_html = "Delete" + else: + delete_html = '' + + self.helper.layout = Layout( + Row( + Column('name', css_class='form-group col-md-12 mb-0'), + css_class='form-row' + ), + Row( + Column('peer', css_class='form-group col-md-12 mb-0'), + css_class='form-row' + ), + Row( + Column('server_instance', css_class='form-group col-md-12 mb-0'), + css_class='form-row' + ), + Row( + Column( + Submit('submit', 'Save', css_class='btn btn-success'), + HTML(' Back '), + HTML(delete_html), + css_class='col-md-12'), + css_class='form-row' + ) + ) + def clean(self): cleaned_data = super().clean() name = cleaned_data.get('name') @@ -68,6 +99,7 @@ class PeerGroupForm(forms.ModelForm): raise ValidationError("A peer group with that name already exists.") return cleaned_data + def save(self, commit=True): peer_group = super().save(commit=False) diff --git a/user_manager/views.py b/user_manager/views.py index 6e1361d..2fffd43 100644 --- a/user_manager/views.py +++ b/user_manager/views.py @@ -30,11 +30,12 @@ def view_peer_group_manage(request): page_title = 'Edit Peer Group ' + peer_group.name if request.GET.get('action') == 'delete': group_name = peer_group.name - if request.GET.get('confirmation') == group_name: + if request.GET.get('confirmation') == 'delete': peer_group.delete() messages.success(request, 'Peer Group deleted|The peer group ' + group_name + ' has been deleted.') return redirect('/user/peer-group/list/') - + else: + messages.warning(request, 'Peer Group not deleted|Invalid confirmation.') return redirect('/user/peer-group/list/') else: form = PeerGroupForm(user_id=request.user.id) @@ -50,8 +51,19 @@ def view_peer_group_manage(request): peer_group = form.save() form.save_m2m() return redirect('/user/peer-group/list/') - context = {'page_title': page_title, 'form': form, 'peer_group': peer_group} - return render(request, 'user_manager/manage_peer_group.html', context) + + form_description = { + 'size': '', + 'content': ''' +
Peers
+

Select which peers can be managed by users with this peer group.

+ +
WireGuard Instances
+

All peers in this WireGuard instance can be managed by users with this peer group, including adding or removing peers.

+ ''' + } + context = {'page_title': page_title, 'form': form, 'peer_group': peer_group, 'instance': peer_group, 'form_description': form_description} + return render(request, 'generic_form.html', context) @login_required diff --git a/wireguard/models.py b/wireguard/models.py index c83cd51..37d8493 100644 --- a/wireguard/models.py +++ b/wireguard/models.py @@ -131,3 +131,6 @@ class PeerGroup(models.Model): updated = models.DateTimeField(auto_now=True) uuid = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4) + def __str__(self): + return self.name + diff --git a/wireguard_webadmin/urls.py b/wireguard_webadmin/urls.py index 4b3662c..979e6c2 100644 --- a/wireguard_webadmin/urls.py +++ b/wireguard_webadmin/urls.py @@ -28,7 +28,7 @@ from dns.views import view_static_host_list, view_manage_static_host, view_manag urlpatterns = [ - # path('admin/', admin.site.urls), + path('admin/', admin.site.urls), path('', view_welcome, name='welcome'), path('status/', view_wireguard_status, name='wireguard_status'), path('dns/', view_static_host_list, name='static_host_list'),