File size: 825 Bytes
c2efbe6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | const jwt = require("jsonwebtoken");
const User = require("../models/userModel.js");
const expressAsyncHandler = require("express-async-handler");
const checkToken = expressAsyncHandler(async (req, res, next) => {
let token;
const authHeader = req.headers.authorization;
if (authHeader && authHeader.startsWith('Bearer ')) {
token = authHeader.substring(7);
}
if (!token) {
token = req.cookies.token;
}
if (token) {
try {
const decodedToken = jwt.verify(token, process.env.JWT_SECRET_KEY);
req.user = await User.findById(decodedToken.userId).select("-password");
next();
} catch (error) {
res.status(401);
throw new Error("Invalid token !");
}
} else {
res.status(401);
throw new Error("Unauthorized !");
}
});
module.exports = { checkToken }; |