refactor(catalog-node,catalog-backend): permissions cleanup step 2
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 <freben@spotify.com> Made-with: Cursor
This commit is contained in:
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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> | 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<Permission | Array<Permission>>) {
|
||||
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<CatalogPermissionRuleInput>
|
||||
>
|
||||
) {
|
||||
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);
|
||||
|
||||
@@ -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<Permission>();
|
||||
#permissionRules = new Array<CatalogPermissionRuleInput>();
|
||||
|
||||
addPermissions(...permission: Array<Permission | Array<Permission>>): void {
|
||||
this.#permissions.push(...permission.flat());
|
||||
}
|
||||
|
||||
addPermissionRules(
|
||||
...rules: Array<
|
||||
CatalogPermissionRuleInput | Array<CatalogPermissionRuleInput>
|
||||
>
|
||||
): void {
|
||||
this.#permissionRules.push(...rules.flat());
|
||||
}
|
||||
|
||||
get permissions() {
|
||||
return this.#permissions;
|
||||
}
|
||||
|
||||
get permissionRules() {
|
||||
return this.#permissionRules;
|
||||
}
|
||||
}
|
||||
|
||||
class CatalogModelExtensionPointImpl implements CatalogModelExtensionPoint {
|
||||
#fieldValidators: Partial<Validators> = {};
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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<CatalogModelExtensionPoint>;
|
||||
|
||||
// @alpha @deprecated (undocumented)
|
||||
export interface CatalogPermissionExtensionPoint {
|
||||
// (undocumented)
|
||||
addPermissionRules(
|
||||
...rules: Array<
|
||||
CatalogPermissionRuleInput | Array<CatalogPermissionRuleInput>
|
||||
>
|
||||
): void;
|
||||
// (undocumented)
|
||||
addPermissions(...permissions: Array<Permission | Array<Permission>>): void;
|
||||
}
|
||||
|
||||
// @alpha @deprecated (undocumented)
|
||||
export const catalogPermissionExtensionPoint: ExtensionPoint<CatalogPermissionExtensionPoint>;
|
||||
|
||||
// @alpha @deprecated (undocumented)
|
||||
export type CatalogPermissionRuleInput<
|
||||
TParams extends PermissionRuleParams = PermissionRuleParams,
|
||||
> = PermissionRule<Entity, EntitiesSearchFilter, 'catalog-entity', TParams>;
|
||||
|
||||
// @alpha @deprecated (undocumented)
|
||||
export type CatalogProcessingExtensionPoint = CatalogProcessingExtensionPoint_2;
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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<CatalogModelExtensionPoint>({
|
||||
id: 'catalog.model',
|
||||
});
|
||||
|
||||
/**
|
||||
* @alpha
|
||||
* @deprecated Use the `coreServices.permissionsRegistry` instead.
|
||||
*/
|
||||
export type CatalogPermissionRuleInput<
|
||||
TParams extends PermissionRuleParams = PermissionRuleParams,
|
||||
> = PermissionRule<Entity, EntitiesSearchFilter, 'catalog-entity', TParams>;
|
||||
|
||||
/**
|
||||
* @alpha
|
||||
* @deprecated Use the `coreServices.permissionsRegistry` instead.
|
||||
*/
|
||||
export interface CatalogPermissionExtensionPoint {
|
||||
addPermissions(...permissions: Array<Permission | Array<Permission>>): void;
|
||||
addPermissionRules(
|
||||
...rules: Array<
|
||||
CatalogPermissionRuleInput | Array<CatalogPermissionRuleInput>
|
||||
>
|
||||
): void;
|
||||
}
|
||||
|
||||
/**
|
||||
* @alpha
|
||||
* @deprecated Use the `coreServices.permissionsRegistry` instead.
|
||||
*/
|
||||
export const catalogPermissionExtensionPoint =
|
||||
createExtensionPoint<CatalogPermissionExtensionPoint>({
|
||||
id: 'catalog.permission',
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user