2024-07-22 17:21:58 +02:00

65 lines
2.3 KiB
Python

# /pong/game/views.py
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
from django.http import JsonResponse
from django.contrib.auth.models import User
from django.contrib.auth import authenticate
from django.views.decorators.csrf import csrf_exempt
import json
import uuid
@csrf_exempt
def register_user(request):
if request.method == 'POST':
data = json.loads(request.body)
username = data.get('username')
password = data.get('password')
if not User.objects.filter(username=username).exists():
user = User.objects.create_user(username=username, password=password)
token = get_or_create_token(user)
return JsonResponse({'registered': True, 'token': token})
return JsonResponse({'registered': False, 'error': 'User already exists'})
return JsonResponse({'error': 'Invalid request method'}, status=400)
@csrf_exempt
def check_user_exists(request):
if request.method == 'POST':
data = json.loads(request.body)
username = data.get('username')
if User.objects.filter(username=username).exists():
return JsonResponse({'exists': True})
return JsonResponse({'exists': False})
return JsonResponse({'error': 'Invalid request method'}, status=400)
@csrf_exempt
def authenticate_user(request):
if request.method == 'POST':
try:
data = json.loads(request.body)
username = data.get('username', '')
password = data.get('password', '')
user = authenticate(username=username, password=password)
if user is not None:
token = get_or_create_token(user)
return JsonResponse({'authenticated': True, 'token': token, 'user_id': user.id})
else:
return JsonResponse({'authenticated': False}, status=401)
except Exception as e:
return JsonResponse({'error': str(e)}, status=500)
else:
return JsonResponse({'error': 'Method not allowed'}, status=405)
def get_or_create_token(user):
if not user.auth_token:
while True:
token = str(uuid.uuid4())
if not User.objects.filter(auth_token=token).exists():
user.auth_token = token
user.save()
break
return user.auth_token