@sourceloop/ctrl-plane-subscription-service
Version:
Subscription management microservice for SaaS control plane.
45 lines • 1.99 kB
JavaScript
;
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