Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance JWT Token Management #102

Merged
merged 3 commits into from
Oct 13, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 55 additions & 20 deletions login-system/token.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,62 @@
require("dotenv").config()
// generating the token for user
const jwt = require("jsonwebtoken")
const crypto=require('crypto')
function generateAccessToken (user) {
return jwt.sign(user, process.env.ACCESS_TOKEN_SECRET, {expiresIn: "20m"})
}
const crypto=require('crypto');
const { error } = require("console");

// function for decoding the token
function decodeAccessToken(authorizationHeader) {
if (!authorizationHeader) {
console.log('authorization header is missing')
return null;
// Middleware to validate environment variables and pass it in req.Key
function checkKey(req,res,next){
const Key = process.env.ACCESS_TOKEN_SECRET
if(!Key){
return res.status(500).json({Error : 'Missing ACCESS_TOKEN_SECRET in environment variables.'});
}else{
req.Key = Key;
next();
}
}

// function for generating access token with req and res
function generateAccessToken(req,res,user,expireTime = "20m") {
const Key = req.Key
try{
const token = jwt.sign(user,Key,{
expiresIn : expireTime
})
if(!token){
return res.status(500).json({ message: "Token generation failed" });
}
return res.status(200).json({token})
}catch(err){
return res.status(500).json(
{
Message : "Server Error During Token Generation" ,
Error : err.message
}
);
}
}

// function for decoding the token with req and res
function decodeAccessToken(req,res){
const Key = req.Key
const AuthHeader = req.headers.authorization
try{
if(!AuthHeader){
return res.status(401).json({ message: "Authorization header is missing" });
}

const token = AuthHeader.split(" ")[1];

const token = authorizationHeader.split(' ')[1];

try {
const decoded = jwt.verify(token, process.env.ACCESS_TOKEN_SECRET);
// console.log('decoded info: ',decoded)
return decoded;
} catch (error) {
console.error('Error decoding access token:', error);
return null;
const decodedToken = jwt.verify(token,Key)
if(!decodedToken){
return res.status(400).json({message : "Unable to decode token"})
}
return res.status(200).json({decodedToken})

}catch(err){
res.status(500).json({
message : "Invalid or Expired token",
error : err.message
})
}
}

Expand All @@ -30,4 +65,4 @@ function registrationToken(email) {
return crypto.createHash('sha256').update(email).digest('hex');
}

module.exports={ generateAccessToken, decodeAccessToken ,registrationToken}
module.exports={ generateAccessToken, decodeAccessToken ,registrationToken}