@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
66 lines (65 loc) • 2.2 kB
JavaScript
;
/* eslint-disable @typescript-eslint/no-require-imports, @typescript-eslint/no-unused-vars */
Object.defineProperty(exports, "__esModule", { value: true });
exports.authenticateRefreshToken = exports.authenticateToken = void 0;
let express;
let verifyToken;
let verifyRefreshToken;
const authenticateToken = (accessSecret) => {
if (!express) {
try {
express = require('express');
}
catch (error) {
throw new Error("Express middleware is being used, but 'express' is not installed. Please install it as a peer dependency.");
}
}
if (!verifyToken) {
({ verifyToken } = require('../jwt'));
}
return (req, res, next) => {
const authHeader = req.headers.authorization;
if (!authHeader?.startsWith('Bearer ')) {
res.status(401).json({ message: 'Unauthorized' });
return;
}
const [, token] = authHeader.split(' ');
const user = verifyToken(token, accessSecret);
if (!user) {
res.status(403).json({ message: 'Forbidden' });
return;
}
req.user = user;
next();
};
};
exports.authenticateToken = authenticateToken;
const authenticateRefreshToken = (refreshSecret) => {
if (!express) {
try {
express = require('express');
}
catch (error) {
throw new Error("Express middleware is being used, but 'express' is not installed. Please install it as a peer dependency.");
}
}
if (!verifyRefreshToken) {
({ verifyRefreshToken } = require('../jwt'));
}
return (req, res, next) => {
const authHeader = req.headers.authorization;
if (!authHeader?.startsWith('Bearer ')) {
res.status(401).json({ message: 'Unauthorized' });
return;
}
const [, token] = authHeader.split(' ');
const user = verifyRefreshToken(token, refreshSecret);
if (!user) {
res.status(403).json({ message: 'Forbidden' });
return;
}
req.user = user;
next();
};
};
exports.authenticateRefreshToken = authenticateRefreshToken;