Commit Graph

42 Commits

Author SHA1 Message Date
Inna d612b7916c Fase 1 (isla 2): estado del servidor de la portada en React/TSX
Segunda isla de la home: la tabla de estado (nombre, online, login, hora,
dirección) pasa de plantilla Django a componente React.

- API: home_status_api -> /api/home/status/ (server_name, address, expansion,
  online_characters, status). Reutiliza check_server_status y
  get_online_characters_count de views/pages.
- React: ServerStatus.tsx (fetch + reloj en vivo con setInterval, mismas clases
  CSS). El entry home.tsx ahora monta dos islas: #home-news-app y #home-status-app.
- partials/noticias.html: la <table> de estado se sustituye por el contenedor.

Verificado: check OK, ambos endpoints 200, la home monta las dos islas.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 20:22:32 +00:00
Inna 98c3cbdbc6 Fase 0/1 migración a TSX: islas React con Vite + API JSON (piloto: noticias)
Arquitectura elegida: islas React/TSX montadas sobre las plantillas Django
existentes (django-vite), alimentadas por endpoints JSON bajo /api/. El backend,
las URLs y la auth por sesión se mantienen; se migra sección a sección.

Fase 0 (tooling):
- frontend/ con Vite + React 18 + TypeScript. Build a static/dist con manifest.
- django-vite 3.1 en INSTALLED_APPS + DJANGO_VITE (dev_mode=DEBUG,
  static_url_prefix='dist'). STATIC_URL pasa a '/static/' (absoluto) para que los
  assets no choquen con el <base href> de la plantilla. WhiteNoise sirve el bundle.
- .gitignore: frontend/node_modules y static/dist (artefactos de build).

Fase 1 (piloto: lista de noticias de la portada):
- API: home/views/api.py -> home_news_api (JsonResponse); ruta /api/home/news/
  montada en home/api_urls.py fuera de i18n_patterns.
- React: NewsList.tsx hace fetch de la API y renderiza las noticias (mismas clases
  CSS que el HTML original). Entry src/entries/home.tsx monta en #home-news-app.
- partials/noticias.html: el bucle {% for noticia %} se reemplaza por el contenedor
  de montaje + {% vite_asset %}.

Verificado en producción: manage.py check OK, /api/home/news/ 200, la home incluye
el mount y el <script> del bundle, y el bundle se sirve (200).

Build en deploy: cd frontend && npm run build && collectstatic (ver frontend/README.md).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 20:18:35 +00:00
Inna b5d46fad5c 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>
2026-07-12 17:42:34 +00:00
Inna 2c30844bf7 Añade foro de comunidad integrado (app forum) con el diseño de NovaWoW
- app 'forum': portada (categorías/foros), ver foro y tema (paginado), crear tema,
  responder, editar/borrar posts y moderación (fijar, bloquear, mover, borrar/restaurar)
- lee/escribe la BD acore_web (5ª conexión, DB_NAME_WEB) por SQL directo, tablas
  forum_categories/forums/forum_topics/forum_posts/forum_reads (portado de NovaWeb-main)
- identidad = cuenta de juego en sesión; permisos simplificados por gmlevel
  (FORUM_MOD_GMLEVEL) en vez de la matriz group_level×permission del original
- saneado del HTML de posts con nh3 (evita el XSS del original); POST+CSRF en formularios
- plantillas con los partials del sitio; enlace 'FOROS' del menú apunta al foro interno
- sql/forum_schema.sql y docs/FORO.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 17:10:55 +00:00
Inna 2162fe34d0 Muestra el email Battle.net como nombre visible en vez de <bnetId>#1
- header: saludo con bnet_email (fallback al username de juego)
- my-account: 'Cuenta (Battle.net)' = email y 'Cuenta de juego' = <bnetId>#1
- session['username'] se mantiene intacto para las consultas a la BD

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 16:52:45 +00:00
Inna 4edd08cd1a Mi cuenta: enlace a Battlepay y saldo de créditos bnet
- my_account: añade battlepay_credits (leído de battlenet_accounts.battlePayCredits)
- bnet.get_battlepay_credits() defensivo (0 si la columna no existe)
- partials/my-account.html: muestra 'Créditos Battlepay' y añade botón 'Tienda del cliente' que enlaza a /es/battlepay/

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 16:51:03 +00:00
Inna 0fef9ac35b Integra Battlepay con SumUp (órdenes battlepay_orders)
- pagos_sumup.py: crear_checkout_battlepay(reference,...) y obtener_checkout()
- battlepay_view: lista las órdenes PENDING de la cuenta de juego
- battlepay_pay_view: crea checkout SumUp para una orden concreta (checkout_reference=reference)
- sumup_webhook: marca la orden PAID (valida estado contra la API de SumUp si falta)
- plantillas account/battlepay.html y partials/pago_sumup.html
- sql/battlepay_sumup.sql (tablas battlepay_orders/battlepay_price) y docs actualizados

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 16:48:16 +00:00
Inna 215061776b Adapta el portal a 3.4.3 (cuentas Battle.net + selector de cuenta de juego)
- home/bnet.py: SRP6 v2 (PBKDF2-HMAC-SHA512) para battlenet_accounts y SRP6
  Grunt (SHA1) para las cuentas de juego, con helpers bnet<->game account
- login por email contra battlenet_accounts; selector de cuenta de juego
  cuando la cuenta bnet tiene varias (my_account redirige al selector)
- registro/activación crean battlenet_accounts + account enlazada (<bnetId>#1,
  battlenet_account/battlenet_index)
- cambio de contraseña sobre battlenet_accounts; cambio de email recalcula
  salt/verifier (el usuario SRP depende del email)
- AccountActivation: identidad por email (username/salt/verifier opcionales) + migración
- plantillas login/register por email + nueva plantilla del selector
- docs/MIGRACION_3.4.3.md con el detalle y los pasos de verificación

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 16:43:11 +00:00
adevopg 6365624e25 Implementacion Inicial SumUP 2025-03-02 17:37:33 +01:00
adevopg 34eec87bf2 Implementdo Cookies de la Union Europea 2025-03-02 10:50:45 +01:00
adevopg 9a96fad61b Implementado Cambio de Nombre Hermandad de Stripe 2025-02-20 17:27:00 +01:00
adevopg 3f962f8368 Implementado Ban History, Restore Character, Restore Items 2025-02-19 22:12:22 +01:00
adevopg 137dc853f8 Implementado historial de transaciones 2025-02-18 12:00:22 +01:00
adevopg 0a650eb161 Implementado Logs de Pagos de Stripe y Historial de conexiones de seguridad 2025-02-18 11:42:46 +01:00
adevopg 162f4bf828 Ahora la descripcion del pago de Stripe se muestra correctamente 2025-02-16 19:02:46 +01:00
adevopg 45ab155153 Implementadas algunas rutas faltantes 2025-02-16 17:22:26 +01:00
adevopg 2a194d6e98 Arreglado un problema visual del precio 6.1000000000000005 tipo a si 2025-02-16 01:01:45 +01:00
adevopg 0d5a8f853a Cambio el texto a EUR 2025-02-16 00:46:45 +01:00
adevopg e6f6abdc8b Fix Precios tienda 2025-02-16 00:13:15 +01:00
adevopg 41c3c6ae91 Implementacion Inicial de la Tienda 2025-02-15 23:36:48 +01:00
adevopg fa8a0e0891 Se a Eliminado de Head los script js para evitar su carga inecesaria cuando no hace falta 2025-02-15 17:53:52 +01:00
adevopg 4b83057131 A;adido Wotlk Futura Implementacion y Varios arreglos en js 2025-02-15 16:38:42 +01:00
adevopg e489d1355d Error 404 Fix 2025-02-14 17:19:37 +01:00
root e9de3248c0 Ignorar la carpeta venv en Git 2024-12-29 03:11:45 +05:30
Inna cff4bc3328 Fix name Class 2024-12-26 15:50:36 -08:00
Inna 2d9b7502d8 Fix Formulario de Login 2024-12-26 15:46:46 -08:00
Inna 473164e0a7 Fix URL 2024-12-26 15:21:55 -08:00
Inna 89f6bace97 Fix Class button Server Selection 2024-12-26 15:07:06 -08:00
adevopg 9c74006148 Implementadas Varias funciones de Pago de Stripe para Opciones Personajes, La Tienda Todavia no esta implementada del todo (EXPERIMENTAL) 2024-12-01 20:35:40 +01:00
adevopg 07b1281d61 Implementado Unstuck y Cambio de correo 2024-11-29 20:52:11 +01:00
adevopg c3c424277b Arreglado VotePoints, y Implementado el Cambio de Correo 2024-11-18 09:07:52 +01:00
adevopg ca25e51d18 Implementado Cambiar Nombre Hermandad y Precios Modificables desde Admin de Django del DP de Hermandad 2024-11-13 19:29:45 +01:00
adevopg e26ed74ac2 Cambio de Contrase;a Implementado 2024-11-13 16:14:17 +01:00
adevopg 797cfaa129 Implementado Solicitar Token de Seguridad (Web) 2024-11-13 14:39:05 +01:00
adevopg 8e28cda932 Arreglados los Tama;os de los iconos 2024-11-13 10:57:07 +01:00
adevopg 59db0af122 Implementacion de TOP 2024-11-13 10:34:42 +01:00
adevopg 652a3e06e4 Estructura Inicial de Dise;o Estadisticas de Jugadores 2024-11-12 20:24:36 +01:00
adevopg 45b64a5d53 Implementada Pagina de Ayuda usuarios Autentificados 2024-11-12 17:59:15 +01:00
adevopg b26e636a98 Impedir Acceder a Login y crear cuenta si ya has iniciado session 2024-11-12 17:44:35 +01:00
adevopg 4d31a4de8b Fixes Registro de cuentas 2024-11-12 17:19:01 +01:00
adevopg 996c93aafb Implementado Registro de Cuentas y Activacion de Email 2024-11-12 15:30:01 +01:00
adevopg 6b976046cb Inicial 2024-11-12 09:17:08 +01:00