Refactored createIsAuthorized to take a decision

Signed-off-by: Harry Hogg <hhogg@spotify.com>
Co-authored-by: Vincenzo Scamporlino <vincenzos@spotify.com>
This commit is contained in:
Harry Hogg
2023-01-30 14:27:21 +00:00
committed by Vincenzo Scamporlino
parent a91abdf061
commit 97be4a96ed
2 changed files with 26 additions and 71 deletions
@@ -27,6 +27,7 @@ import {
Permission,
PermissionCondition,
PermissionCriteria,
PolicyDecision,
} from '@backstage/plugin-permission-common';
import { PermissionRule } from '../types';
import {
@@ -167,18 +168,21 @@ const applyConditions = <TResourceType extends string, TResource>(
*
* @public
*/
export const createIsAuthorized = <
TResourceType extends string,
TResource,
TQuery,
>(
export const createIsAuthorized = <TResource, TQuery>(
rules: PermissionRule<TResource, TQuery, string>[],
) => {
const getRule = createGetRule(rules);
return (
criteria: PermissionCriteria<PermissionCondition<TResourceType>>,
decision: PolicyDecision,
resource: TResource | undefined,
) => applyConditions(criteria, resource, getRule);
): boolean => {
if (decision.result === AuthorizeResult.CONDITIONAL) {
return applyConditions(decision.conditions, resource, getRule);
}
return decision.result === AuthorizeResult.ALLOW;
};
};
/**