diff --git a/.changeset/long-lobsters-brake.md b/.changeset/long-lobsters-brake.md new file mode 100644 index 0000000000..01ae3f4e93 --- /dev/null +++ b/.changeset/long-lobsters-brake.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins-common': patch +--- + +Export list of permissions diff --git a/.changeset/lucky-keys-behave.md b/.changeset/lucky-keys-behave.md new file mode 100644 index 0000000000..a223f83fa6 --- /dev/null +++ b/.changeset/lucky-keys-behave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins-backend': patch +--- + +Expose permissions through the metadata endpoint. diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index f45908c04e..e9630bfb45 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -32,6 +32,7 @@ "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-jenkins-common": "workspace:^", "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-node": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", diff --git a/plugins/jenkins-backend/src/service/router.ts b/plugins/jenkins-backend/src/service/router.ts index 484bfa273f..eea067fab6 100644 --- a/plugins/jenkins-backend/src/service/router.ts +++ b/plugins/jenkins-backend/src/service/router.ts @@ -28,6 +28,8 @@ import { import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node'; import { stringifyEntityRef } from '@backstage/catalog-model'; import { stringifyError } from '@backstage/errors'; +import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; +import { jenkinsPermissions } from '@backstage/plugin-jenkins-common'; /** @public */ export interface RouterOptions { @@ -58,6 +60,11 @@ export async function createRouter( const router = Router(); router.use(express.json()); + router.use( + createPermissionIntegrationRouter({ + permissions: jenkinsPermissions, + }), + ); router.get( '/v1/entity/:namespace/:kind/:name/projects', diff --git a/plugins/jenkins-common/api-report.md b/plugins/jenkins-common/api-report.md index 771161e1cb..4db5a6c938 100644 --- a/plugins/jenkins-common/api-report.md +++ b/plugins/jenkins-common/api-report.md @@ -8,5 +8,8 @@ import { ResourcePermission } from '@backstage/plugin-permission-common'; // @public export const jenkinsExecutePermission: ResourcePermission<'catalog-entity'>; +// @public +export const jenkinsPermissions: ResourcePermission<'catalog-entity'>[]; + // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/jenkins-common/src/permissions.ts b/plugins/jenkins-common/src/permissions.ts index 311bf993cc..aba79b8493 100644 --- a/plugins/jenkins-common/src/permissions.ts +++ b/plugins/jenkins-common/src/permissions.ts @@ -28,3 +28,10 @@ export const jenkinsExecutePermission = createPermission({ }, resourceType: RESOURCE_TYPE_CATALOG_ENTITY, }); + +/** + * List of all Jenkins permissions + * + * @public + */ +export const jenkinsPermissions = [jenkinsExecutePermission]; diff --git a/yarn.lock b/yarn.lock index 66b27be455..be46f8af6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7162,6 +7162,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-jenkins-common": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-node": "workspace:^" "@types/express": ^4.17.6 "@types/jenkins": ^0.23.1 "@types/supertest": ^2.0.8