import jwt from 'jsonwebtoken';
import { JwtPayload } from './types.js';

export function validateToken(token: string): JwtPayload | null {
  const secret = process.env.JWT_SECRET;
  if (!secret) {
    console.error('JWT_SECRET is not defined');
    throw new Error('Missing JWT_SECRET environment variable');
  }

  try {
    const decoded = jwt.verify(token, secret);

    // Проверяем, что полезная нагрузка соответствует интерфейсу JwtPayload
    if (isJwtPayload(decoded)) {
      return decoded;
    } else {
      console.error('Invalid token payload structure');
      return null;
    }
  } catch (error) {
    console.error('Token validation error:', error);
    return null;
  }
}

// Функция проверки структуры полезной нагрузки
function isJwtPayload(payload: unknown): payload is JwtPayload {
  return (
    typeof payload === 'object' && payload !== null && 'id' in payload && 'iat' in payload && 'exp' in payload
  );
}
