/**
 * Zentrale, Edge-sichere Quelle für das JWT-Signaturgeheimnis.
 *
 * Wird sowohl von der API (src/lib/auth.ts, Node-Runtime) als auch von der
 * Middleware (Edge-Runtime) importiert. Deshalb hier KEINE Node-/Prisma-Imports.
 *
 * Sicherheit: In Produktion wird hart abgebrochen, wenn kein starkes Geheimnis
 * gesetzt ist – so kann niemals still mit einem öffentlich bekannten Fallback
 * signiert werden (Token-Fälschung).
 */

const secretValue = process.env.NEXTAUTH_SECRET

// Fester Dev-Fallback (>= 32 Zeichen), damit API und Middleware in der lokalen
// Entwicklung ohne gesetztes Secret DIESELBEN Tokens verifizieren können.
const DEV_FALLBACK = 'dev-only-fallback-do-not-use-in-production-change-me'

if (process.env.NODE_ENV === 'production') {
  if (!secretValue || secretValue.length < 32) {
    throw new Error(
      '[AUTH] NEXTAUTH_SECRET fehlt oder ist kürzer als 32 Zeichen. ' +
        'In Produktion ist ein starkes Geheimnis zwingend erforderlich.'
    )
  }
} else if (!secretValue || secretValue.length < 32) {
  console.warn(
    '[AUTH] WARNUNG: NEXTAUTH_SECRET fehlt/zu kurz – nutze unsicheren Dev-Fallback. ' +
      'Für Produktion ein starkes Geheimnis (>= 32 Zeichen) setzen!'
  )
}

export const JWT_SECRET = new TextEncoder().encode(
  secretValue && secretValue.length >= 32 ? secretValue : DEV_FALLBACK
)
