Files
NightSpire/web-next/app/[locale]/reset-password/page.tsx
T
Inna 3573b7eb40 Recuperación de cuenta en Next.js (3 flujos + reset), con Turnstile
- lib/recover.ts: requestRecovery(type,email) -> password (crea token en
  home_passwordreset + email), accountname (email con las cuentas), activation
  (reenvía enlace); respuesta genérica anti-enumeración. resetPassword(token,pass)
  re-deriva el verifier SRP6 v2 (bnetMakeRegistration) y actualiza battlenet_accounts,
  marca el token usado.
- Routes /api/auth/recover (Turnstile) y /api/auth/reset-password.
- Páginas app/[locale]/recover (RecoverForm: selector de tipo + email + Turnstile) y
  reset-password (ResetForm con token de la URL). Catálogos Recover, Reset.

Verificado: recover sin captcha -> captchaFailed; reset token inválido -> invalidLink;
páginas 200. Reutiliza home_passwordreset de Django. Crypto de reset ya validada.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 23:07:16 +00:00

23 lines
632 B
TypeScript

import { getTranslations, setRequestLocale } from 'next-intl/server'
import { ResetForm } from './ResetForm'
export default async function ResetPasswordPage({
params,
searchParams,
}: {
params: Promise<{ locale: string }>
searchParams: Promise<{ token?: string }>
}) {
const { locale } = await params
setRequestLocale(locale)
const { token } = await searchParams
const t = await getTranslations('Reset')
return (
<main className="mx-auto max-w-lg px-4 py-8">
<h1 className="mb-6 text-center text-2xl font-bold text-amber-500">{t('title')}</h1>
<ResetForm token={token ?? ''} />
</main>
)
}