8012ac46a0
* permission-node: fix signature of permission rule in test suites Signed-off-by: Mike Lewis <mtlewis@users.noreply.github.com> * permission-common: add isPermission helper for comparing permissions Signed-off-by: Mike Lewis <mtlewis@users.noreply.github.com> * permission-node: adjust createConditionExports for more type safety Signed-off-by: Mike Lewis <mtlewis@users.noreply.github.com> * permissions: add resourceType property to PermissionCondition and PermissionRule Signed-off-by: Mike Lewis <mtlewis@users.noreply.github.com> * catalog: handle changes to PermissionCondition and PermissionRule types Signed-off-by: Mike Lewis <mtlewis@users.noreply.github.com> * catalog-backend: avoid re-exporting alpha import cf. https://github.com/backstage/backstage/pull/10128 Signed-off-by: Mike Lewis <mtlewis@users.noreply.github.com> * Update changeset Signed-off-by: Joe Porpeglia <josephp@spotify.com> * Resolve api-report conflict Signed-off-by: Joon Park <joonp@spotify.com> Co-authored-by: Joe Porpeglia <josephp@spotify.com> Co-authored-by: Joon Park <joonp@spotify.com>
1.1 KiB
1.1 KiB
@backstage/plugin-catalog-backend
| @backstage/plugin-catalog-backend |
|---|
| minor |
BREAKING (alpha api): Replace createCatalogPolicyDecision export with createCatalogConditionalDecision, which accepts a permission parameter of type ResourcePermission<'catalog-entity'> along with conditions. The permission passed is expected to be the handled permission in PermissionPolicy#handle, whose type must first be narrowed using methods like isPermission and isResourcePermission:
class TestPermissionPolicy implements PermissionPolicy {
async handle(
request: PolicyQuery<Permission>,
_user?: BackstageIdentityResponse,
): Promise<PolicyDecision> {
if (
// Narrow type of `request.permission` to `ResourcePermission<'catalog-entity'>
isResourcePermission(request.permission, RESOURCE_TYPE_CATALOG_ENTITY)
) {
return createCatalogConditionalDecision(
request.permission,
catalogConditions.isEntityOwner(
_user?.identity.ownershipEntityRefs ?? [],
),
);
}
return {
result: AuthorizeResult.ALLOW,
};