import jwt from 'jsonwebtoken';

/**
 * Middleware zum Schützen privater API-Routen.
 * Prüft, ob ein gültiges Access_Token im Aithorization-Headder mitgesendet wurde.
 */
export const requireAuth = (req, res, next) => {
    // Der Standard für Tokens ist der Header: "Authorization: Bearer <token>"
    const authHeader = req.headers.authorization;

    if (!authHeader || !authHeader.startsWith('Bearer ')) {
        return res.status(401).json({
            error: 'ERR_UNAUTHORIZED_NO_TOKEN'
        });
    }

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

    try {
        const decoded = jwt.verify(token, process.env.JWT_ACCESS_SECRET);

        req.user = decoded;

        next();
    } catch (error) {
        return res.status(401).json({
            error: 'ERR_UNAUTHORIZED_INVALID_TOKEN'
        });
    }
};