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

66 lines (65 loc) 2.2 kB
"use strict"; /* 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;