48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
/**
|
|
* Copyright (c) 2026 Niolla
|
|
* All rights reserved.
|
|
*
|
|
* This source code is proprietary and confidential.
|
|
* Unauthorized copying, modification, distribution, or use
|
|
* of this file, via any medium, is strictly prohibited.
|
|
*/
|
|
|
|
// app/utils/jwt.util.js
|
|
|
|
const jwt = require("jsonwebtoken");
|
|
require("dotenv").config();
|
|
|
|
const JWT_SECRET = process.env.JWT_SECRET || "your_jwt_secret_key";
|
|
const JWT_EXPIRES_IN = process.env.JWT_EXPIRES_IN || "1d"; // token validity
|
|
|
|
const REFRESH_TOKEN_SECRET = process.env.REFRESH_TOKEN_SECRET || "your_refresh_token_secret_key";
|
|
const REFRESH_TOKEN_DAYS = process.env.REFRESH_TOKEN_DAYS || "7d"; // refresh token validity
|
|
|
|
/**
|
|
* Generate JWT token
|
|
* @param {Object} payload - usually { id, email, role }
|
|
* @returns string
|
|
*/
|
|
const generateToken = (payload) => {
|
|
return jwt.sign(payload, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN });
|
|
};
|
|
|
|
/**
|
|
* Verify JWT token
|
|
* @param {string} token
|
|
* @returns payload or throws error
|
|
*/
|
|
const verifyToken = (token) => {
|
|
return jwt.verify(token, JWT_SECRET);
|
|
};
|
|
|
|
const generateRefreshToken = (payload) => {
|
|
return jwt.sign(payload, REFRESH_TOKEN_SECRET, { expiresIn: REFRESH_TOKEN_DAYS });
|
|
}
|
|
|
|
const verifyRefreshToken = (token) => {
|
|
return jwt.verify(token, REFRESH_TOKEN_SECRET);
|
|
}
|
|
|
|
module.exports = { generateToken, verifyToken, generateRefreshToken, verifyRefreshToken };
|