579396c34a
Marca, dominios y correos: UltimoWoW/Nova WoW -> NightSpire, cualquier URL de esos dominios -> https://www.nightspire.gg y los correos -> consultas@nightspire.gg. 98 sustituciones en 16 ficheros de textos de usuario (messages/, app/, components/). Assets: logo largo de cabecera y vídeo sustituidos por los de NightSpire (el logo nuevo es 214x28, igual que el viejo, así que no hace falta tocar el CSS). Redes: apuntan a las cuentas de NightSpire, tanto en el pie de la web como en el de los correos (que seguían enlazando a las de NovaWoW desde el porte del diseño). Cookie de sesión novawow_session -> nightspire_session. Cierra la sesión de todos los conectados una vez; se asume ahora, recién hecho el cutover. Ficheros del tema renombrados: novawow-style.css -> nightspire-style.css y novawow-main-logo-transparent.webp -> nightspire-main-logo-transparent.webp, para que la marca vieja no quede ni en las rutas. El foro externo (foro.ultimowow.com) pasa a ser el nuestro: <Link> a /forum, que respeta el idioma y no abre pestaña nueva. NO se tocan y es a propósito: - Los comentarios que nombran AzerothCore: describen el comportamiento REAL del core (límite de 12 ítems por correo, convención de baneos, SOAP...). Cambiarlos a NightSpire los volvería falsos. Además AzerothCore no aparece en la web: las 14 menciones son todas comentarios de código. - El regex de brandify() sigue buscando los nombres VIEJOS: son los que hay escritos en las noticias de la BD. - lib/changelog.ts REPO='Inna/NovaWoW': es la ruta real del repo en Gitea. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 lines
937 B
TypeScript
30 lines
937 B
TypeScript
import { getIronSession, type SessionOptions } from 'iron-session'
|
|
import { cookies } from 'next/headers'
|
|
|
|
// Sesión cifrada en cookie httpOnly (equivalente a la sesión Django de antes).
|
|
export interface SessionData {
|
|
bnetId?: number
|
|
bnetEmail?: string
|
|
username?: string // cuenta de juego elegida (<bnetId>#<index>)
|
|
accountId?: number
|
|
// Secreto TOTP pendiente de confirmar (hex) durante el alta de 2FA, ligado a
|
|
// la cuenta de juego que lo generó. Se guarda sólo hasta verificar el código.
|
|
pending2fa?: string
|
|
pending2faFor?: number
|
|
}
|
|
|
|
export const sessionOptions: SessionOptions = {
|
|
password: process.env.SESSION_SECRET as string,
|
|
cookieName: 'nightspire_session',
|
|
cookieOptions: {
|
|
httpOnly: true,
|
|
secure: process.env.NODE_ENV === 'production',
|
|
sameSite: 'lax',
|
|
path: '/',
|
|
},
|
|
}
|
|
|
|
export async function getSession() {
|
|
return getIronSession<SessionData>(await cookies(), sessionOptions)
|
|
}
|