// token黑名单管理模块

// 简单的内存存储，实际生产环境中可以替换为Redis或数据库
const tokenBlacklist = new Set();

/**
 * 将token添加到黑名单
 * @param {string} token - JWT令牌
 * @param {number} expiresIn - 过期时间（毫秒）
 */
exports.addToBlacklist = (token, expiresIn) => {
  tokenBlacklist.add(token);
  
  // 设置定时任务，在token过期后从黑名单中移除
  setTimeout(() => {
    tokenBlacklist.delete(token);
    console.log(`Token已从黑名单中移除: ${token.substring(0, 20)}...`);
  }, expiresIn);
};

/**
 * 检查token是否在黑名单中
 * @param {string} token - JWT令牌
 * @returns {boolean} - 如果token在黑名单中返回true，否则返回false
 */
exports.isBlacklisted = (token) => {
  return tokenBlacklist.has(token);
};

/**
 * 获取当前黑名单大小
 * @returns {number} - 黑名单中的token数量
 */
exports.getBlacklistSize = () => {
  return tokenBlacklist.size;
};