/** * Authentication Middleware * Placeholder for JWT authentication * TODO: Implement full JWT verification */ import jwt from 'jsonwebtoken'; const JWT_SECRET = process.env.JWT_SECRET || 'your-jwt-secret-here-change-in-production'; /** * Verify JWT token and attach user to request * @param {Request} req - Express request * @param {Response} res - Express response * @param {Function} next - Next middleware */ export function authenticateToken(req, res, next) { const authHeader = req.headers['authorization']; const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN if (!token) { return res.status(401).json({ error: 'Authentication required' }); } try { const user = jwt.verify(token, JWT_SECRET); req.user = user; next(); } catch (error) { return res.status(403).json({ error: 'Invalid or expired token' }); } } /** * Optional authentication - attaches user if token present * @param {Request} req - Express request * @param {Response} res - Express response * @param {Function} next - Next middleware */ export function optionalAuth(req, res, next) { const authHeader = req.headers['authorization']; const token = authHeader && authHeader.split(' ')[1]; if (token) { try { const user = jwt.verify(token, JWT_SECRET); req.user = user; } catch (error) { // Token invalid, but don't fail - continue without user console.log('Invalid token provided:', error.message); } } next(); } export default { authenticateToken, optionalAuth };