const jwt = require('jsonwebtoken');
const User = require('../models/User');

// 保护路由中间件
const protect = async (req, res, next) => {
    try {
        let token;

        // 从请求头中获取token
        if (req.headers.authorization && req.headers.authorization.startsWith('Bearer')) {
            token = req.headers.authorization.split(' ')[1];
        }

        if (!token) {
            return res.status(401).json({ message: '未授权,请登录' });
        }

        try {
            // 验证token
            const decoded = jwt.verify(token, process.env.JWT_SECRET || 'your-secret-key');
            
            // 获取用户信息
            const user = await User.findById(decoded.id);
            if (!user) {
                return res.status(401).json({ message: '用户不存在' });
            }

            // 将用户信息添加到请求对象中
            req.user = user;
            next();
        } catch (error) {
            console.error('Token验证失败:', error);
            return res.status(401).json({ message: '无效的token' });
        }
    } catch (error) {
        console.error('认证中间件错误:', error);
        res.status(500).json({ message: '服务器错误' });
    }
};

module.exports = {
    protect
};