nexusbert's picture
push all other accessories
bafd3be
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();
});
};