auth.js 705 B

1234567891011121314151617181920212223242526272829
  1. // middlewares/auth.js
  2. const jwt = require('jsonwebtoken');
  3. function authenticate(req, res, next) {
  4. const token = req.header('Authorization')?.replace('Bearer ', '');
  5. if (!token) {
  6. return res.status(401).json({ error: 'Access denied. No token provided.' });
  7. }
  8. try {
  9. const decoded = jwt.verify(token, process.env.JWT_SECRET);
  10. req.user = decoded;
  11. next();
  12. } catch (err) {
  13. res.status(400).json({ error: 'Invalid token.' });
  14. }
  15. }
  16. function authorize(roles = []) {
  17. return (req, res, next) => {
  18. if (!roles.includes(req.user.role)) {
  19. return res.status(403).json({ error: 'Access denied.' });
  20. }
  21. next();
  22. };
  23. }
  24. module.exports = { authenticate, authorize };