diff --git a/.changeset/soft-rice-remember.md b/.changeset/soft-rice-remember.md index bcb2860d18..bf207a0dd5 100644 --- a/.changeset/soft-rice-remember.md +++ b/.changeset/soft-rice-remember.md @@ -2,4 +2,4 @@ '@backstage/plugin-permission-react': patch --- -Make `IdentityPermissionApi#authorize` typing more strict, using `AuthorizePermissionRequest` and `AuthorizePermissionResponse`. +**BREAKING:** Make `IdentityPermissionApi#authorize` typing more strict, using `AuthorizePermissionRequest` and `AuthorizePermissionResponse`. diff --git a/plugins/catalog-backend/src/service/AuthorizedLocationService.test.ts b/plugins/catalog-backend/src/service/AuthorizedLocationService.test.ts index 3db6bff208..151ba1c3e8 100644 --- a/plugins/catalog-backend/src/service/AuthorizedLocationService.test.ts +++ b/plugins/catalog-backend/src/service/AuthorizedLocationService.test.ts @@ -27,7 +27,7 @@ describe('AuthorizedLocationService', () => { }; const fakePermissionApi = { authorize: jest.fn(), - policyDecision: jest.fn(), + query: jest.fn(), }; const mockAllow = () => { diff --git a/plugins/catalog-backend/src/service/AuthorizedRefreshService.test.ts b/plugins/catalog-backend/src/service/AuthorizedRefreshService.test.ts index d1c4fe3fc1..5d0a192470 100644 --- a/plugins/catalog-backend/src/service/AuthorizedRefreshService.test.ts +++ b/plugins/catalog-backend/src/service/AuthorizedRefreshService.test.ts @@ -25,7 +25,7 @@ describe('AuthorizedRefreshService', () => { }; const permissionApi = { authorize: jest.fn(), - policyDecision: jest.fn(), + query: jest.fn(), }; afterEach(() => { diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts index e11ed32c54..7c4214f714 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts @@ -49,7 +49,7 @@ const fakePermissionApi = { result: AuthorizeResult.ALLOW, }, ]), - policyDecision: jest.fn(), + query: jest.fn(), }; describe('JenkinsApi', () => { diff --git a/plugins/permission-common/src/PermissionClient.ts b/plugins/permission-common/src/PermissionClient.ts index 3f7b459cb5..07d60a8e65 100644 --- a/plugins/permission-common/src/PermissionClient.ts +++ b/plugins/permission-common/src/PermissionClient.ts @@ -57,26 +57,27 @@ const permissionCriteriaSchema: z.ZodSchema< .or(z.object({ not: permissionCriteriaSchema }).strict()), ); -const authorizeDecisionSchema: z.ZodSchema = +const authorizePermissionResponseSchema: z.ZodSchema = z.object({ result: z .literal(AuthorizeResult.ALLOW) .or(z.literal(AuthorizeResult.DENY)), }); -const policyDecisionSchema: z.ZodSchema = z.union([ - z.object({ - result: z - .literal(AuthorizeResult.ALLOW) - .or(z.literal(AuthorizeResult.DENY)), - }), - z.object({ - result: z.literal(AuthorizeResult.CONDITIONAL), - pluginId: z.string(), - resourceType: z.string(), - conditions: permissionCriteriaSchema, - }), -]); +const queryPermissionResponseSchema: z.ZodSchema = + z.union([ + z.object({ + result: z + .literal(AuthorizeResult.ALLOW) + .or(z.literal(AuthorizeResult.DENY)), + }), + z.object({ + result: z.literal(AuthorizeResult.CONDITIONAL), + pluginId: z.string(), + resourceType: z.string(), + conditions: permissionCriteriaSchema, + }), + ]); const responseSchema = ( itemSchema: z.ZodSchema, @@ -122,7 +123,11 @@ export class PermissionClient implements PermissionEvaluator { requests: AuthorizePermissionRequest[], options?: EvaluatorRequestOptions, ): Promise { - return this.makeRequest(requests, authorizeDecisionSchema, options); + return this.makeRequest( + requests, + authorizePermissionResponseSchema, + options, + ); } /** @@ -132,7 +137,7 @@ export class PermissionClient implements PermissionEvaluator { queries: QueryPermissionRequest[], options?: EvaluatorRequestOptions, ): Promise { - return this.makeRequest(queries, policyDecisionSchema, options); + return this.makeRequest(queries, queryPermissionResponseSchema, options); } private async makeRequest(