Files
clube67_newwhats.local/newwhats.clube67.com/newwhats.local/plugins/ext-api/index.js
T
VPS 4 Deploy Agent dbb4da8220 feat(ext-api): chave mestra + x-nw-email (middleware REST + WS bridge)
Satélite confiável acessa a conta de qualquer email via EXT_MASTER_KEY:
- apikey-auth: helpers isMasterKey/resolveMasterEmail resolvem o tenant pelo
  User.email; middleware REST refatorado para usá-los.
- ws-bridge: handshake do /api/ext/v1/stream trata a chave mestra + x-nw-email
  (antes só tabela apiKey → o túnel WS tomava 401).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 20:55:10 +02:00

36 lines
2.2 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const apikey_auth_1 = require("./backend/apikey-auth");
const routes_1 = require("./backend/routes");
const ws_bridge_1 = require("./backend/ws-bridge");
const webhook_dispatcher_1 = require("./backend/webhook-dispatcher");
const manifest_json_1 = __importDefault(require("./manifest.json"));
const plugin = {
manifest: manifest_json_1.default,
async activate(ctx) {
const { app, prisma, db, config, hooks, logger, httpServer, io } = ctx;
// ── REST ────────────────────────────────────────────────────────────────
const manager = globalThis.__whatsAppManager;
if (!manager) {
logger.warn('[ext-api] WhatsAppConnectionManager não disponível via globalThis.__whatsAppManager — endpoints de send desativados');
}
const authMiddleware = (0, apikey_auth_1.buildApiKeyAuth)(prisma);
const extRouter = (0, routes_1.buildExtRoutes)(prisma, manager, db, config, hooks, io);
app.use('/api/ext/v1', authMiddleware, extRouter);
logger.info('[ext-api] Rotas REST registradas em /api/ext/v1');
// ── WS Bridge ───────────────────────────────────────────────────────────
(0, ws_bridge_1.buildWsBridge)(httpServer, prisma, hooks);
logger.info('[ext-api] WS bridge ativo em /api/ext/v1/stream (x-nw-key auth)');
// ── Webhook Dispatcher ──────────────────────────────────────────────────
(0, webhook_dispatcher_1.buildWebhookDispatcher)(prisma, hooks);
logger.info('[ext-api] Webhook dispatcher ativo');
},
async deactivate(ctx) {
ctx.logger.warn('[ext-api] Desativado. Reinicie o servidor para remover as rotas.');
},
};
exports.default = plugin;
//# sourceMappingURL=index.js.map