UNPKG

@roadiehq/catalog-backend-module-okta

Version:

A set of Backstage catalog providers for Okta

70 lines (66 loc) 2.39 kB
'use strict'; var backendPluginApi = require('@backstage/backend-plugin-api'); var alpha = require('@backstage/plugin-catalog-node/alpha'); var extensions = require('./extensions.cjs.js'); var userEntityFromOktaUser = require('./providers/userEntityFromOktaUser.cjs.js'); const oktaCatalogBackendModule = backendPluginApi.createBackendModule({ pluginId: "catalog", moduleId: "okta-entity-provider", register(env) { let entityFactory = null; env.registerExtensionPoint( extensions.oktaCatalogBackendEntityProviderFactoryExtensionPoint, { setEntityProviderFactory(factory) { if (entityFactory) { throw new Error("Entity factory can only be set once"); } entityFactory = factory; } } ); let userTransformer = null; env.registerExtensionPoint( extensions.oktaCatalogBackendUserTransformerExtensionPoint, { setUserTransformer(transformer) { if (userTransformer) { throw new Error("UserTransformer can only be set once"); } userTransformer = transformer; } } ); env.registerInit({ deps: { catalog: alpha.catalogProcessingExtensionPoint, config: backendPluginApi.coreServices.rootConfig, logger: backendPluginApi.coreServices.logger, scheduler: backendPluginApi.coreServices.scheduler }, async init({ catalog, config, scheduler }) { if (!entityFactory) { throw new Error("No entity factory has been provided"); } userTransformer ??= userEntityFromOktaUser.userEntityFromOktaUser; const oktaConfigs = config.getConfigArray("catalog.providers.okta"); for (const oktaConfig of oktaConfigs) { const provider = entityFactory(oktaConfig); catalog.addEntityProvider(provider); const schedule = backendPluginApi.readSchedulerServiceTaskScheduleDefinitionFromConfig( oktaConfig.getConfig("schedule") ); await scheduler.scheduleTask({ id: `okta-entity-provider-${provider.getProviderName()}`, fn: async () => { await provider.run(); }, ...schedule }); } } }); } }); exports.oktaCatalogBackendModule = oktaCatalogBackendModule; //# sourceMappingURL=module.cjs.js.map