permission-node: rename and adjust policy return type to reduce nesting

Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
This commit is contained in:
MT Lewis
2021-11-30 14:48:56 +00:00
parent 0d568fb4f1
commit e7851efa9e
8 changed files with 49 additions and 49 deletions
+10 -14
View File
@@ -32,13 +32,11 @@ export type Condition<TRule> = TRule extends PermissionRule<
: never;
// @public
export type ConditionalPolicyResult = {
export type ConditionalPolicyDecision = {
result: AuthorizeResult.CONDITIONAL;
conditions: {
pluginId: string;
resourceType: string;
conditions: PermissionCriteria<PermissionCondition>;
};
pluginId: string;
resourceType: string;
conditions: PermissionCriteria<PermissionCondition>;
};
// @public
@@ -63,11 +61,9 @@ export const createConditionExports: <
rules: TRules;
}) => {
conditions: Conditions<TRules>;
createConditions: (conditions: PermissionCriteria<PermissionCondition>) => {
pluginId: string;
resourceType: string;
conditions: PermissionCriteria<PermissionCondition>;
};
createPolicyDecision: (
conditions: PermissionCriteria<PermissionCondition>,
) => ConditionalPolicyDecision;
};
// @public
@@ -103,7 +99,7 @@ export interface PermissionPolicy {
handle(
request: PolicyAuthorizeRequest,
user?: BackstageIdentity,
): Promise<PolicyResult>;
): Promise<PolicyDecision>;
}
// @public
@@ -122,9 +118,9 @@ export type PermissionRule<
export type PolicyAuthorizeRequest = Omit<AuthorizeRequest, 'resourceRef'>;
// @public
export type PolicyResult =
export type PolicyDecision =
| {
result: AuthorizeResult.ALLOW | AuthorizeResult.DENY;
}
| ConditionalPolicyResult;
| ConditionalPolicyDecision;
```
@@ -14,6 +14,7 @@
* limitations under the License.
*/
import { AuthorizeResult } from '@backstage/plugin-permission-common';
import { createConditionExports } from './createConditionExports';
const testIntegration = () =>
@@ -63,11 +64,14 @@ describe('createConditionExports', () => {
describe('createConditions', () => {
it('wraps conditions in an object with resourceType and pluginId', () => {
const { createConditions } = testIntegration();
const { createPolicyDecision } = testIntegration();
expect(
createConditions({ allOf: [{ rule: 'testRule1', params: ['a', 1] }] }),
createPolicyDecision({
allOf: [{ rule: 'testRule1', params: ['a', 1] }],
}),
).toEqual({
result: AuthorizeResult.CONDITIONAL,
pluginId: 'test-plugin',
resourceType: 'test-resource',
conditions: {
@@ -15,9 +15,11 @@
*/
import {
AuthorizeResult,
PermissionCondition,
PermissionCriteria,
} from '@backstage/plugin-permission-common';
import { ConditionalPolicyDecision } from '../policy';
import { PermissionRule } from '../types';
import { createConditionFactory } from './createConditionFactory';
@@ -73,11 +75,9 @@ export const createConditionExports = <
rules: TRules;
}): {
conditions: Conditions<TRules>;
createConditions: (conditions: PermissionCriteria<PermissionCondition>) => {
pluginId: string;
resourceType: string;
conditions: PermissionCriteria<PermissionCondition>;
};
createPolicyDecision: (
conditions: PermissionCriteria<PermissionCondition>,
) => ConditionalPolicyDecision;
} => {
const { pluginId, resourceType, rules } = options;
@@ -89,9 +89,10 @@ export const createConditionExports = <
}),
{} as Conditions<TRules>,
),
createConditions: (
createPolicyDecision: (
conditions: PermissionCriteria<PermissionCondition>,
) => ({
result: AuthorizeResult.CONDITIONAL,
pluginId,
resourceType,
conditions,
+2 -2
View File
@@ -15,8 +15,8 @@
*/
export type {
ConditionalPolicyResult,
ConditionalPolicyDecision,
PermissionPolicy,
PolicyAuthorizeRequest,
PolicyResult,
PolicyDecision,
} from './types';
+7 -9
View File
@@ -48,13 +48,11 @@ export type PolicyAuthorizeRequest = Omit<AuthorizeRequest, 'resourceRef'>;
* identifiers needed to evaluate the returned conditions.
* @public
*/
export type ConditionalPolicyResult = {
export type ConditionalPolicyDecision = {
result: AuthorizeResult.CONDITIONAL;
conditions: {
pluginId: string;
resourceType: string;
conditions: PermissionCriteria<PermissionCondition>;
};
pluginId: string;
resourceType: string;
conditions: PermissionCriteria<PermissionCondition>;
};
/**
@@ -62,9 +60,9 @@ export type ConditionalPolicyResult = {
*
* @public
*/
export type PolicyResult =
export type PolicyDecision =
| { result: AuthorizeResult.ALLOW | AuthorizeResult.DENY }
| ConditionalPolicyResult;
| ConditionalPolicyDecision;
/**
* A policy to evaluate authorization requests for any permissioned action performed in Backstage.
@@ -86,5 +84,5 @@ export interface PermissionPolicy {
handle(
request: PolicyAuthorizeRequest,
user?: BackstageIdentity,
): Promise<PolicyResult>;
): Promise<PolicyDecision>;
}