const jwt = require('jsonwebtoken');

const authenticateDevice = (req, res, next) => {
    // 1. Obtener Token del Header 'Authorization: Bearer <token>'
    const authHeader = req.headers.authorization;
    const token = authHeader && authHeader.split(' ')[1]; // Ignorar 'Bearer '

    if (!token) {
        return res.status(401).json({ success: false, error: 'MISSING_TOKEN', message: 'Token requerido' });
    }

    try {
        // 2. Verificar Token usa la misma clave secreta que authController
        const decoded = jwt.verify(token, process.env.JWT_SECRET);
        
        // 3. Inyectar datos del usuario verificado al request
        // authController firma: { id, dni, id_proveedor }
        req.user = decoded; 
        
        next();
    } catch (err) {
        console.warn(`[Auth] Token inválido desde IP: ${req.ip}`);
        return res.status(403).json({ success: false, error: 'INVALID_TOKEN', message: 'Token inválido o expirado' });
    }
};

module.exports = authenticateDevice;
