import "server-only";

/** Parámetros de sesión y de protección del login. */
export const AUTH_CONFIG = {
  /** Expiración por inactividad (deslizante). */
  idleTimeoutMs: 8 * 60 * 60 * 1000,
  /** Expiración absoluta desde el login. */
  absoluteTimeoutMs: 7 * 24 * 60 * 60 * 1000,
  /** Cada cuánto se actualiza last_seen_at / idle_expires_at (evita una escritura por request). */
  touchIntervalMs: 5 * 60 * 1000,
  /** Intentos fallidos consecutivos por cuenta antes del bloqueo temporal. */
  maxFailedAttemptsPerAccount: 5,
  /** Duración del bloqueo temporal de la cuenta. */
  lockDurationMs: 15 * 60 * 1000,
  /** Ventana del rate limiting de login. */
  rateLimitWindowMs: 15 * 60 * 1000,
  /** Máximo de intentos fallidos por IP dentro de la ventana. */
  maxFailedAttemptsPerIp: 20,
  /** Máximo de intentos fallidos por email (exista o no) dentro de la ventana. */
  maxFailedAttemptsPerEmail: 10,
} as const;

/**
 * En producción la cookie usa el prefijo __Host-: obliga a Secure, Path=/ y sin Domain,
 * así no la pueden fijar subdominios ni conexiones http.
 */
export function sessionCookieName(isProduction: boolean): string {
  return isProduction ? "__Host-chesco_session" : "chesco_session";
}

/** Nombres posibles de la cookie, para el proxy (que no conoce el entorno en tiempo de build). */
export const SESSION_COOKIE_NAMES = ["__Host-chesco_session", "chesco_session"] as const;
