diff --git a/.changeset/pink-months-hammer.md b/.changeset/pink-months-hammer.md new file mode 100644 index 0000000000..20a484a389 --- /dev/null +++ b/.changeset/pink-months-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-backend': patch +--- + +Moved `permissionModuleAllowAllPolicy` to `@backstage/plugin-permission-backend-module-allow-all-policy` diff --git a/.changeset/tall-items-clap.md b/.changeset/tall-items-clap.md new file mode 100644 index 0000000000..613c280cbe --- /dev/null +++ b/.changeset/tall-items-clap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-backend-module-allow-all-policy': minor +--- + +Created package with policy `permissionModuleAllowAllPolicy` diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index ea832c60fb..d8c90f6850 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -41,6 +41,7 @@ "@backstage/plugin-lighthouse-backend": "workspace:^", "@backstage/plugin-linguist-backend": "workspace:^", "@backstage/plugin-permission-backend": "workspace:^", + "@backstage/plugin-permission-backend-module-allow-all-policy": "workspace:^", "@backstage/plugin-permission-common": "workspace:^", "@backstage/plugin-permission-node": "workspace:^", "@backstage/plugin-proxy-backend": "workspace:^", diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts index f3b1ea06f8..6f736a2033 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -18,10 +18,8 @@ import { createBackend } from '@backstage/backend-defaults'; import { appPlugin } from '@backstage/plugin-app-backend/alpha'; import { catalogPlugin } from '@backstage/plugin-catalog-backend/alpha'; import { kubernetesPlugin } from '@backstage/plugin-kubernetes-backend/alpha'; -import { - permissionModuleAllowAllPolicy, - permissionPlugin, -} from '@backstage/plugin-permission-backend/alpha'; +import { permissionPlugin } from '@backstage/plugin-permission-backend/alpha'; +import { permissionModuleAllowAllPolicy } from '@backstage/plugin-permission-backend-module-allow-all-policy'; import { scaffolderPlugin } from '@backstage/plugin-scaffolder-backend/alpha'; import { catalogModuleTemplateKind } from '@backstage/plugin-scaffolder-backend/alpha'; import { searchModuleCatalogCollator } from '@backstage/plugin-search-backend-module-catalog/alpha'; diff --git a/plugins/permission-backend-module-policy-allow-all/.eslintrc.js b/plugins/permission-backend-module-policy-allow-all/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/permission-backend-module-policy-allow-all/README.md b/plugins/permission-backend-module-policy-allow-all/README.md new file mode 100644 index 0000000000..1cdeadcf95 --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/README.md @@ -0,0 +1,5 @@ +# @backstage/plugin-permission-backend-module-allow-all-policy + +The allow all policy backend module for the permission plugin. + +_This plugin was created through the Backstage CLI_ diff --git a/plugins/permission-backend-module-policy-allow-all/api-report.md b/plugins/permission-backend-module-policy-allow-all/api-report.md new file mode 100644 index 0000000000..a965e9fa54 --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/api-report.md @@ -0,0 +1,10 @@ +## API Report File for "@backstage/plugin-permission-backend-module-allow-all-policy" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; + +// @public +export const permissionModuleAllowAllPolicy: () => BackendFeature; +``` diff --git a/plugins/permission-backend-module-policy-allow-all/package.json b/plugins/permission-backend-module-policy-allow-all/package.json new file mode 100644 index 0000000000..71a02539af --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/package.json @@ -0,0 +1,39 @@ +{ + "name": "@backstage/plugin-permission-backend-module-allow-all-policy", + "description": "Allow all policy backend module for the permission plugin.", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "backend-plugin-module" + }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-node": "workspace:^" + }, + "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/permission-backend-module-policy-allow-all/src/index.ts b/plugins/permission-backend-module-policy-allow-all/src/index.ts new file mode 100644 index 0000000000..f2e9b46bb5 --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/src/index.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The allow all policy backend module for the permission plugin. + * + * @packageDocumentation + */ + +export { permissionModuleAllowAllPolicy } from './module'; diff --git a/plugins/permission-backend-module-policy-allow-all/src/module.ts b/plugins/permission-backend-module-policy-allow-all/src/module.ts new file mode 100644 index 0000000000..47ab202a00 --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/src/module.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { policyExtensionPoint } from '@backstage/plugin-permission-node/alpha'; +import { AllowAllPermissionPolicy } from './policy'; + +/** + * A permission policy module that allows all requests. + * + * @public + */ +export const permissionModuleAllowAllPolicy = createBackendModule({ + moduleId: 'allowAllPolicy', + pluginId: 'permission', + register(reg) { + reg.registerInit({ + deps: { policy: policyExtensionPoint }, + async init({ policy }) { + policy.setPolicy(new AllowAllPermissionPolicy()); + }, + }); + }, +}); diff --git a/plugins/permission-backend-module-policy-allow-all/src/policy.ts b/plugins/permission-backend-module-policy-allow-all/src/policy.ts new file mode 100644 index 0000000000..da853e47db --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/src/policy.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; +import { + AuthorizeResult, + PolicyDecision, +} from '@backstage/plugin-permission-common'; +import { + PermissionPolicy, + PolicyQuery, +} from '@backstage/plugin-permission-node'; + +export class AllowAllPermissionPolicy implements PermissionPolicy { + async handle( + _request: PolicyQuery, + _user?: BackstageIdentityResponse, + ): Promise { + return { + result: AuthorizeResult.ALLOW, + }; + } +} diff --git a/plugins/permission-backend/alpha-api-report.md b/plugins/permission-backend/alpha-api-report.md index 926691930b..2397ccd9c9 100644 --- a/plugins/permission-backend/alpha-api-report.md +++ b/plugins/permission-backend/alpha-api-report.md @@ -5,9 +5,6 @@ ```ts import { BackendFeature } from '@backstage/backend-plugin-api'; -// @alpha -export const permissionModuleAllowAllPolicy: () => BackendFeature; - // @alpha export const permissionPlugin: () => BackendFeature; diff --git a/plugins/permission-backend/src/alpha.ts b/plugins/permission-backend/src/alpha.ts index f6a2bb4f09..5958a52926 100644 --- a/plugins/permission-backend/src/alpha.ts +++ b/plugins/permission-backend/src/alpha.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { permissionPlugin, permissionModuleAllowAllPolicy } from './plugin'; +export { permissionPlugin } from './plugin'; diff --git a/plugins/permission-backend/src/plugin.ts b/plugins/permission-backend/src/plugin.ts index a131b6e4b4..9cf0024e47 100644 --- a/plugins/permission-backend/src/plugin.ts +++ b/plugins/permission-backend/src/plugin.ts @@ -17,18 +17,9 @@ import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, - createBackendModule, createBackendPlugin, } from '@backstage/backend-plugin-api'; -import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; -import { - AuthorizeResult, - PolicyDecision, -} from '@backstage/plugin-permission-common'; -import { - PermissionPolicy, - PolicyQuery, -} from '@backstage/plugin-permission-node'; +import { PermissionPolicy } from '@backstage/plugin-permission-node'; import { policyExtensionPoint, PolicyExtensionPoint, @@ -46,35 +37,6 @@ class PolicyExtensionPointImpl implements PolicyExtensionPoint { } } -/** - * A permission policy module that allows all requests. - * - * @alpha - */ -export const permissionModuleAllowAllPolicy = createBackendModule({ - moduleId: 'allowAllPolicy', - pluginId: 'permission', - register(reg) { - class AllowAllPermissionPolicy implements PermissionPolicy { - async handle( - _request: PolicyQuery, - _user?: BackstageIdentityResponse, - ): Promise { - return { - result: AuthorizeResult.ALLOW, - }; - } - } - - reg.registerInit({ - deps: { policy: policyExtensionPoint }, - async init({ policy }) { - policy.setPolicy(new AllowAllPermissionPolicy()); - }, - }); - }, -}); - /** * Permission plugin * @@ -99,7 +61,7 @@ export const permissionPlugin = createBackendPlugin({ const winstonLogger = loggerToWinstonLogger(logger); if (!policies.policy) { throw new Error( - 'No policy module installed! Please install a policy module. If you want to allow all requests, use permissionModuleAllowAllPolicy', + 'No policy module installed! Please install a policy module. If you want to allow all requests, use @backstage/plugin-permission-backend-module-allow-all-policy permissionModuleAllowAllPolicy', ); } diff --git a/yarn.lock b/yarn.lock index 73bf45dd3e..26364d92df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8166,6 +8166,20 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-permission-backend-module-allow-all-policy@workspace:^, @backstage/plugin-permission-backend-module-allow-all-policy@workspace:plugins/permission-backend-module-policy-allow-all": + version: 0.0.0-use.local + resolution: "@backstage/plugin-permission-backend-module-allow-all-policy@workspace:plugins/permission-backend-module-policy-allow-all" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-node": "workspace:^" + languageName: unknown + linkType: soft + "@backstage/plugin-permission-backend@workspace:^, @backstage/plugin-permission-backend@workspace:plugins/permission-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-backend@workspace:plugins/permission-backend" @@ -25770,6 +25784,7 @@ __metadata: "@backstage/plugin-lighthouse-backend": "workspace:^" "@backstage/plugin-linguist-backend": "workspace:^" "@backstage/plugin-permission-backend": "workspace:^" + "@backstage/plugin-permission-backend-module-allow-all-policy": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" "@backstage/plugin-permission-node": "workspace:^" "@backstage/plugin-proxy-backend": "workspace:^"