From 056e18e4bf7a180362eb8903c7c15f3ef084dfc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 3 Apr 2026 21:36:46 +0200 Subject: [PATCH] refactor(catalog-node,catalog-backend): permissions cleanup step 2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the deprecated alpha exports CatalogPermissionRuleInput, CatalogPermissionExtensionPoint, and catalogPermissionExtensionPoint from catalog-node, and remove the corresponding CatalogPermissionExtensionPointImpl, addPermissions, and addPermissionRules from catalog-backend. Custom permission rules and permissions are now registered via coreServices.permissionsRegistry. Signed-off-by: Fredrik Adelöw Made-with: Cursor --- ...alog-backend-permissions-cleanup-step-2.md | 5 +++ ...catalog-node-permissions-cleanup-step-2.md | 5 +++ .../src/service/CatalogBuilder.ts | 37 +----------------- .../src/service/CatalogPlugin.ts | 39 ------------------- plugins/catalog-node/report-alpha.api.md | 23 ----------- plugins/catalog-node/src/alpha.ts | 3 -- plugins/catalog-node/src/extensions.ts | 36 ----------------- 7 files changed, 12 insertions(+), 136 deletions(-) create mode 100644 .changeset/catalog-backend-permissions-cleanup-step-2.md create mode 100644 .changeset/catalog-node-permissions-cleanup-step-2.md diff --git a/.changeset/catalog-backend-permissions-cleanup-step-2.md b/.changeset/catalog-backend-permissions-cleanup-step-2.md new file mode 100644 index 0000000000..7ecf6e0d30 --- /dev/null +++ b/.changeset/catalog-backend-permissions-cleanup-step-2.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Removed the internal `addPermissions` and `addPermissionRules` methods from `CatalogBuilder`, and removed the `catalogPermissionExtensionPoint` wiring from `CatalogPlugin`. Custom permission rules and permissions should be registered via `coreServices.permissionsRegistry` directly. diff --git a/.changeset/catalog-node-permissions-cleanup-step-2.md b/.changeset/catalog-node-permissions-cleanup-step-2.md new file mode 100644 index 0000000000..bee3ff765d --- /dev/null +++ b/.changeset/catalog-node-permissions-cleanup-step-2.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-node': minor +--- + +**BREAKING ALPHA**: Removed the deprecated `CatalogPermissionRuleInput`, `CatalogPermissionExtensionPoint`, and `catalogPermissionExtensionPoint` exports. Use `coreServices.permissionsRegistry` directly to register catalog entity permission rules and permissions. diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index 190969d113..9710f6d00c 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -52,7 +52,6 @@ import { ScmLocationAnalyzer, } from '@backstage/plugin-catalog-node'; import { EventsService } from '@backstage/plugin-events-node'; -import { Permission } from '@backstage/plugin-permission-common'; import { createConditionTransformer } from '@backstage/plugin-permission-node'; import { durationToMilliseconds } from '@backstage/types'; import { DefaultCatalogDatabase } from '../database/DefaultCatalogDatabase'; @@ -101,7 +100,6 @@ import { DefaultRefreshService } from './DefaultRefreshService'; import { entitiesResponseToObjects } from './response'; import { catalogEntityPermissionResourceRef, - CatalogPermissionRuleInput, CatalogScmEventsService, } from '@backstage/plugin-catalog-node/alpha'; import { filterAndSortProcessors, filterProviders } from './util'; @@ -167,8 +165,6 @@ export class CatalogBuilder { }) => Promise | void; private processingInterval: ProcessingIntervalFunction; private locationAnalyzer: LocationAnalyzer | undefined = undefined; - private readonly permissions: Permission[]; - private readonly permissionRules: CatalogPermissionRuleInput[]; private allowedLocationType: string[]; /** @@ -189,8 +185,6 @@ export class CatalogBuilder { this.locationAnalyzers = []; this.processorsReplace = false; this.parser = undefined; - this.permissions = [...catalogPermissions]; - this.permissionRules = Object.values(catalogPermissionRules); this.allowedLocationType = ['url']; this.processingInterval = CatalogBuilder.getDefaultProcessingInterval( @@ -365,33 +359,6 @@ export class CatalogBuilder { return this; } - /** - * Adds additional permissions. See - * {@link @backstage/plugin-permission-node#Permission}. - * - * @param permissions - Additional permissions - */ - addPermissions(...permissions: Array>) { - this.permissions.push(...permissions.flat()); - return this; - } - - /** - * Adds additional permission rules. Permission rules are used to evaluate - * catalog resources against queries. See - * {@link @backstage/plugin-permission-node#PermissionRule}. - * - * @param permissionRules - Additional permission rules - */ - addPermissionRules( - ...permissionRules: Array< - CatalogPermissionRuleInput | Array - > - ) { - this.permissionRules.push(...permissionRules.flat()); - return this; - } - /** * Sets up the allowed location types from being registered via the location service. * @@ -500,8 +467,8 @@ export class CatalogBuilder { permissionsRegistry.addResourceType({ resourceRef: catalogEntityPermissionResourceRef, getResources, - permissions: this.permissions, - rules: this.permissionRules, + permissions: [...catalogPermissions], + rules: Object.values(catalogPermissionRules), }); const scmEventHandlingConfig = readScmEventHandlingConfig(config); diff --git a/plugins/catalog-backend/src/service/CatalogPlugin.ts b/plugins/catalog-backend/src/service/CatalogPlugin.ts index 915dd80dd9..76fdf4eec5 100644 --- a/plugins/catalog-backend/src/service/CatalogPlugin.ts +++ b/plugins/catalog-backend/src/service/CatalogPlugin.ts @@ -36,13 +36,9 @@ import { import { CatalogModelExtensionPoint, catalogModelExtensionPoint, - CatalogPermissionExtensionPoint, - catalogPermissionExtensionPoint, - CatalogPermissionRuleInput, catalogScmEventsServiceRef, } from '@backstage/plugin-catalog-node/alpha'; import { eventsServiceRef } from '@backstage/plugin-events-node'; -import { Permission } from '@backstage/plugin-permission-common'; import { merge } from 'lodash'; import { CatalogBuilder } from './CatalogBuilder'; import { @@ -66,33 +62,6 @@ class CatalogLocationsExtensionPointImpl } } -class CatalogPermissionExtensionPointImpl - implements CatalogPermissionExtensionPoint -{ - #permissions = new Array(); - #permissionRules = new Array(); - - addPermissions(...permission: Array>): void { - this.#permissions.push(...permission.flat()); - } - - addPermissionRules( - ...rules: Array< - CatalogPermissionRuleInput | Array - > - ): void { - this.#permissionRules.push(...rules.flat()); - } - - get permissions() { - return this.#permissions; - } - - get permissionRules() { - return this.#permissionRules; - } -} - class CatalogModelExtensionPointImpl implements CatalogModelExtensionPoint { #fieldValidators: Partial = {}; @@ -189,12 +158,6 @@ export const catalogPlugin = createBackendPlugin({ }, }); - const permissionExtensions = new CatalogPermissionExtensionPointImpl(); - env.registerExtensionPoint( - catalogPermissionExtensionPoint, - permissionExtensions, - ); - const modelExtensions = new CatalogModelExtensionPointImpl(); env.registerExtensionPoint(catalogModelExtensionPoint, modelExtensions); @@ -282,8 +245,6 @@ export const catalogPlugin = createBackendPlugin({ } else { builder.addLocationAnalyzers(...scmLocationAnalyzers); } - builder.addPermissions(...permissionExtensions.permissions); - builder.addPermissionRules(...permissionExtensions.permissionRules); builder.setFieldFormatValidators(modelExtensions.fieldValidators); if (locationTypeExtensions.allowedLocationTypes) { diff --git a/plugins/catalog-node/report-alpha.api.md b/plugins/catalog-node/report-alpha.api.md index 0598834c67..78922b1141 100644 --- a/plugins/catalog-node/report-alpha.api.md +++ b/plugins/catalog-node/report-alpha.api.md @@ -11,10 +11,7 @@ import { CatalogProcessorParser } from '@backstage/plugin-catalog-node'; import { EntitiesSearchFilter } from '@backstage/plugin-catalog-node'; import { Entity } from '@backstage/catalog-model'; import { ExtensionPoint } from '@backstage/backend-plugin-api'; -import { Permission } from '@backstage/plugin-permission-common'; import { PermissionResourceRef } from '@backstage/plugin-permission-node'; -import { PermissionRule } from '@backstage/plugin-permission-node'; -import { PermissionRuleParams } from '@backstage/plugin-permission-common'; import { ServiceRef } from '@backstage/backend-plugin-api'; import { Validators } from '@backstage/catalog-model'; @@ -47,26 +44,6 @@ export interface CatalogModelExtensionPoint { // @alpha (undocumented) export const catalogModelExtensionPoint: ExtensionPoint; -// @alpha @deprecated (undocumented) -export interface CatalogPermissionExtensionPoint { - // (undocumented) - addPermissionRules( - ...rules: Array< - CatalogPermissionRuleInput | Array - > - ): void; - // (undocumented) - addPermissions(...permissions: Array>): void; -} - -// @alpha @deprecated (undocumented) -export const catalogPermissionExtensionPoint: ExtensionPoint; - -// @alpha @deprecated (undocumented) -export type CatalogPermissionRuleInput< - TParams extends PermissionRuleParams = PermissionRuleParams, -> = PermissionRule; - // @alpha @deprecated (undocumented) export type CatalogProcessingExtensionPoint = CatalogProcessingExtensionPoint_2; diff --git a/plugins/catalog-node/src/alpha.ts b/plugins/catalog-node/src/alpha.ts index 8ed55f87ce..3c835fcd97 100644 --- a/plugins/catalog-node/src/alpha.ts +++ b/plugins/catalog-node/src/alpha.ts @@ -100,8 +100,5 @@ export const catalogAnalysisExtensionPoint = _catalogAnalysisExtensionPoint; export type { CatalogModelExtensionPoint } from './extensions'; export { catalogModelExtensionPoint } from './extensions'; -export type { CatalogPermissionRuleInput } from './extensions'; -export type { CatalogPermissionExtensionPoint } from './extensions'; -export { catalogPermissionExtensionPoint } from './extensions'; export * from './scmEvents'; diff --git a/plugins/catalog-node/src/extensions.ts b/plugins/catalog-node/src/extensions.ts index 4fe4bfd679..57150775a4 100644 --- a/plugins/catalog-node/src/extensions.ts +++ b/plugins/catalog-node/src/extensions.ts @@ -19,17 +19,11 @@ import { Entity, Validators } from '@backstage/catalog-model'; import { CatalogProcessor, CatalogProcessorParser, - EntitiesSearchFilter, EntityProvider, PlaceholderResolver, LocationAnalyzer, ScmLocationAnalyzer, } from '@backstage/plugin-catalog-node'; -import { - Permission, - PermissionRuleParams, -} from '@backstage/plugin-permission-common'; -import { PermissionRule } from '@backstage/plugin-permission-node'; /** * @public @@ -163,33 +157,3 @@ export const catalogModelExtensionPoint = createExtensionPoint({ id: 'catalog.model', }); - -/** - * @alpha - * @deprecated Use the `coreServices.permissionsRegistry` instead. - */ -export type CatalogPermissionRuleInput< - TParams extends PermissionRuleParams = PermissionRuleParams, -> = PermissionRule; - -/** - * @alpha - * @deprecated Use the `coreServices.permissionsRegistry` instead. - */ -export interface CatalogPermissionExtensionPoint { - addPermissions(...permissions: Array>): void; - addPermissionRules( - ...rules: Array< - CatalogPermissionRuleInput | Array - > - ): void; -} - -/** - * @alpha - * @deprecated Use the `coreServices.permissionsRegistry` instead. - */ -export const catalogPermissionExtensionPoint = - createExtensionPoint({ - id: 'catalog.permission', - });