disable task list routes without permission

Signed-off-by: Stephen Glass <stephen@stephen.glass>
This commit is contained in:
Stephen Glass
2024-10-02 23:42:31 -04:00
parent 6000c69a25
commit b1de959466
3 changed files with 25 additions and 5 deletions
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-scaffolder-react': patch
'@backstage/plugin-scaffolder': patch
---
Scaffolder task routes require read permission to access. The tasks list option in the scaffolder page context menu only shows with permission.
@@ -27,6 +27,8 @@ import Edit from '@material-ui/icons/Edit';
import List from '@material-ui/icons/List';
import MoreVert from '@material-ui/icons/MoreVert';
import React, { useState } from 'react';
import { usePermission } from '@backstage/plugin-permission-react';
import { taskReadPermission } from '@backstage/plugin-scaffolder-common/alpha';
const useStyles = makeStyles(theme => ({
button: {
@@ -55,6 +57,10 @@ export function ScaffolderPageContextMenu(
const classes = useStyles();
const [anchorEl, setAnchorEl] = useState<HTMLButtonElement>();
const { allowed: canReadTasks } = usePermission({
permission: taskReadPermission,
});
if (!onEditorClicked && !onActionsClicked) {
return null;
}
@@ -116,7 +122,7 @@ export function ScaffolderPageContextMenu(
<ListItemText primary="Installed Actions" />
</MenuItem>
)}
{onTasksClicked && (
{onTasksClicked && canReadTasks && (
<MenuItem onClick={onTasksClicked}>
<ListItemIcon>
<List fontSize="small" />
@@ -59,6 +59,8 @@ import {
TemplateEditorPage,
CustomFieldsPage,
} from '../../alpha/components/TemplateEditorPage';
import { RequirePermission } from '@backstage/plugin-permission-react';
import { taskReadPermission } from '@backstage/plugin-scaffolder-common/alpha';
/**
* The Props for the Scaffolder Router
@@ -162,9 +164,11 @@ export const Router = (props: PropsWithChildren<RouterProps>) => {
<Route
path={scaffolderTaskRouteRef.path}
element={
<TaskPageComponent
TemplateOutputsComponent={TemplateOutputsComponent}
/>
<RequirePermission permission={taskReadPermission}>
<TaskPageComponent
TemplateOutputsComponent={TemplateOutputsComponent}
/>
</RequirePermission>
}
/>
<Route
@@ -199,7 +203,11 @@ export const Router = (props: PropsWithChildren<RouterProps>) => {
<Route path={actionsRouteRef.path} element={<ActionsPage />} />
<Route
path={scaffolderListTaskRouteRef.path}
element={<ListTasksPage />}
element={
<RequirePermission permission={taskReadPermission}>
<ListTasksPage />
</RequirePermission>
}
/>
<Route
path={editorRouteRef.path}