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

48 lines (47 loc) 1.71 kB
"use strict"; /* eslint-disable @typescript-eslint/no-require-imports, @typescript-eslint/no-unused-vars */ Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthenticateToken = void 0; let NestJsCommon; let verifyToken; let verifyRefreshToken; try { NestJsCommon = require('@nestjs/common'); } catch (error) { throw new Error("NestJS middleware is being used, but '@nestjs/common' is not installed. Please install it as a peer dependency."); } const common_1 = require("@nestjs/common"); class AuthenticateToken { constructor(accessSecret, refreshSecret) { this.accessSecret = accessSecret; this.refreshSecret = refreshSecret; if (!verifyToken) { ({ verifyToken } = require('../jwt')); } if (!verifyRefreshToken) { ({ verifyRefreshToken } = require('../jwt')); } } canActivate(context) { const request = context.switchToHttp().getRequest(); const authHeader = request.headers.authorization; if (!authHeader?.startsWith('Bearer ')) { throw new common_1.UnauthorizedException('Unauthorized: No token provided or invalid format'); } const [, token] = authHeader.split(' '); let decoded; if (request.url.includes('/refresh')) { decoded = verifyRefreshToken(token, this.refreshSecret); } else { decoded = verifyToken(token, this.accessSecret); } if (!decoded) { throw new common_1.UnauthorizedException('Unauthorized: Invalid or expired token'); } request.user = decoded; return true; } } exports.AuthenticateToken = AuthenticateToken;