Merge pull request #13905 from backstage/permissions/schema

Permissions - Add a required parameter schema
This commit is contained in:
Harrison Hogg
2022-10-11 14:59:24 +01:00
committed by GitHub
43 changed files with 755 additions and 294 deletions
+11 -2
View File
@@ -4,6 +4,7 @@
```ts
import { Config } from '@backstage/config';
import { JsonPrimitive } from '@backstage/types';
// @public
export type AllOfCriteria<TQuery> = {
@@ -172,11 +173,11 @@ export class PermissionClient implements PermissionEvaluator {
// @public
export type PermissionCondition<
TResourceType extends string = string,
TParams extends unknown[] = unknown[],
TParams extends PermissionRuleParams = PermissionRuleParams,
> = {
resourceType: TResourceType;
rule: string;
params: TParams;
params?: TParams;
};
// @public
@@ -203,6 +204,14 @@ export type PermissionMessageBatch<T> = {
items: IdentifiedPermissionMessage<T>[];
};
// @public
export type PermissionRuleParam = undefined | JsonPrimitive | JsonPrimitive[];
// @public
export type PermissionRuleParams =
| undefined
| Record<string, PermissionRuleParam>;
// @public
export type PolicyDecision =
| DefinitivePolicyDecision
+1
View File
@@ -43,6 +43,7 @@
"dependencies": {
"@backstage/config": "workspace:^",
"@backstage/errors": "workspace:^",
"@backstage/types": "workspace:^",
"cross-fetch": "^3.1.5",
"uuid": "^8.0.0",
"zod": "^3.11.6"
@@ -227,7 +227,7 @@ describe('PermissionClient', () => {
conditions: {
resourceType: 'test-resource',
rule: 'FOO',
params: ['bar'],
params: { foo: 'bar' },
},
}),
);
@@ -275,7 +275,7 @@ describe('PermissionClient', () => {
conditions: {
rule: 'FOO',
resourceType: 'test-resource',
params: ['bar'],
params: { foo: 'bar' },
},
}),
);
@@ -41,7 +41,7 @@ const permissionCriteriaSchema: z.ZodSchema<
.object({
rule: z.string(),
resourceType: z.string(),
params: z.array(z.unknown()),
params: z.record(z.any()),
})
.or(z.object({ anyOf: z.array(permissionCriteriaSchema).nonempty() }))
.or(z.object({ allOf: z.array(permissionCriteriaSchema).nonempty() }))
+19 -2
View File
@@ -14,6 +14,7 @@
* limitations under the License.
*/
import { JsonPrimitive } from '@backstage/types';
import { ResourcePermission } from '.';
import { Permission } from './permission';
@@ -101,11 +102,11 @@ export type PolicyDecision =
*/
export type PermissionCondition<
TResourceType extends string = string,
TParams extends unknown[] = unknown[],
TParams extends PermissionRuleParams = PermissionRuleParams,
> = {
resourceType: TResourceType;
rule: string;
params: TParams;
params?: TParams;
};
/**
@@ -148,6 +149,22 @@ export type PermissionCriteria<TQuery> =
| NotCriteria<TQuery>
| TQuery;
/**
* A parameter to a permission rule.
*
* @public
*/
export type PermissionRuleParam = undefined | JsonPrimitive | JsonPrimitive[];
/**
* Types that can be used as parameters to permission rules.
*
* @public
*/
export type PermissionRuleParams =
| undefined
| Record<string, PermissionRuleParam>;
/**
* An individual request sent to the permission backend.
* @public
@@ -33,6 +33,8 @@ export type {
PolicyDecision,
PermissionCondition,
PermissionCriteria,
PermissionRuleParam,
PermissionRuleParams,
AllOfCriteria,
AnyOfCriteria,
NotCriteria,