@the-node-forge/jwt-utils
Version:
A flexible, lightweight Node.js JWT library for generating, verifying, and managing JSON Web Tokens (JWTs). Supports access and refresh tokens with customizable secrets for authentication and role-based access control. Includes middleware for Express, Fas
51 lines (50 loc) • 1.98 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateTokens = generateTokens;
exports.verifyToken = verifyToken;
exports.verifyRefreshToken = verifyRefreshToken;
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
function generateTokens(payload, accessSecret, refreshSecret, options) {
const accessExpiresIn = options?.accessExpiresIn !== undefined ? options.accessExpiresIn : '15m';
const refreshExpiresIn = options?.refreshExpiresIn !== undefined ? options.refreshExpiresIn : '1d';
const accessToken = jsonwebtoken_1.default.sign(payload, accessSecret, {
expiresIn: accessExpiresIn,
algorithm: options?.algorithm ?? 'HS256',
audience: options?.audience ?? 'my-app',
issuer: options?.issuer ?? 'auth-service',
});
const refreshToken = jsonwebtoken_1.default.sign(payload, refreshSecret, {
expiresIn: refreshExpiresIn,
algorithm: options?.algorithm ?? 'HS256',
audience: options?.audience ?? 'my-app',
issuer: options?.issuer ?? 'auth-service',
});
return { accessToken, refreshToken };
}
function verifyToken(token, accessSecret, options) {
try {
return jsonwebtoken_1.default.verify(token, accessSecret, {
audience: options?.audience,
issuer: options?.issuer,
});
}
catch (err) {
console.error('❌ JWT Verification Error:', err.message);
return null;
}
}
function verifyRefreshToken(token, refreshSecret, options) {
try {
return jsonwebtoken_1.default.verify(token, refreshSecret, {
audience: options?.audience,
issuer: options?.issuer,
});
}
catch (err) {
console.error('❌ JWT Refresh Token Verification Error:', err.message);
return null;
}
}