import { Request, Response, NextFunction } from 'express'; import { verifyToken } from '@app/lib/jwt'; export interface AuthenticatedRequest extends Request { userId?: number; userEmail?: string; } export const requireAuth = (req: AuthenticatedRequest, res: Response, next: NextFunction) => { try { const authHeader = req.headers.authorization; if (!authHeader || !authHeader.startsWith('Bearer ')) { return res.status(401).json({ error: 'Unauthorized: No token provided' }); } const token = authHeader.substring(7); const payload = verifyToken(token); req.userId = payload.userId; req.userEmail = payload.email; next(); } catch (err: any) { if (err.name === 'JsonWebTokenError') { return res.status(401).json({ error: 'Unauthorized: Invalid token' }); } if (err.name === 'TokenExpiredError') { return res.status(401).json({ error: 'Unauthorized: Token expired' }); } next(err); } };