mirror of
https://github.com/AudebertAdrien/ft_transcendence.git
synced 2025-12-16 14:07:49 +01:00
65 lines
2.3 KiB
Python
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
|