From 9e030c6431619632dcb85a2868e9075b4d5a459f Mon Sep 17 00:00:00 2001 From: Martin Quarda Date: Wed, 9 Oct 2024 14:45:29 +0200 Subject: [PATCH] better error handling in login fn --- alkator/urls.py | 4 ++-- alkatorapi/views.py | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/alkator/urls.py b/alkator/urls.py index 44f5319..b8bd433 100644 --- a/alkator/urls.py +++ b/alkator/urls.py @@ -17,7 +17,7 @@ Including another URLconf from django.contrib import admin from django.urls import path from alkatorapi.views import ( - register_racer, register_racer, + register_user, register_racer, login, logout, results, photos, payment_result, payment_state, @@ -27,7 +27,7 @@ from alkatorapi.views import ( urlpatterns = [ path('admin/', admin.site.urls), - path('api/register_user', register_racer), + path('api/register_user', register_user), path('api/register_racer', register_racer), path('api/login', login), path('api/login_status', login_status), diff --git a/alkatorapi/views.py b/alkatorapi/views.py index 4575c5d..dab5e1e 100644 --- a/alkatorapi/views.py +++ b/alkatorapi/views.py @@ -6,6 +6,7 @@ from django.contrib.admin.views.decorators import staff_member_required from django.contrib.auth.models import User as DjangoUser from django.contrib.auth import authenticate, login from django.core.mail import send_mail, mail_admins +from django.utils.datastructures import MultiValueDictKeyError from datetime import date, datetime, timedelta from urllib.parse import parse_qs import requests @@ -47,7 +48,10 @@ def register_user(request): @csrf_exempt def login(request): - user = authenticate(request, username=request.POST['email'], password=request.POST['password']) + try: + user = authenticate(request, username=request.POST['email'], password=request.POST['password']) + except MultiValueDictKeyError: + return HttpResponse('{"reason":"Nezadané jméno nebo heslo!"}', status=400, content_type='application/json') if user is not None: login(request, user) return HttpResponse('{"success":"Úspěšně přihlášen uživatel '+ user.email + '"}', content_type='application/json')