c46cea2807
Ninguna de las dos miraba la sesión, así que quien ya estaba conectado veía el formulario de login o el de registro. Ahora, con `bnetId` en sesión (lo mismo que da por buena la sesión en el resto del sitio), sale «¡Ya estás conectado!» y un enlace a /log-out, como las plantillas del tema. En crear cuenta el cuadro informativo se mantiene: sigue explicando cómo son las cuentas aunque ya tengas sesión. Solo se sustituye el formulario. Las dos pasan a `force-dynamic`: leen cookies y no se pueden prerenderizar. Verificado en producción sellando una cookie de sesión real con iron-session: con sesión salen los dos avisos y desaparece el formulario; sin sesión el formulario sigue ahí y el aviso no se renderiza. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
56 lines
1.9 KiB
TypeScript
56 lines
1.9 KiB
TypeScript
import type { Metadata } from 'next'
|
|
import { getTranslations, setRequestLocale } from 'next-intl/server'
|
|
import { Link } from '@/i18n/navigation'
|
|
import { getSession } from '@/lib/session'
|
|
import { PageShell } from '@/components/PageShell'
|
|
import { RegisterForm } from './RegisterForm'
|
|
|
|
// Lee la sesión (cookies), así que no se puede prerenderizar.
|
|
export const dynamic = 'force-dynamic'
|
|
|
|
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise<Metadata> {
|
|
const { locale } = await params
|
|
const t = await getTranslations({ locale, namespace: 'Register' })
|
|
return { title: t('title') }
|
|
}
|
|
|
|
export default async function CreateAccountPage({ params }: { params: Promise<{ locale: string }> }) {
|
|
const { locale } = await params
|
|
setRequestLocale(locale)
|
|
const t = await getTranslations('Register')
|
|
// El cuadro informativo se queda: sigue explicando cómo son las cuentas aunque
|
|
// ya tengas sesión. Lo que se sustituye es el formulario.
|
|
const session = await getSession()
|
|
|
|
return (
|
|
<PageShell title={t('title')}>
|
|
<div className="box-content" tabIndex={-1}>
|
|
<div className="body-box-content info-box-light justified">
|
|
<p>{t('bnetType')}</p>
|
|
<p>{t('passwordRule')}</p>
|
|
<p>{t('emailRule')}</p>
|
|
<br />
|
|
<p>{t('activation1')}</p>
|
|
<p>{t('activation2')}</p>
|
|
<p>
|
|
<i className="fas fa-exclamation-triangle"></i> {t('loginHint')}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div className="box-content">
|
|
<div className="body-box-content centered">
|
|
{session.bnetId ? (
|
|
<>
|
|
<p>{t('alreadyLogged')}</p>
|
|
<br />
|
|
<p>{t.rich('alreadyLoggedCreate', { logout: (c) => <Link href="/log-out">{c}</Link> })}</p>
|
|
</>
|
|
) : (
|
|
<RegisterForm />
|
|
)}
|
|
</div>
|
|
</div>
|
|
</PageShell>
|
|
)
|
|
}
|