Merge pull request #30036 from valentingregoire/patch-2

Policies Docs updates
This commit is contained in:
Andre Wanlin
2025-06-10 08:23:54 -05:00
committed by GitHub
2 changed files with 19 additions and 8 deletions
+6 -7
View File
@@ -4,6 +4,10 @@ title: Frontend Integration
description: How to place your Backstage frontend components behind authorization
---
:::info
Starting with a [fresh Backstage installation](https://backstage.io/docs/getting-started/), the code example below is already implemented, so there are no actual code changes required.
:::
Now that we understand how to [author a permission policy](./writing-a-policy.md), let's consider cases where we'll need to supplement our policy with authorization checks on the frontend.
In most cases, actual functionality that live within various plugins will already have been placed behind authorization by the plugin authors. The permission backend will use your permission policy to return an authorization result, and the plugin frontend will correspondingly show/hide/disable the relevant UI component.
@@ -13,25 +17,20 @@ However, there are some cases where the integrator needs to supplement the polic
If your Backstage permission policy may return a `DENY` for users requesting the `catalogEntityCreatePermission`, it may make sense, for example, to remove access to the `/catalog-import` page entirely:
```tsx title="packages/app/src/App.tsx"
/* highlight-add-start */
import { RequirePermission } from '@backstage/plugin-permission-react';
import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common';
/* highlight-add-end */
import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha';
const routes = (
<FlatRoutes>
{/* highlight-remove-next-line */}
<Route path="/catalog-import" element={<CatalogImportPage />} />
{/* highlight-add-start */}
<Route
path="/catalog-import"
element={
{/* highlight-next-line */}
<RequirePermission permission={catalogEntityCreatePermission}>
<CatalogImportPage />
</RequirePermission>
}
/>
{/* highlight-add-end */}
{/* ... */}
</FlatRoutes>
);
+13 -1
View File
@@ -92,6 +92,13 @@ import {
catalogEntityDeletePermission,
} from '@backstage/plugin-catalog-common/alpha';
/* highlight-add-end */
import {
PermissionPolicy,
PolicyQuery,
/* highlight-add-next-line */
PolicyQueryUser,
} from '@backstage/plugin-permission-node';
class CustomPermissionPolicy implements PermissionPolicy {
/* highlight-remove-next-line */
@@ -143,8 +150,8 @@ import {
PolicyDecision,
/* highlight-remove-next-line */
isPermission,
isResourcePermission,
/* highlight-add-next-line */
isResourcePermission,
} from '@backstage/plugin-permission-common';
import {
catalogConditions,
@@ -155,6 +162,11 @@ import {
catalogEntityDeletePermission,
} from '@backstage/plugin-catalog-common/alpha';
/* highlight-remove-end */
import {
PermissionPolicy,
PolicyQuery,
PolicyQueryUser,
} from '@backstage/plugin-permission-node';
class CustomPermissionPolicy implements PermissionPolicy {
async handle(