Files
backstage/.changeset/plenty-eyes-brush.md
T
Joon Park cd529c4094 Integrate permissions with catalog-backend refresh endpoint (#8693)
Integration permission framework with refresh in catalog-backend

... through the use of a new AuthorizedRefreshService.

Signed-off-by: Joon Park <joonp@spotify.com>
2022-01-07 15:49:26 +00:00

1.6 KiB

@backstage/create-app
@backstage/create-app
patch

Add permissions to create-app's PluginEnvironment

CatalogEnvironment now has a permissions field, which means that a permission client must now be provided as part of PluginEnvironment. To apply these changes to an existing app, add the following to the makeCreateEnv function in packages/backend/src/index.ts:

  // packages/backend/src/index.ts

+ import { ServerPermissionClient } from '@backstage/plugin-permission-node';

  function makeCreateEnv(config: Config) {
    ...
+   const permissions = ServerPerimssionClient.fromConfig(config, {
+     discovery,
+     tokenManager,
+   });

    root.info(`Created UrlReader ${reader}`);

    return (plugin: string): PluginEnvironment => {
      ...
      return {
        logger,
        cache,
        database,
        config,
        reader,
        discovery,
        tokenManager,
        scheduler,
+       permissions,
      };
    }
  }

And add a permissions field to the PluginEnvironment type in packages/backend/src/types.ts:

  // packages/backend/src/types.ts

+ import { PermissionAuthorizer } from '@backstage/plugin-permission-common';

  export type PluginEnvironment = {
    ...
+   permissions: PermissionAuthorizer;
  };

@backstage/plugin-permission-common and @backstage/plugin-permission-node will need to be installed as dependencies:

  // packages/backend/package.json

+   "@backstage/plugin-permission-common": "...",
+   "@backstage/plugin-permission-node": "...",