"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
// import ApiToken from '../modules/apiToken/apiToken.model';
const isAuthMiddleware = async (req, res, next) => {
    const authHeader = req.get('Authorization');
    if (!authHeader) {
        return res.status(401).json({ message: 'Não autorizado' });
    }
    const [tipo, token] = authHeader.split(' ');
    // Se o tipo for Token, valida o token fixo
    if (tipo === 'Token') {
        // const apiToken = await ApiToken.findOne({ token: token, status: 'Activo' });
        // if (!apiToken) {
        //   const error: IError = new Error('Token de API inválido');
        //   error.statusCode = 401;
        //   next(error);
        // }
        // req.token = apiToken;
    }
    // Se for Bearer, valida o JWT
    else if (tipo === 'Bearer') {
        if (token !== process.env.SERVER_API_TOKEN) {
            try {
                jsonwebtoken_1.default.verify(token, process.env.JWT_SECRET);
            }
            catch (error) {
                next(error);
            }
        }
    }
    else {
        const error = new Error(`Tipo de autenticação inválido: ${tipo}`);
        error.statusCode = 401;
        next(error);
    }
    next();
};
exports.default = isAuthMiddleware;
