Add CSRF protection to payment endpoints

This commit is contained in:
2026-05-07 07:53:38 +02:00
parent ed7041ae40
commit ba4f6ad65d
+10 -2
View File
@@ -15,7 +15,7 @@ from .vars import (
STOCK_RESERVATION_MINUTES, STOCK_RESERVATION_MINUTES,
) )
from django.conf import settings from django.conf import settings
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.views.decorators.http import require_POST from django.views.decorators.http import require_POST
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
@@ -1185,7 +1185,7 @@ def stripe_config(request):
@login_required @login_required
@csrf_exempt @csrf_protect
def create_checkout_session(request: HttpRequest): def create_checkout_session(request: HttpRequest):
if request.method != "POST": if request.method != "POST":
return JsonResponse({"error": "Método no permitido"}, status=405) return JsonResponse({"error": "Método no permitido"}, status=405)
@@ -1524,6 +1524,7 @@ def paypal_execute(request: HttpRequest):
# ==================== STRIPE PAYMENT INTENTS ==================== # ==================== STRIPE PAYMENT INTENTS ====================
@login_required @login_required
@csrf_protect
def crear_payment_intent(request: HttpRequest): def crear_payment_intent(request: HttpRequest):
""" """
Crea un Stripe PaymentIntent para el carrito actual. Crea un Stripe PaymentIntent para el carrito actual.
@@ -1607,6 +1608,7 @@ def crear_payment_intent(request: HttpRequest):
@login_required @login_required
@csrf_protect
def confirmar_pago_tarjeta(request: HttpRequest): def confirmar_pago_tarjeta(request: HttpRequest):
""" """
Verificar que el PaymentIntent fue exitoso y crear el pedido. Verificar que el PaymentIntent fue exitoso y crear el pedido.
@@ -1680,6 +1682,7 @@ def confirmar_pago_tarjeta(request: HttpRequest):
# ==================== PAYPAL ORDERS API ==================== # ==================== PAYPAL ORDERS API ====================
@login_required @login_required
@csrf_protect
def crear_orden_paypal(request: HttpRequest): def crear_orden_paypal(request: HttpRequest):
""" """
Crea una orden de PayPal con el total del carrito actual (Orders API v2). Crea una orden de PayPal con el total del carrito actual (Orders API v2).
@@ -1733,6 +1736,7 @@ def crear_orden_paypal(request: HttpRequest):
@login_required @login_required
@csrf_protect
def capturar_orden_paypal(request: HttpRequest): def capturar_orden_paypal(request: HttpRequest):
""" """
Captura una orden de PayPal aprobada y crea el pedido en nuestra BD. Captura una orden de PayPal aprobada y crea el pedido en nuestra BD.
@@ -1843,6 +1847,7 @@ def agregar_tarjeta(request: HttpRequest):
@login_required @login_required
@csrf_protect
def crear_setup_intent(request: HttpRequest): def crear_setup_intent(request: HttpRequest):
""" """
Crea un Stripe SetupIntent y retorna el client_secret para que el frontend Crea un Stripe SetupIntent y retorna el client_secret para que el frontend
@@ -1867,6 +1872,7 @@ def crear_setup_intent(request: HttpRequest):
@login_required @login_required
@csrf_protect
def confirmar_setup_intent(request: HttpRequest): def confirmar_setup_intent(request: HttpRequest):
""" """
Tras la confirmación del SetupIntent en el frontend, guarda la tarjeta. Tras la confirmación del SetupIntent en el frontend, guarda la tarjeta.
@@ -1968,6 +1974,7 @@ def agregar_paypal(request: HttpRequest):
@login_required @login_required
@csrf_protect
def crear_orden_paypal_setup(request: HttpRequest): def crear_orden_paypal_setup(request: HttpRequest):
""" """
Crea una orden PayPal de 0.01 € para verificar/guardar la cuenta. Crea una orden PayPal de 0.01 € para verificar/guardar la cuenta.
@@ -1984,6 +1991,7 @@ def crear_orden_paypal_setup(request: HttpRequest):
@login_required @login_required
@csrf_protect
def capturar_orden_paypal_setup(request: HttpRequest): def capturar_orden_paypal_setup(request: HttpRequest):
""" """
Captura la orden de verificación de PayPal y guarda la cuenta del usuario. Captura la orden de verificación de PayPal y guarda la cuenta del usuario.