mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2026-01-31 11:36:18 +00:00
split create/manage peer in different views
This commit is contained in:
@@ -143,22 +143,16 @@ def view_wireguard_peer_sort(request):
|
||||
return redirect(redirect_url)
|
||||
|
||||
|
||||
@login_required
|
||||
def view_wireguard_peer_manage(request):
|
||||
if request.method == 'POST':
|
||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=30).exists():
|
||||
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
||||
else:
|
||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=20).exists():
|
||||
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
||||
def view_wireguard_peer_create(request):
|
||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=30).exists():
|
||||
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
||||
user_acl = get_object_or_404(UserAcl, user=request.user)
|
||||
|
||||
if request.GET.get('instance'):
|
||||
current_instance = get_object_or_404(WireGuardInstance, uuid=request.GET.get('instance'))
|
||||
if not user_has_access_to_instance(user_acl, current_instance):
|
||||
raise Http404
|
||||
current_peer = None
|
||||
page_title = _('Create a new Peer for instance wg') + str(current_instance.instance_id)
|
||||
|
||||
new_peer_data = generate_peer_default(current_instance)
|
||||
|
||||
if new_peer_data['allowed_ip']:
|
||||
@@ -184,41 +178,49 @@ def view_wireguard_peer_manage(request):
|
||||
else:
|
||||
messages.warning(request, _('Error creating peer|No available IP address found for peer creation.'))
|
||||
return redirect('/peer/list/')
|
||||
|
||||
elif request.GET.get('peer'):
|
||||
current_peer = get_object_or_404(Peer, uuid=request.GET.get('peer'))
|
||||
if not user_has_access_to_peer(user_acl, current_peer):
|
||||
raise Http404
|
||||
current_instance = current_peer.wireguard_instance
|
||||
if request.GET.get('action') == 'delete':
|
||||
if request.GET.get('confirmation') == 'delete':
|
||||
current_peer.wireguard_instance.pending_changes = True
|
||||
current_peer.wireguard_instance.save()
|
||||
current_peer.delete()
|
||||
messages.success(request, _('Peer deleted|Peer deleted successfully.'))
|
||||
return redirect('/peer/list/?uuid=' + str(current_instance.uuid))
|
||||
else:
|
||||
messages.warning(request, _('Error deleting peer|Invalid confirmation message. Type "delete" to confirm.'))
|
||||
return redirect('/peer/manage/?peer=' + str(current_peer.uuid))
|
||||
page_title = _('Update Peer: ')
|
||||
peer_ip_list = current_peer.peerallowedip_set.filter(config_file='server').order_by('priority')
|
||||
peer_client_ip_list = current_peer.peerallowedip_set.filter(config_file='client').order_by('priority')
|
||||
if current_peer.name:
|
||||
page_title += current_peer.name
|
||||
else:
|
||||
page_title += current_peer.public_key[:16] + ("..." if len(current_peer.public_key) > 16 else "")
|
||||
if request.method == 'POST':
|
||||
form = PeerForm(request.POST, instance=current_peer)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
messages.success(request, _('Peer updated|Peer updated successfully.'))
|
||||
current_peer.wireguard_instance.pending_changes = True
|
||||
current_peer.wireguard_instance.save()
|
||||
return redirect('/peer/list/?uuid=' + str(current_peer.wireguard_instance.uuid))
|
||||
else:
|
||||
form = PeerForm(instance=current_peer)
|
||||
else:
|
||||
return redirect('/peer/list/')
|
||||
|
||||
|
||||
@login_required
|
||||
def view_wireguard_peer_manage(request):
|
||||
if request.method == 'POST':
|
||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=30).exists():
|
||||
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
||||
else:
|
||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=20).exists():
|
||||
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
||||
user_acl = get_object_or_404(UserAcl, user=request.user)
|
||||
|
||||
current_peer = get_object_or_404(Peer, uuid=request.GET.get('peer'))
|
||||
if not user_has_access_to_peer(user_acl, current_peer):
|
||||
raise Http404
|
||||
current_instance = current_peer.wireguard_instance
|
||||
if request.GET.get('action') == 'delete':
|
||||
if request.GET.get('confirmation') == 'delete':
|
||||
current_peer.wireguard_instance.pending_changes = True
|
||||
current_peer.wireguard_instance.save()
|
||||
current_peer.delete()
|
||||
messages.success(request, _('Peer deleted|Peer deleted successfully.'))
|
||||
return redirect('/peer/list/?uuid=' + str(current_instance.uuid))
|
||||
else:
|
||||
messages.warning(request, _('Error deleting peer|Invalid confirmation message. Type "delete" to confirm.'))
|
||||
return redirect('/peer/manage/?peer=' + str(current_peer.uuid))
|
||||
page_title = _('Update Peer: ') + str(current_peer)
|
||||
peer_ip_list = current_peer.peerallowedip_set.filter(config_file='server').order_by('priority')
|
||||
peer_client_ip_list = current_peer.peerallowedip_set.filter(config_file='client').order_by('priority')
|
||||
|
||||
if request.method == 'POST':
|
||||
form = PeerForm(request.POST, instance=current_peer)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
messages.success(request, _('Peer updated|Peer updated successfully.'))
|
||||
current_peer.wireguard_instance.pending_changes = True
|
||||
current_peer.wireguard_instance.save()
|
||||
return redirect('/peer/list/?uuid=' + str(current_peer.wireguard_instance.uuid))
|
||||
else:
|
||||
form = PeerForm(instance=current_peer)
|
||||
|
||||
context = {
|
||||
'page_title': page_title, 'current_instance': current_instance, 'current_peer': current_peer, 'form': form,
|
||||
'peer_ip_list': peer_ip_list, 'peer_client_ip_list': peer_client_ip_list
|
||||
|
||||
Reference in New Issue
Block a user