Spaces:
Running
Running
| import { Request, Response, NextFunction } from "express"; | |
| import jwt from "jsonwebtoken"; | |
| import dotenv from "dotenv"; | |
| dotenv.config(); | |
| export interface AuthRequest extends Request { | |
| userId?: number; | |
| userEmail?: string; | |
| file?: Express.Multer.File; | |
| files?: Express.Multer.File[] | { [fieldname: string]: Express.Multer.File[] }; | |
| } | |
| export const authenticateToken = ( | |
| req: AuthRequest, | |
| res: Response, | |
| next: NextFunction | |
| ) => { | |
| const authHeader = req.headers["authorization"]; | |
| const token = authHeader && authHeader.split(" ")[1]; | |
| if (!token) { | |
| return res.status(401).json({ success: false, error: "No token provided" }); | |
| } | |
| const jwtSecret = process.env.JWT_SECRET || "your-secret-key-change-in-production"; | |
| jwt.verify(token, jwtSecret, (err: any, decoded: any) => { | |
| if (err) { | |
| return res.status(403).json({ success: false, error: "Invalid or expired token" }); | |
| } | |
| req.userId = decoded.userId; | |
| req.userEmail = decoded.email; | |
| next(); | |
| }); | |
| }; | |