utils/token-utils.js

require("dotenv").config();
/**
 * @module
 * @name token-utils
 *  */

const jwt = require("jsonwebtoken");
const secret = process.env.JWT_SECRET_KEY;

/**
 * @function
 * @summary This function is used to generate token with JWT using user credentials.
 * @param {User} user - The {@link Users User} object for which the token is to be generated.
 * @returns {JSON} token.
 */
const generateToken = (user) => {
  return jwt.sign({ user }, secret, {
    expiresIn: "1d",
  });
};

/**
 * @function
 * @summary This function is used to verify the JWT token. The required parameter is the User object and the return value is the decoded token.
 * @param {String} token - JWT token to be verified.
 * @returns {JSON} The decoded token.
 */
const verifyToken = (token) => {
  return jwt.verify(token.replace("Bearer ", ""), secret);
};

module.exports = { generateToken, verifyToken };