diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index ea832c60fb..4dc9056575 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-policy-allow-all": "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..be9f1a1f53 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-policy-allow-all'; 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..5caae189b4 --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/README.md @@ -0,0 +1,5 @@ +# @backstage/plugin-permission-backend-module-policy-allow-all + +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/package.json b/plugins/permission-backend-module-policy-allow-all/package.json new file mode 100644 index 0000000000..05a0ff68de --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/package.json @@ -0,0 +1,40 @@ +{ + "name": "@backstage/plugin-permission-backend-module-policy-allow-all", + "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", + "private": true, + "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..48a73c1aa6 --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/src/module.ts @@ -0,0 +1,34 @@ +/* + * 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. + */ +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..fae693faba --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/src/policy.ts @@ -0,0 +1,35 @@ +import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; +import { + AuthorizeResult, + PolicyDecision, +} from '@backstage/plugin-permission-common'; +import { + PermissionPolicy, + PolicyQuery, +} from '@backstage/plugin-permission-node'; + +/* + * 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. + */ +export class AllowAllPermissionPolicy implements PermissionPolicy { + async handle( + _request: PolicyQuery, + _user?: BackstageIdentityResponse, + ): Promise { + return { + result: AuthorizeResult.ALLOW, + }; + } +} 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..cb13204477 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-policy-allow-all permissionModuleAllowAllPolicy', ); } diff --git a/yarn.lock b/yarn.lock index e7168d09ce..2556f758b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8223,6 +8223,20 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-permission-backend-module-policy-allow-all@workspace:^, @backstage/plugin-permission-backend-module-policy-allow-all@workspace:plugins/permission-backend-module-policy-allow-all": + version: 0.0.0-use.local + resolution: "@backstage/plugin-permission-backend-module-policy-allow-all@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" @@ -25819,6 +25833,7 @@ __metadata: "@backstage/plugin-lighthouse-backend": "workspace:^" "@backstage/plugin-linguist-backend": "workspace:^" "@backstage/plugin-permission-backend": "workspace:^" + "@backstage/plugin-permission-backend-module-policy-allow-all": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" "@backstage/plugin-permission-node": "workspace:^" "@backstage/plugin-proxy-backend": "workspace:^"