import type { Request, Response, NextFunction } from "express";
import jwt from "jsonwebtoken";

const JWT_SECRET = process.env.JWT_SECRET;
if (!JWT_SECRET) throw new Error("Falta JWT_SECRET en .env");

export interface AuthRequest extends Request {
    user?: any; // Puedes tiparlo mejor según tu payload
}

export const verifyToken = (req: AuthRequest, res: Response, next: NextFunction) => {
    const authHeader = req.headers.authorization;
    if (!authHeader || !authHeader.startsWith("Bearer ")) {
        return res.status(401).json({ error: "Token no proporcionado" });
    }

    const token = authHeader.split(" ")[1];

    try {
        const decoded = jwt.verify(`${token}`, JWT_SECRET);
        req.user = decoded; // Puedes guardar el payload en req.user
        next();
    } catch (err) {
        return res.status(401).json({ error: "Token inválido" });
    }
};
