Integrate catalog-import with permissions

Signed-off-by: Joon Park <joonp@spotify.com>
This commit is contained in:
Joon Park
2022-01-19 17:06:00 +00:00
parent a28838ac5c
commit ba59832aed
13 changed files with 67 additions and 6 deletions
+3
View File
@@ -5,6 +5,9 @@
```ts
import { Permission } from '@backstage/plugin-permission-common';
// @public
export const catalogEntityCreatePermission: Permission;
// @public
export const catalogEntityDeletePermission: Permission;
+1
View File
@@ -24,6 +24,7 @@
export {
RESOURCE_TYPE_CATALOG_ENTITY,
catalogEntityReadPermission,
catalogEntityCreatePermission,
catalogEntityDeletePermission,
catalogEntityRefreshPermission,
catalogLocationReadPermission,
+14
View File
@@ -38,6 +38,20 @@ export const catalogEntityReadPermission: Permission = {
resourceType: RESOURCE_TYPE_CATALOG_ENTITY,
};
/**
* This permission is used to authorize actions that involve creating a new
* catalog entity. This includes registering an existing component into the
* catalog.
* @public
*/
export const catalogEntityCreatePermission: Permission = {
name: 'catalog.entity.create',
attributes: {
action: 'create',
},
resourceType: RESOURCE_TYPE_CATALOG_ENTITY,
};
/**
* This permission is used to designate actions that involve removing one or
* more entities from the catalog.
+2
View File
@@ -39,7 +39,9 @@
"@backstage/errors": "^0.2.0",
"@backstage/integration": "^0.7.2",
"@backstage/integration-react": "^0.1.20-next.0",
"@backstage/plugin-catalog-common": "^0.1.1",
"@backstage/plugin-catalog-react": "^0.6.13-next.0",
"@backstage/plugin-permission-react": "^0.3.0",
"@backstage/plugin-scaffolder-common": "^0.1.3",
"@backstage/theme": "^0.2.14",
"@backstage/types": "^0.1.1",
@@ -37,6 +37,8 @@ import React, { ComponentType } from 'react';
import { registerComponentRouteRef } from '../../routes';
import { TemplateList } from '../TemplateList';
import { TemplateTypePicker } from '../TemplateTypePicker';
import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common';
import { usePermission } from '@backstage/plugin-permission-react';
const useStyles = makeStyles(theme => ({
contentWrapper: {
@@ -72,6 +74,8 @@ export const ScaffolderPageContents = ({
},
};
const { allowed } = usePermission(catalogEntityCreatePermission);
return (
<Page themeId="home">
<Header
@@ -85,10 +89,12 @@ export const ScaffolderPageContents = ({
/>
<Content>
<ContentHeader title="Available Templates">
<CreateButton
title="Register Existing Component"
to={registerComponentLink && registerComponentLink()}
/>
{allowed && (
<CreateButton
title="Register Existing Component"
to={registerComponentLink && registerComponentLink()}
/>
)}
<SupportButton>
Create new software components using standard templates. Different
templates create different kinds of components (services, websites,