const jwt = require("jsonwebtoken"); const { User } = require("../models"); const authenticate = async (req, res, next) => { try { const token = req.header("Authorization")?.replace("Bearer ", ""); if (!token) { return res.status(401).json({ message: "Access denied" }); } const decoded = jwt.verify(token, process.env.JWT_SECRET); const user = await User.findByPk(decoded.id); if (!user) { return res.status(401).json({ message: "Invalid token" }); } req.user = user; next(); } catch (error) { res.status(401).json({ message: "Invalid token" }); } }; const authorizeAdmin = (req, res, next) => { if (req.user.role !== "admin") { return res.status(403).json({ message: "Admin access required" }); } next(); }; const authorizeManager = (req, res, next) => { if (req.user.role !== "admin" && req.user.role !== "manager") { return res.status(403).json({ message: "Manager access required" }); } next(); }; module.exports = { authenticate, authorizeAdmin, authorizeManager };