@backstage-community/plugin-rbac-backend
Version:
91 lines (87 loc) • 2.76 kB
JavaScript
;
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