UNPKG

@sourceloop/ctrl-plane-subscription-service

Version:

Subscription management microservice for SaaS control plane.

45 lines 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebhookVerifierProvider = void 0; const tslib_1 = require("tslib"); const core_1 = require("@loopback/core"); const rest_1 = require("@loopback/rest"); const core_2 = require("@sourceloop/core"); const loopback4_authentication_1 = require("loopback4-authentication"); const keys_1 = require("../keys"); let WebhookVerifierProvider = class WebhookVerifierProvider { constructor(logger, setCurrentUser, systemUser) { this.logger = logger; this.setCurrentUser = setCurrentUser; this.systemUser = systemUser; } value() { return this.intercept.bind(this); } async intercept(invocationCtx, next) { const { request } = invocationCtx.parent; const authHeader = request.headers['authorization']; const username = process.env.WEBHOOK_USERNAME; const password = process.env.WEBHOOK_PASSWORD; const expectedAuthHeader = 'Basic ' + Buffer.from(`${username}:${password}`).toString('base64'); try { if (!authHeader || authHeader !== expectedAuthHeader) { throw new rest_1.HttpErrors.Unauthorized('Invalid authorization.'); } } catch (e) { this.logger.error(e); throw new rest_1.HttpErrors.Unauthorized(); } this.setCurrentUser(this.systemUser); return next(); } }; exports.WebhookVerifierProvider = WebhookVerifierProvider; exports.WebhookVerifierProvider = WebhookVerifierProvider = tslib_1.__decorate([ tslib_1.__param(0, (0, core_1.inject)(core_2.LOGGER.LOGGER_INJECT)), tslib_1.__param(1, core_1.inject.setter(loopback4_authentication_1.AuthenticationBindings.CURRENT_USER)), tslib_1.__param(2, (0, core_1.inject)(keys_1.SYSTEM_USER)), tslib_1.__metadata("design:paramtypes", [Object, Function, Object]) ], WebhookVerifierProvider); //# sourceMappingURL=webhook-verifier.interceptor.js.map