UNPKG

@sourceloop/ctrl-plane-tenant-management-service

Version:

Tenant Management microservice for SaaS control plane

128 lines 6.08 kB
"use strict"; var WebhookTenantManagementServiceComponent_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebhookTenantManagementServiceComponent = 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 loopback4_authorization_1 = require("loopback4-authorization"); const interceptors_1 = require("./interceptors"); const keys_1 = require("./keys"); const models_1 = require("./models"); const providers_1 = require("./providers"); const repositories_1 = require("./repositories"); const services_1 = require("./services"); const webhook_1 = require("./services/webhook"); const utils_1 = require("./utils"); let WebhookTenantManagementServiceComponent = WebhookTenantManagementServiceComponent_1 = class WebhookTenantManagementServiceComponent { constructor(application, notifConfig) { var _a; this.application = application; this.notifConfig = notifConfig; this.providers = {}; this.bindings = []; this.providers = {}; // Mount core component this.application.component(core_2.CoreComponent); this.application.api({ openapi: '3.0.0', info: { title: 'Tenant Management Service', version: '1.0.0', }, paths: {}, components: { securitySchemes: core_2.SECURITY_SCHEME_SPEC, }, servers: [{ url: '/' }], }); if (!((_a = this.notifConfig) === null || _a === void 0 ? void 0 : _a.useCustomSequence)) { // Mount default sequence if needed this.setupSequence(); } this.booters = [ (0, core_2.BooterBasePathMixin)(core_2.CoreModelBooter, __dirname, { interface: WebhookTenantManagementServiceComponent_1.name, }), (0, core_2.BooterBasePathMixin)(core_2.CoreControllerBooter, __dirname, { dirs: ['controllers/webhook'], extensions: ['.controller.js'], nested: true, interface: WebhookTenantManagementServiceComponent_1.name, }), ]; this.repositories = [ repositories_1.AddressRepository, repositories_1.ContactRepository, repositories_1.InvoiceRepository, repositories_1.LeadTokenRepository, repositories_1.LeadRepository, repositories_1.ResourceRepository, repositories_1.TenantRepository, repositories_1.SaasTenantRepository, repositories_1.WebhookSecretRepository, repositories_1.TenantMgmtConfigRepository, ]; this.models = [ models_1.Address, models_1.Contact, models_1.Invoice, models_1.Lead, models_1.LeadToken, models_1.Resource, models_1.Tenant, models_1.WebhookSecret, models_1.CreateLeadDTO, models_1.ProvisioningDTO, models_1.TenantOnboardDTO, models_1.VerifyLeadResponseDTO, models_1.WebhookDTO, models_1.TenantMgmtConfig, ]; this.bindings = [ core_1.Binding.bind(keys_1.WEBHOOK_VERIFIER).toProvider(interceptors_1.WebhookVerifierProvider), core_1.Binding.bind(keys_1.CALLABCK_VERIFIER).toProvider(interceptors_1.CallbackVerifierProvider), core_1.Binding.bind(keys_1.SYSTEM_USER).toProvider(providers_1.SystemUserProvider), core_1.Binding.bind(keys_1.WEBHOOK_CONFIG).to({ signatureHeaderName: utils_1.DEFAULT_SIGNATURE_HEADER, timestampHeaderName: utils_1.DEFAULT_TIMESTAMP_HEADER, timestampTolerance: utils_1.DEFAULT_TIMESTAMP_TOLERANCE, }), core_1.Binding.bind('services.NotificationService').toClass(services_1.NotificationService), (0, core_1.createServiceBinding)(webhook_1.ProvisioningWebhookHandler), (0, core_1.createServiceBinding)(services_1.WebhookHelperService), (0, core_1.createServiceBinding)(services_1.CryptoHelperService), (0, core_1.createServiceBinding)(services_1.IdpHelperService), core_1.Binding.bind(keys_1.PostWebhookHandlerServiceKey.key).toClass(services_1.PostWebhookHandlerService), ]; } /** * Setup ServiceSequence by default if no other sequnce provided * */ setupSequence() { this.application.sequence(core_2.ServiceSequence); // Mount authentication component for default sequence this.application.component(loopback4_authentication_1.AuthenticationComponent); // Mount bearer verifier component this.application.bind(core_2.BearerVerifierBindings.Config).to({ authServiceUrl: '', type: core_2.BearerVerifierType.service, }); this.application.component(core_2.BearerVerifierComponent); // Mount authorization component for default sequence this.application.bind(loopback4_authorization_1.AuthorizationBindings.CONFIG).to({ allowAlwaysPaths: ['/explorer'], }); this.application.component(loopback4_authorization_1.AuthorizationComponent); } }; exports.WebhookTenantManagementServiceComponent = WebhookTenantManagementServiceComponent; exports.WebhookTenantManagementServiceComponent = WebhookTenantManagementServiceComponent = WebhookTenantManagementServiceComponent_1 = tslib_1.__decorate([ tslib_1.__param(0, (0, core_1.inject)(core_1.CoreBindings.APPLICATION_INSTANCE)), tslib_1.__param(1, (0, core_1.inject)(keys_1.TenantManagementServiceBindings.Config, { optional: true })), tslib_1.__metadata("design:paramtypes", [rest_1.RestApplication, Object]) ], WebhookTenantManagementServiceComponent); //# sourceMappingURL=webhook.component.js.map