const jwt = require('jsonwebtoken'); const SECRET_KEY = process.env.JWT_SECRET || '123456789'; const EXPIRES_IN = process.env.JWT_EXPIRES || '1h'; const denylist = new Map(); function addToDenylist(token) { try { const decoded = jwt.decode(token); const exp = decoded?.exp || Math.floor(Date.now() / 1000) + 60; denylist.set(token, exp); } catch { denylist.set(token, Math.floor(Date.now() / 1000) + 60); } } function isRevoked(token) { const exp = denylist.get(token); if (!exp) return false; if (exp * 1000 < Date.now()) { denylist.delete(token); return false; } return true; } function verifyToken(token) { return jwt.verify(token, SECRET_KEY); } function createToken(payload) { return jwt.sign(payload, SECRET_KEY, { expiresIn: EXPIRES_IN }); } module.exports = { addToDenylist, isRevoked, verifyToken, createToken, };