diff --git a/.changeset/fast-zebras-watch.md b/.changeset/fast-zebras-watch.md new file mode 100644 index 0000000000..7466565e79 --- /dev/null +++ b/.changeset/fast-zebras-watch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-devtools-backend': patch +--- + +Expose permissions through the metadata endpoint. diff --git a/.changeset/plenty-roses-raise.md b/.changeset/plenty-roses-raise.md new file mode 100644 index 0000000000..71605705e3 --- /dev/null +++ b/.changeset/plenty-roses-raise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-devtools-common': patch +--- + +Export the list of permissions diff --git a/plugins/devtools-backend/src/service/router.ts b/plugins/devtools-backend/src/service/router.ts index a346ad3183..fbeeb5af84 100644 --- a/plugins/devtools-backend/src/service/router.ts +++ b/plugins/devtools-backend/src/service/router.ts @@ -21,6 +21,7 @@ import { devToolsConfigReadPermission, devToolsExternalDependenciesReadPermission, devToolsInfoReadPermission, + devToolsPermissions, } from '@backstage/plugin-devtools-common'; import { Config } from '@backstage/config'; @@ -31,6 +32,7 @@ import Router from 'express-promise-router'; import { errorHandler } from '@backstage/backend-common'; import express from 'express'; import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node'; +import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; /** @public */ export interface RouterOptions { @@ -51,6 +53,11 @@ export async function createRouter( const router = Router(); router.use(express.json()); + router.use( + createPermissionIntegrationRouter({ + permissions: devToolsPermissions, + }), + ); router.get('/health', (_req, res) => { res.status(200).json({ status: 'ok' }); diff --git a/plugins/devtools-common/api-report.md b/plugins/devtools-common/api-report.md index 7e38ff05b0..6594b0d8a4 100644 --- a/plugins/devtools-common/api-report.md +++ b/plugins/devtools-common/api-report.md @@ -40,6 +40,9 @@ export type DevToolsInfo = { // @public (undocumented) export const devToolsInfoReadPermission: BasicPermission; +// @public +export const devToolsPermissions: BasicPermission[]; + // @public (undocumented) export type Endpoint = { name: string; diff --git a/plugins/devtools-common/src/permissions.ts b/plugins/devtools-common/src/permissions.ts index ae62cfdc19..ba464f7d80 100644 --- a/plugins/devtools-common/src/permissions.ts +++ b/plugins/devtools-common/src/permissions.ts @@ -47,3 +47,15 @@ export const devToolsExternalDependenciesReadPermission = createPermission({ name: 'devtools.external-dependencies', attributes: { action: 'read' }, }); + +/** + * List of all Devtools permissions + * + * @public + */ +export const devToolsPermissions = [ + devToolsAdministerPermission, + devToolsInfoReadPermission, + devToolsConfigReadPermission, + devToolsExternalDependenciesReadPermission, +];