mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2025-04-19 00:45:16 +00:00
peer invite api fix
This commit is contained in:
parent
1e1e30f425
commit
ae36edd67d
26
api/views.py
26
api/views.py
@ -285,13 +285,17 @@ def cron_check_updates(request):
|
||||
return JsonResponse({'update_available': webadmin_settings.update_available})
|
||||
|
||||
|
||||
|
||||
@login_required
|
||||
def api_peer_invite(request):
|
||||
user_acl = get_object_or_404(UserAcl, user=request.user)
|
||||
data = {'status': '', 'message': '', 'invite_data': {}}
|
||||
peer_invite = PeerInvite.objects.none()
|
||||
invite_settings = InviteSettings.objects.filter(name='default_settings').first()
|
||||
data = {
|
||||
'status': '', 'message': '', 'invite_data': {},
|
||||
'whatsapp_enabled': invite_settings.invite_whatsapp_enabled,
|
||||
'email_enabled': invite_settings.invite_email_enabled,
|
||||
}
|
||||
peer_invite = PeerInvite.objects.none()
|
||||
|
||||
if not invite_settings:
|
||||
data['status'] = 'error'
|
||||
data['message'] = 'Default settings not found'
|
||||
@ -308,7 +312,10 @@ def api_peer_invite(request):
|
||||
data['status'] = 'error'
|
||||
data['message'] = 'Permission denied'
|
||||
return JsonResponse(data, status=403)
|
||||
peer_invite = create_peer_invite(peer, invite_settings)
|
||||
peer_invite = PeerInvite.objects.filter(peer=peer).first()
|
||||
if not peer_invite:
|
||||
peer_invite = create_peer_invite(peer, invite_settings)
|
||||
|
||||
elif request.GET.get('invite'):
|
||||
peer_invite = get_object_or_404(PeerInvite, uuid=request.GET.get('invite'))
|
||||
if request.GET.get('action') == 'refresh':
|
||||
@ -323,6 +330,15 @@ def api_peer_invite(request):
|
||||
if peer_invite:
|
||||
data['status'] = 'success'
|
||||
data['message'] = ''
|
||||
data['invite_data'] = get_peer_invite_data(peer_invite)
|
||||
data['invite_data'] = get_peer_invite_data(peer_invite, invite_settings)
|
||||
|
||||
if request.GET.get('action') == 'email':
|
||||
data['status'] = 'success'
|
||||
data['message'] = 'Email sent'
|
||||
return JsonResponse(data)
|
||||
else:
|
||||
if request.GET.get('action') == 'email':
|
||||
data['status'] = 'error'
|
||||
data['message'] = 'Invite not found'
|
||||
return JsonResponse(data)
|
||||
return JsonResponse(data, status=200)
|
@ -147,21 +147,22 @@ def get_peer_invite_data(peer_invite: PeerInvite, invite_settings: InviteSetting
|
||||
'url': f'{invite_settings.invite_url}?token{peer_invite.uuid}&',
|
||||
'password': peer_invite.invite_password,
|
||||
'expiration': peer_invite.invite_expiration.isoformat(),
|
||||
'email_subject': replace_message_variables(invite_settings.invite_email_subject),
|
||||
'email_body': replace_message_variables(invite_settings.invite_email_body),
|
||||
'whatsapp_body': replace_message_variables(invite_settings.invite_whatsapp_body),
|
||||
'text_body': replace_message_variables(invite_settings.invite_text_body),
|
||||
'email_subject': replace_message_variables(invite_settings.invite_email_subject, peer_invite, invite_settings),
|
||||
'email_body': replace_message_variables(invite_settings.invite_email_body, peer_invite, invite_settings),
|
||||
'whatsapp_body': replace_message_variables(invite_settings.invite_whatsapp_body, peer_invite, invite_settings),
|
||||
'text_body': replace_message_variables(invite_settings.invite_text_body, peer_invite, invite_settings),
|
||||
'uuid': str(peer_invite.uuid),
|
||||
}
|
||||
return data
|
||||
|
||||
|
||||
def create_peer_invite(peer, invite_settings):
|
||||
if invite_settings.enable_random_password or not invite_settings.default_password:
|
||||
def create_peer_invite(peer: Peer, invite_settings: InviteSettings):
|
||||
if invite_settings.enforce_random_password or not invite_settings.default_password:
|
||||
password = create_random_password(invite_settings.random_password_length, invite_settings.random_password_complexity)
|
||||
else:
|
||||
password = invite_settings.default_password
|
||||
|
||||
peer_invite = PeerInvite.objects.create(
|
||||
peer=peer, password=password[32], invite_expiration=timezone.now() + timedelta(minutes=invite_settings.invite_expiration_minutes)
|
||||
peer=peer, invite_password=password[:32], invite_expiration=timezone.now() + timedelta(minutes=invite_settings.invite_expiration)
|
||||
)
|
||||
return peer_invite
|
||||
|
@ -23,7 +23,7 @@ from console.views import view_console
|
||||
from user_manager.views import view_user_list, view_manage_user, view_peer_group_list, view_peer_group_manage
|
||||
from accounts.views import view_create_first_user, view_login, view_logout
|
||||
from wireguard_tools.views import export_wireguard_configs, download_config_or_qrcode, restart_wireguard_interfaces
|
||||
from api.views import wireguard_status, cron_check_updates, cron_update_peer_latest_handshake, routerfleet_get_user_token, routerfleet_authenticate_session, peer_info
|
||||
from api.views import wireguard_status, cron_check_updates, cron_update_peer_latest_handshake, routerfleet_get_user_token, routerfleet_authenticate_session, peer_info, api_peer_invite
|
||||
from firewall.views import view_redirect_rule_list, manage_redirect_rule, view_firewall_rule_list, manage_firewall_rule, view_manage_firewall_settings, view_generate_iptables_script, view_reset_firewall, view_firewall_migration_required
|
||||
from dns.views import view_static_host_list, view_manage_static_host, view_manage_dns_settings, view_apply_dns_config
|
||||
from wgrrd.views import view_rrd_graph
|
||||
@ -58,6 +58,7 @@ urlpatterns = [
|
||||
path('api/routerfleet_get_user_token/', routerfleet_get_user_token, name='routerfleet_get_user_token'),
|
||||
path('api/wireguard_status/', wireguard_status, name='api_wireguard_status'),
|
||||
path('api/peer_info/', peer_info, name='api_peer_info'),
|
||||
path('api/peer_invite/', api_peer_invite, name='api_peer_invite'),
|
||||
path('api/cron_check_updates/', cron_check_updates, name='cron_check_updates'),
|
||||
path('api/cron_update_peer_latest_handshake/', cron_update_peer_latest_handshake, name='cron_update_peer_latest_handshake'),
|
||||
path('firewall/port_forward/', view_redirect_rule_list, name='redirect_rule_list'),
|
||||
|
Loading…
x
Reference in New Issue
Block a user