UNPKG

@infosys_ltd/openfga-plugin-backstage

Version:

This plugin wraps around the Backstage Permission Framework and uses the OPENFGA client to evaluate policies.

75 lines (67 loc) 3.13 kB
import * as react from 'react'; import * as _backstage_core_plugin_api from '@backstage/core-plugin-api'; import { DiscoveryApi, ConfigApi } from '@backstage/core-plugin-api'; import * as _backstage_config from '@backstage/config'; import { PolicyDecision } from '@backstage/plugin-permission-common'; import { PermissionPolicy, PolicyQuery } from '@backstage/plugin-permission-node'; import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; import * as _backstage_backend_plugin_api from '@backstage/backend-plugin-api'; declare const openfgaPlugin: _backstage_core_plugin_api.BackstagePlugin<{ root: _backstage_core_plugin_api.RouteRef<undefined>; }, {}, {}>; declare const OpenfgaPage: () => react.JSX.Element; interface OpenFgaRequest { tuple_key: { user: string; relation: string; object: string; }; authorization_model_id: string; } interface OpenFgaResponse { allowed: boolean; ok?: boolean; message: string; } declare class OpenFgaClient implements OpenFgaApi { readonly discoveryApi: DiscoveryApi; private readonly baseUrl; private readonly storeId; private readonly authorizationModelId; private permissionResponse; static fromConfig(configApi: ConfigApi, discoveryApi: DiscoveryApi): OpenFgaClient; constructor(opts: { discoveryApi: DiscoveryApi; baseUrl: string; storeId: string; authorizationModelId: string; }); getPermissionResponse(): OpenFgaResponse | null; private fetch; sendPermissionRequest(entityName: string, action: string, userName: any): Promise<OpenFgaResponse>; addPolicy(entityName: string, accessType: string, userName: any): Promise<OpenFgaResponse>; revokePolicy(entityName: string, accessType: string, userName: any): Promise<OpenFgaResponse>; } declare const openFgaApiRef: _backstage_core_plugin_api.ApiRef<OpenFgaApi>; interface OpenFgaApi { sendPermissionRequest(entityName: string, action: string, userName: any): Promise<OpenFgaResponse>; addPolicy(entityName: string, accessType: string, userName: any): Promise<OpenFgaResponse>; revokePolicy(entityName: string, accessType: string, userName: any): Promise<OpenFgaResponse>; } declare const openFgaApiFactory: { deps: { configApi: _backstage_core_plugin_api.ApiRef<_backstage_config.Config>; discoveryApi: _backstage_core_plugin_api.ApiRef<DiscoveryApi>; }; factory: ({ configApi, discoveryApi }: { configApi: ConfigApi; discoveryApi: DiscoveryApi; }) => OpenFgaClient; }; declare class OpenFgaCatalogPolicy implements PermissionPolicy { private openFgaClient; constructor(configApi: ConfigApi, discoveryApi: DiscoveryApi); handle(request: PolicyQuery, user: BackstageIdentityResponse): Promise<PolicyDecision>; } declare const permissionModuleCatalogPolicy: _backstage_backend_plugin_api.BackendFeatureCompat; export { type OpenFgaApi, OpenFgaCatalogPolicy, OpenFgaClient, type OpenFgaRequest, type OpenFgaResponse, OpenfgaPage, openFgaApiFactory, openFgaApiRef, openfgaPlugin, permissionModuleCatalogPolicy };