<?php

declare(strict_types=1);

namespace ApiModel\Infrastructure\Security;

/**
 * Firma siempre con JWT_SECRET. Verificación acepta JWT_SECRET y, si está definido,
 * JWT_SECRET_PREVIOUS (ventana de rotación sin cortar sesiones vigentes).
 */
final class JwtSecretResolver
{
    public static function signingSecret(): string
    {
        $s = trim((string) ($_ENV['JWT_SECRET'] ?? ''));
        if ($s === '') {
            throw new \RuntimeException('JWT_SECRET no configurado', 500);
        }

        return $s;
    }

    /**
     * Orden: actual primero, luego anterior (si existe y es distinto).
     *
     * @return list<string>
     */
    public static function verificationSecrets(): array
    {
        $primary = trim((string) ($_ENV['JWT_SECRET'] ?? ''));
        $previous = trim((string) ($_ENV['JWT_SECRET_PREVIOUS'] ?? ''));

        if ($primary === '') {
            throw new \RuntimeException('JWT_SECRET no configurado', 500);
        }

        $list = [$primary];
        if ($previous !== '' && $previous !== $primary) {
            $list[] = $previous;
        }

        return $list;
    }
}
