diff --git a/.changeset/fast-zebras-watch.md b/.changeset/fast-zebras-watch.md new file mode 100644 index 0000000000..4a114347e1 --- /dev/null +++ b/.changeset/fast-zebras-watch.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-devtools-backend': patch +'@backstage/plugin-devtools-common': patch +--- + +Expose permissions through the metadata endpoint. 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/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, +];