const jwt = require('jsonwebtoken'); if (!process.env.JWT_SECRET) { throw new Error('JWT_SECRET não definido no .env'); } function verifyToken(req, res, next) { const authHeader = req.headers['authorization'] || req.headers['Authorization']; if (!authHeader) { return res.status(403).json({ error: 'Token não fornecido' }); } const match = authHeader.match(/^Bearer\s+(.+)$/i); if (!match) { return res .status(403) .json({ error: 'Token malformado. Use "Bearer "' }); } const token = match[1]; jwt.verify(token, process.env.JWT_SECRET, (err, payload) => { if (err) { if (err.name === 'TokenExpiredError') { return res.status(403).json({ error: 'Sessão expirada' }); } return res.status(403).json({ error: 'Token inválido' }); } if (!payload?.id) { return res.status(403).json({ error: 'Token inválido' }); } req.user = payload; next(); }); } module.exports = verifyToken;