| 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 }; |