disable task list routes without permission
Signed-off-by: Stephen Glass <stephen@stephen.glass>
This commit is contained in:
@@ -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.
|
||||
+7
-1
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user