IdentityPermissionApi: strict typing
Signed-off-by: Vincenzo Scamporlino <me@vinzscam.dev>
This commit is contained in:
@@ -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`.
|
||||
|
||||
@@ -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<EvaluatePermissionResponse>;
|
||||
request: AuthorizePermissionRequest,
|
||||
): Promise<AuthorizePermissionResponse>;
|
||||
// (undocumented)
|
||||
static create(options: {
|
||||
config: Config;
|
||||
|
||||
@@ -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<EvaluatePermissionResponse> {
|
||||
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<AuthorizePermissionResponse> {
|
||||
const response = await this.permissionClient.authorize(
|
||||
[{ permission }],
|
||||
[request],
|
||||
await this.identityApi.getCredentials(),
|
||||
);
|
||||
return response[0];
|
||||
|
||||
Reference in New Issue
Block a user