Activa CSRF global en el portal (CsrfViewMiddleware)
- añade django.middleware.csrf.CsrfViewMiddleware a MIDDLEWARE (estaba ausente:
el CSRF estaba desactivado en todo el sitio)
- head.html: $.ajaxSetup envía X-CSRFToken en todo POST AJAX de jQuery + expone
window.CSRF_TOKEN (fuerza la cookie csrftoken en cada página)
- store_novawow.html: el fetch() nativo ahora manda X-CSRFToken (era el único que
se rompía al activar el middleware)
- register.html: añade {% csrf_token %} al formulario
- retira @csrf_exempt de login/register/restore_character/restore_items
(solo los webhooks stripe/sumup siguen exentos)
- auditoría previa: el resto de POST (AJAX jQuery + forms nativos con token) ya cubierto
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -185,7 +185,6 @@ def _set_game_account_session(request, game_account):
|
||||
request.session['account_id'] = game_account['id']
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
def login_view(request):
|
||||
if request.method == 'POST':
|
||||
form = LoginForm(request.POST)
|
||||
@@ -334,7 +333,6 @@ def logout_view(request):
|
||||
return redirect('index')
|
||||
|
||||
# Vistas adicionales
|
||||
@csrf_exempt
|
||||
def register_view(request):
|
||||
if request.method == 'POST':
|
||||
password = request.POST.get('password', '').strip()
|
||||
@@ -1345,7 +1343,6 @@ def rename_cancel_view(request):
|
||||
return redirect('login')
|
||||
return render(request, 'account/rename_cancel.html')
|
||||
|
||||
@csrf_exempt
|
||||
def restore_character_view(request):
|
||||
# Verifica si el usuario está autenticado y obtiene su nombre de usuario
|
||||
username = request.session.get('username')
|
||||
@@ -1428,7 +1425,6 @@ def restore_character_view(request):
|
||||
'character_list': character_list
|
||||
})
|
||||
|
||||
@csrf_exempt
|
||||
def restore_items_view(request):
|
||||
username = request.session.get('username')
|
||||
if not username:
|
||||
|
||||
Reference in New Issue
Block a user