packages/backend-plugin-api: updated PermissionsRegistryService to use rule accessors and resource refs

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2025-01-30 09:41:55 +01:00
parent b71f634e3b
commit 72cddf2971
8 changed files with 83 additions and 15 deletions
+3
View File
@@ -173,6 +173,9 @@ export function createPermissionIntegrationRouter<
TResource
>,
): void;
getRuleAccessor<TResource, TQuery, TResourceType extends string>(
resourceRef: PermissionResourceRef<TResource, TQuery, TResourceType>,
): PermissionRuleAccessor<TResource, TQuery, TResourceType>;
};
// @public
@@ -30,7 +30,7 @@ import {
PermissionCriteria,
PolicyDecision,
} from '@backstage/plugin-permission-common';
import { PermissionRule } from '../types';
import { PermissionRule, PermissionRuleAccessor } from '../types';
import {
NoInfer,
createGetRule,
@@ -439,6 +439,9 @@ export function createPermissionIntegrationRouter<
TResource
>,
): void;
getRuleAccessor<TResource, TQuery, TResourceType extends string>(
resourceRef: PermissionResourceRef<TResource, TQuery, TResourceType>,
): PermissionRuleAccessor<TResource, TQuery, TResourceType>;
} {
const store = new PermissionIntegrationMetadataStore();
@@ -528,5 +531,12 @@ export function createPermissionIntegrationRouter<
) {
store.addResourceType(resource);
},
getRuleAccessor<TResource, TQuery, TResourceType extends string>(
resourceRef: PermissionResourceRef<TResource, TQuery, TResourceType>,
): PermissionRuleAccessor<TResource, TQuery, TResourceType> {
return store.getRuleMapper(
resourceRef.resourceType,
) as PermissionRuleAccessor<TResource, TQuery, TResourceType>;
},
});
}