jwt-authen
v1.0.2
Published
A reusable authentication middleware for validating JWT tokens and ensuring user authorization. This middleware checks for the presence of a JWT token in the request, verifies the token, and fetches the user details. It supports custom error messages for
Readme
Authentication Middleware
A reusable authentication middleware for validating JWT tokens and ensuring user authorization. This middleware checks for the presence of a JWT token in the request, verifies the token, and fetches the user details. It supports custom error messages for multiple languages.
Features
- Verifies JWT tokens in
Authorizationheaders. - Handles language-specific error messages using the
translatorobject. - Ensures the user account is active before allowing access to protected routes.
- Can be easily linked as an NPM package for use across multiple projects.
Installation
Step 1: Install Dependencies
Make sure that your project has the necessary dependencies installed, such as jsonwebtoken for token verification:
npm install jsonwebtoken
Usage
Import the middleware into your project and use it as a route handler for authentication:
const AuthenticationMiddleware = require('jwt-authen');
// Example usage in an Express or Fastify app const authMiddleware = AuthenticationMiddleware({ secret: process.env.SECRET_TOKEN, getUserById: async (userId) => { // Replace with your service to fetch user by ID return await someService.getUserById(userId); }, translator: { en: { Authentication: { UnAuthorized: 'Unauthorized access.', InvalidJWT: 'Invalid or missing token.', InactiveAccount: 'Your account is inactive. Please reactivate it.' } }, });
// Use the middleware on your routes app.use(authMiddleware);
Parameters
The AuthenticationMiddleware function accepts an options object with the following properties:
secret (string): The secret key used to verify the JWT token.
getUserById (Function): A function that takes a userId and returns the corresponding user details (e.g., from a database or service).
translator (Object): A dictionary containing the translations for error messages in different languages.
translator[lang]: Language-specific translations for the Authentication messages.
UnAuthorized: The error message when the user is unauthorized.
InvalidJWT: The error message when the JWT token is invalid or missing.
InactiveAccount: The error message when the user’s account is inactive.Example Configuration
const authMiddleware = AuthenticationMiddleware({ secret: process.env.SECRET_TOKEN, getUserById: async (userId) => { // Fetch user from database or service return await userService.getUserById(userId); }, translator: { en: { Authentication: { UnAuthorized: 'Unauthorized access.', InvalidJWT: 'Invalid token.', InactiveAccount: 'Your account has been deactivated. Please reactivate to log in.' } }, // u can add other languages });
License
MIT License - See LICENSE file for details.
