diff --git a/.changeset/soft-rice-remember.md b/.changeset/soft-rice-remember.md index 27e4c0a35d..bcb2860d18 100644 --- a/.changeset/soft-rice-remember.md +++ b/.changeset/soft-rice-remember.md @@ -2,4 +2,4 @@ '@backstage/plugin-permission-react': patch --- -Fix typing when invoking `PermissionClient#authorize` +Make `IdentityPermissionApi#authorize` typing more strict, using `AuthorizePermissionRequest` and `AuthorizePermissionResponse`. diff --git a/plugins/permission-react/api-report.md b/plugins/permission-react/api-report.md index 17b29a463a..12f1300c70 100644 --- a/plugins/permission-react/api-report.md +++ b/plugins/permission-react/api-report.md @@ -4,6 +4,8 @@ ```ts import { ApiRef } from '@backstage/core-plugin-api'; +import { AuthorizePermissionRequest } from '@backstage/plugin-permission-common'; +import { AuthorizePermissionResponse } from '@backstage/plugin-permission-common'; import { ComponentProps } from 'react'; import { Config } from '@backstage/config'; import { DiscoveryApi } from '@backstage/core-plugin-api'; @@ -26,8 +28,8 @@ export type AsyncPermissionResult = { export class IdentityPermissionApi implements PermissionApi { // (undocumented) authorize( - request: EvaluatePermissionRequest, - ): Promise; + request: AuthorizePermissionRequest, + ): Promise; // (undocumented) static create(options: { config: Config; diff --git a/plugins/permission-react/src/apis/IdentityPermissionApi.ts b/plugins/permission-react/src/apis/IdentityPermissionApi.ts index 0bb46f5587..1fe295c9f2 100644 --- a/plugins/permission-react/src/apis/IdentityPermissionApi.ts +++ b/plugins/permission-react/src/apis/IdentityPermissionApi.ts @@ -17,9 +17,8 @@ import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; import { PermissionApi } from './PermissionApi'; import { - EvaluatePermissionRequest, - EvaluatePermissionResponse, - isResourcePermission, + AuthorizePermissionRequest, + AuthorizePermissionResponse, PermissionClient, } from '@backstage/plugin-permission-common'; import { Config } from '@backstage/config'; @@ -46,23 +45,10 @@ export class IdentityPermissionApi implements PermissionApi { } async authorize( - request: EvaluatePermissionRequest, - ): Promise { - const { permission, resourceRef } = request; - if (isResourcePermission(permission)) { - if (!resourceRef) { - throw new Error( - 'A resourceRef should be provided when a ResourcePermission is used.', - ); - } - const response = await this.permissionClient.authorize( - [{ permission, resourceRef }], - await this.identityApi.getCredentials(), - ); - return response[0]; - } + request: AuthorizePermissionRequest, + ): Promise { const response = await this.permissionClient.authorize( - [{ permission }], + [request], await this.identityApi.getCredentials(), ); return response[0];