permission-common: use createCondition helper when creating conditions

Signed-off-by: Mike Lewis <mtlewis@users.noreply.github.com>
This commit is contained in:
Mike Lewis
2022-03-03 18:39:06 +00:00
committed by Joe Porpeglia
parent 899d38ea68
commit ada4446733
11 changed files with 54 additions and 32 deletions
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-catalog-backend': patch
'@backstage/plugin-techdocs-backend': patch
---
Specify type of `visibilityPermission` property on collators and collator factories.
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-catalog-common': patch
'@backstage/plugin-jenkins-common': patch
---
Use `createPermission` helper when creating permissions.
@@ -33,6 +33,7 @@ import {
catalogEntityReadPermission,
CatalogEntityDocument,
} from '@backstage/plugin-catalog-common';
import { Permission } from '@backstage/plugin-permission-common';
/**
* @public
@@ -45,7 +46,8 @@ export class DefaultCatalogCollator {
protected filter?: GetEntitiesRequest['filter'];
protected readonly catalogClient: CatalogApi;
public readonly type: string = 'software-catalog';
public readonly visibilityPermission = catalogEntityReadPermission;
public readonly visibilityPermission: Permission =
catalogEntityReadPermission;
protected tokenManager: TokenManager;
static fromConfig(
@@ -34,6 +34,7 @@ import {
catalogEntityReadPermission,
CatalogEntityDocument,
} from '@backstage/plugin-catalog-common';
import { Permission } from '@backstage/plugin-permission-common';
import { Readable } from 'stream';
/** @public */
@@ -49,7 +50,8 @@ export type DefaultCatalogCollatorFactoryOptions = {
/** @public */
export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory {
public readonly type: string = 'software-catalog';
public readonly visibilityPermission = catalogEntityReadPermission;
public readonly visibilityPermission: Permission =
catalogEntityReadPermission;
private locationTemplate: string;
private filter?: GetEntitiesRequest['filter'];
+9 -8
View File
@@ -3,14 +3,15 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { BasicPermission } from '@backstage/plugin-permission-common';
import { IndexableDocument } from '@backstage/search-common';
import { Permission } from '@backstage/plugin-permission-common';
import { ResourcePermission } from '@backstage/plugin-permission-common';
// @alpha
export const catalogEntityCreatePermission: Permission;
export const catalogEntityCreatePermission: BasicPermission;
// @alpha
export const catalogEntityDeletePermission: Permission;
export const catalogEntityDeletePermission: ResourcePermission<'catalog-entity'>;
// @public
export interface CatalogEntityDocument extends IndexableDocument {
@@ -29,19 +30,19 @@ export interface CatalogEntityDocument extends IndexableDocument {
}
// @alpha
export const catalogEntityReadPermission: Permission;
export const catalogEntityReadPermission: ResourcePermission<'catalog-entity'>;
// @alpha
export const catalogEntityRefreshPermission: Permission;
export const catalogEntityRefreshPermission: ResourcePermission<'catalog-entity'>;
// @alpha
export const catalogLocationCreatePermission: Permission;
export const catalogLocationCreatePermission: BasicPermission;
// @alpha
export const catalogLocationDeletePermission: Permission;
export const catalogLocationDeletePermission: BasicPermission;
// @alpha
export const catalogLocationReadPermission: Permission;
export const catalogLocationReadPermission: BasicPermission;
// @alpha
export const RESOURCE_TYPE_CATALOG_ENTITY = 'catalog-entity';
+15 -15
View File
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { Permission } from '@backstage/plugin-permission-common';
import { createPermission } from '@backstage/plugin-permission-common';
/**
* Permission resource type which corresponds to catalog entities.
@@ -32,13 +32,13 @@ export const RESOURCE_TYPE_CATALOG_ENTITY = 'catalog-entity';
* exist in the catalog — both in the frontend and in API responses.
* @alpha
*/
export const catalogEntityReadPermission: Permission = {
export const catalogEntityReadPermission = createPermission({
name: 'catalog.entity.read',
attributes: {
action: 'read',
},
resourceType: RESOURCE_TYPE_CATALOG_ENTITY,
};
});
/**
* This permission is used to authorize actions that involve creating a new
@@ -46,38 +46,38 @@ export const catalogEntityReadPermission: Permission = {
* catalog.
* @alpha
*/
export const catalogEntityCreatePermission: Permission = {
export const catalogEntityCreatePermission = createPermission({
name: 'catalog.entity.create',
attributes: {
action: 'create',
},
};
});
/**
* This permission is used to designate actions that involve removing one or
* more entities from the catalog.
* @alpha
*/
export const catalogEntityDeletePermission: Permission = {
export const catalogEntityDeletePermission = createPermission({
name: 'catalog.entity.delete',
attributes: {
action: 'delete',
},
resourceType: RESOURCE_TYPE_CATALOG_ENTITY,
};
});
/**
* This permission is used to designate refreshing one or more entities from the
* catalog.
* @alpha
*/
export const catalogEntityRefreshPermission: Permission = {
export const catalogEntityRefreshPermission = createPermission({
name: 'catalog.entity.refresh',
attributes: {
action: 'update',
},
resourceType: RESOURCE_TYPE_CATALOG_ENTITY,
};
});
/**
* This permission is used to designate actions that involve reading one or more
@@ -87,33 +87,33 @@ export const catalogEntityRefreshPermission: Permission = {
* not exist in the catalog — both in the frontend and in API responses.
* @alpha
*/
export const catalogLocationReadPermission: Permission = {
export const catalogLocationReadPermission = createPermission({
name: 'catalog.location.read',
attributes: {
action: 'read',
},
};
});
/**
* This permission is used to designate actions that involve creating catalog
* locations.
* @alpha
*/
export const catalogLocationCreatePermission: Permission = {
export const catalogLocationCreatePermission = createPermission({
name: 'catalog.location.create',
attributes: {
action: 'create',
},
};
});
/**
* This permission is used to designate actions that involve deleting locations
* from the catalog.
* @alpha
*/
export const catalogLocationDeletePermission: Permission = {
export const catalogLocationDeletePermission = createPermission({
name: 'catalog.location.delete',
attributes: {
action: 'delete',
},
};
});
+2 -2
View File
@@ -3,10 +3,10 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { Permission } from '@backstage/plugin-permission-common';
import { ResourcePermission } from '@backstage/plugin-permission-common';
// @public
export const jenkinsExecutePermission: Permission;
export const jenkinsExecutePermission: ResourcePermission<'catalog-entity'>;
// (No @packageDocumentation comment for this package)
```
+3 -3
View File
@@ -14,17 +14,17 @@
* limitations under the License.
*/
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';
import { Permission } from '@backstage/plugin-permission-common';
import { createPermission } from '@backstage/plugin-permission-common';
/**
* This permission is used to determine if a user is allowed to execute an action in jenkins plugin
*
* @public
*/
export const jenkinsExecutePermission: Permission = {
export const jenkinsExecutePermission = createPermission({
name: 'jenkins.execute',
attributes: {
action: 'update',
},
resourceType: RESOURCE_TYPE_CATALOG_ENTITY,
};
});
+1
View File
@@ -41,6 +41,7 @@
"@backstage/errors": "^1.0.0",
"@backstage/integration": "^1.0.1-next.0",
"@backstage/plugin-catalog-common": "^1.0.1-next.0",
"@backstage/plugin-permission-common": "^0.5.3",
"@backstage/plugin-search-common": "^0.3.3-next.0",
"@backstage/plugin-techdocs-node": "^1.0.1-next.0",
"@types/express": "^4.17.6",
@@ -30,6 +30,7 @@ import { Logger } from 'winston';
import pLimit from 'p-limit';
import { Config } from '@backstage/config';
import { catalogEntityReadPermission } from '@backstage/plugin-catalog-common';
import { Permission } from '@backstage/plugin-permission-common';
import {
CatalogApi,
CatalogClient,
@@ -73,7 +74,8 @@ type EntityInfo = {
*/
export class DefaultTechDocsCollator {
public readonly type: string = 'techdocs';
public readonly visibilityPermission = catalogEntityReadPermission;
public readonly visibilityPermission: Permission =
catalogEntityReadPermission;
private constructor(
private readonly legacyPathCasing: boolean,
@@ -31,6 +31,7 @@ import {
} from '@backstage/catalog-model';
import { Config } from '@backstage/config';
import { catalogEntityReadPermission } from '@backstage/plugin-catalog-common';
import { Permission } from '@backstage/plugin-permission-common';
import { DocumentCollatorFactory } from '@backstage/plugin-search-common';
import { TechDocsDocument } from '@backstage/plugin-techdocs-node';
import unescape from 'lodash/unescape';
@@ -74,7 +75,8 @@ type EntityInfo = {
*/
export class DefaultTechDocsCollatorFactory implements DocumentCollatorFactory {
public readonly type: string = 'techdocs';
public readonly visibilityPermission = catalogEntityReadPermission;
public readonly visibilityPermission: Permission =
catalogEntityReadPermission;
private discovery: PluginEndpointDiscovery;
private locationTemplate: string;