From a72e4bf54f4dbaf79d83c31a5e0a93cdb6ff9914 Mon Sep 17 00:00:00 2001 From: trevorleeshelton Date: Mon, 24 Feb 2025 15:46:40 -0800 Subject: [PATCH] Added registration via api call and agent authentication. --- rtt_backend/api/views.py | 45 +++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/rtt_backend/api/views.py b/rtt_backend/api/views.py index 6f134ff..7ad02fa 100644 --- a/rtt_backend/api/views.py +++ b/rtt_backend/api/views.py @@ -1,5 +1,6 @@ -from django.shortcuts import render +from django.contrib.auth.models import User from django import http +import secrets import json def err(sc): @@ -19,16 +20,40 @@ def invoke(request): return err(422) needs = dictIn['Needs'] dictOut = {} - if (needs == 'Schedule'): - dictOut['Sunday'] = '' - dictOut['Monday'] = '' - dictOut['Tuesday'] = '' - dictOut['Wednesday'] = '' - dictOut['Thursday'] = '' - dictOut['Friday'] = '' - dictOut['Saturday'] = '' + if (needs == 'Register'): + lng = -1 + while (lng != 0): + nm = '' + for _ in range(128): + nm += chr(65 + secrets.randbelow(26)) + lng = len(User.objects.filter(username=nm)) + raw = '' + for _ in range(100): + raw += chr(65 + secrets.randbelow(26)) + newClient = User() + newClient.username=nm + newClient.set_password(raw) + newClient.save() + dictOut['User'] = nm + dictOut['Pass'] = raw else: - return err(422) + if 'User' not in dictIn: + return err(401) + inst = User.objects.filter(username=dictIn['User']) + if (len(inst) == 0): + return err(401) + if inst[0].check_password(dictIn['Pass']) != True: + return err(401) + if (needs == 'Schedule'): + dictOut['Sunday'] = '' + dictOut['Monday'] = '' + dictOut['Tuesday'] = '' + dictOut['Wednesday'] = '' + dictOut['Thursday'] = '' + dictOut['Friday'] = '' + dictOut['Saturday'] = '' + else: + return err(422) return http.JsonResponse(dictOut) except json.decoder.JSONDecodeError: return err(406)