api/middlewares/generalAuth.js
2024-08-27 21:54:20 +05:30

57 lines
1.6 KiB
JavaScript

import jwt from "jsonwebtoken";
import SalesCoOrdinator from "../resources/SalesCoOrdinators/SalesCoOrdinatorModel.js";
import TerritoryManager from "../resources/TerritoryManagers/TerritoryManagerModel.js";
export const isAuthenticated_SC_TM = async (req, res, next) => {
try {
if (!req.headers.authorization) {
return res.status(401).json({
success: false,
message: "Please login to access this resource",
});
}
const getToken = req.headers.authorization;
const token = getToken.slice(7);
const decoded = jwt.verify(token, process.env.JWT_SECRET);
if (!decoded) {
return res.status(400).json({
success: false,
message: "Incorrect token",
});
}
let user = await SalesCoOrdinator.findById(decoded.id);
if (user) {
req.user = user;
req.userType = "SalesCoOrdinator";
} else {
user = await TerritoryManager.findById(decoded.id);
if (user) {
req.user = user;
req.userType = "TerritoryManager";
}
}
if (!user) {
return res.status(401).json({
success: false,
message: "Unauthorized",
});
}
return next();
} catch (error) {
if (error.name === "TokenExpiredError") {
return res.status(401).json({ message: "Token has expired." });
} else if (error.name === "JsonWebTokenError") {
return res.status(401).json({ message: "Invalid token." });
} else {
return res.status(500).json({
message: "An internal error occurred while verifying the token.",
});
}
}
};