UNPKG

@backstage-community/plugin-rbac-backend

Version:
91 lines (87 loc) 2.76 kB
'use strict'; var backendPluginApi = require('@backstage/backend-plugin-api'); var pluginRbacNode = require('@backstage-community/plugin-rbac-node'); var alpha = require('@backstage/plugin-permission-node/alpha'); var policyBuilder = require('./service/policy-builder.cjs.js'); const rbacPlugin = backendPluginApi.createBackendModule({ pluginId: "permission", moduleId: "rbac", register(env) { const pluginIdProviderExtensionPointImpl = new class PluginIdProviderImpl { pluginIdProviders = []; addPluginIdProvider(pluginIdProvider) { this.pluginIdProviders.push(pluginIdProvider); } }(); env.registerExtensionPoint( pluginRbacNode.pluginIdProviderExtensionPoint, pluginIdProviderExtensionPointImpl ); const rbacProviders = new Array(); env.registerExtensionPoint(pluginRbacNode.rbacProviderExtensionPoint, { addRBACProvider(...providers) { rbacProviders.push(...providers.flat()); } }); env.registerInit({ deps: { http: backendPluginApi.coreServices.httpRouter, config: backendPluginApi.coreServices.rootConfig, logger: backendPluginApi.coreServices.logger, discovery: backendPluginApi.coreServices.discovery, permissions: backendPluginApi.coreServices.permissions, auth: backendPluginApi.coreServices.auth, httpAuth: backendPluginApi.coreServices.httpAuth, auditor: backendPluginApi.coreServices.auditor, userInfo: backendPluginApi.coreServices.userInfo, lifecycle: backendPluginApi.coreServices.lifecycle, permissionsRegistry: backendPluginApi.coreServices.permissionsRegistry, policy: alpha.policyExtensionPoint }, async init({ http, config, logger, discovery, permissions, auth, userInfo, httpAuth, auditor, lifecycle, permissionsRegistry, policy }) { http.use( await policyBuilder.PolicyBuilder.build( { config, logger, discovery, permissions, auth, userInfo, httpAuth, auditor, lifecycle, permissionsRegistry, policy }, { getPluginIds: () => Array.from( new Set( pluginIdProviderExtensionPointImpl.pluginIdProviders.flatMap( (p) => p.getPluginIds() ) ) ) }, rbacProviders ) ); } }); } }); exports.rbacPlugin = rbacPlugin; //# sourceMappingURL=plugin.cjs.js.map