fix: Use native django.http.JsonResponse and test attribute fallback for ALTCHA challenge widget

This commit is contained in:
Richard
2026-07-31 12:05:14 +02:00
parent c8aed130b8
commit 8dacdc9042
5 changed files with 17 additions and 8 deletions
+14 -6
View File
@@ -26,12 +26,10 @@ from .serializers import (
ShiftSerializer, EventTemplateSerializer
)
from rest_framework.renderers import JSONRenderer
class AltchaChallengeView(views.APIView):
permission_classes = [permissions.AllowAny]
renderer_classes = [JSONRenderer]
from django.views import View
from django.http import JsonResponse
class AltchaChallengeView(View):
def get(self, request):
salt = secrets.token_hex(12)
secret_number = random.randint(1000, 50000)
@@ -40,13 +38,23 @@ class AltchaChallengeView(views.APIView):
signature = hmac.new(key, msg, hashlib.sha256).hexdigest()
challenge_hash = hashlib.sha256(msg).hexdigest()
return Response({
response = JsonResponse({
"algorithm": "SHA-256",
"challenge": challenge_hash,
"maxnumber": 100000,
"salt": salt,
"signature": signature
})
response["Access-Control-Allow-Origin"] = "*"
response["Access-Control-Allow-Headers"] = "*"
return response
def options(self, request):
response = HttpResponse()
response["Access-Control-Allow-Origin"] = "*"
response["Access-Control-Allow-Headers"] = "*"
response["Access-Control-Allow-Methods"] = "GET, OPTIONS"
return response
def verify_altcha_payload(payload):
if not payload: