Changelogs
Permitir pagar los servicios con PD, Stripe o SumUp (elección)
14 de julio de 2026 a las 21:44adevopg · 1b0920d
Los 9 servicios con precio en euros (rename, customize, change-race, change-faction, level-up, gold, transfer, restore-item, send-gift) ahora ofrecen un selector de forma de pago con las 3 opciones: saldo PD, tarjeta (Stripe) o tarjeta (SumUp). - lib/dpoints: spendDPoints() descuenta PD de forma atómica (FOR UPDATE). - lib/pay-with-dpoints: paga con saldo PD, ejecuta la acción al momento y reembolsa si la ejecución falla; 100 PD = 1 €. - rutas checkout (character/[service] y gift): rama provider='pd' que valida saldo, descuenta, ejecuta fulfill y devuelve la URL de éxito (sin pasarela). - service-success: rama provider='pd' (la entrega ya se hizo en el checkout). - PaymentMethodSelect: componente compartido con coste por método y saldo; desactiva PD si no hay saldo suficiente. - Formularios (PaidServiceForm, Gold, Transfer, RestoreItems, SendGift) y sus páginas pasan el saldo PD y envían el método elegido + locale. - i18n: namespace Pay (es/en); añadidas claves Paid.restore-item que faltaban.
Fix captcha: resetear Turnstile tras un fallo (token de un solo uso)
14 de julio de 2026 a las 21:17adevopg · 942fe2e
Al fallar (p.ej. contraseña incorrecta) el token de Turnstile ya se consumió en el servidor; el reintento reenviaba el mismo token y daba "captcha fallida" aunque estuviera resuelto. Se resetea el widget (setCaptcha('') + captchaKey++ con <Turnstile key={captchaKey}>, mismo patrón que recover/restore/quest) en login, create-account y trade-points (venta y canje). El check de código no usa captcha, no se resetea ahí.
Renombrar /login -> /log-in en toda la web (/login da 404)
14 de julio de 2026 a las 21:03adevopg · 20e1d5a
Mueve la página de login a /log-in y actualiza todas las referencias (enlace CONECTAR del header y los redirect de auth de ~45 páginas). /login ahora da 404. La API /api/auth/login no se toca (solo la ruta de página).
Formularios: noValidate en todos para usar red-response del sitio
14 de julio de 2026 a las 20:57adevopg · 14125db
Desactiva la validación nativa del navegador ("Rellene este campo", formato de email) en el resto de formularios (recover, reset-password, trade-points, rename-guild, transfer-dp, gold, promo, transfer, quest, send-gift, 2FA, restore). Los errores se muestran como red-form-response (por validación en cliente o del servidor), consistente con login y create-account. Botones ya gateados por campos.
login: noValidate para usar red-response en vez del aviso nativo
14 de julio de 2026 a las 20:55adevopg · 071b1d5
El navegador mostraba "Rellene este campo" (required) en lugar del error del sitio. noValidate en el form deja que la validación en cliente ya existente muestre el red-form-response (missingFields).


