UNPKG

@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
"use strict"; 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; } }