Skip to content

Commit

Permalink
Merge pull request #24 from PagerDuty/feat/add-oauth-support
Browse files Browse the repository at this point in the history
feat: add OAuth support
  • Loading branch information
t1agob authored Feb 12, 2024
2 parents 26d257c + cd925ec commit 431de63
Show file tree
Hide file tree
Showing 11 changed files with 382 additions and 121 deletions.
Binary file modified .yarn/install-state.gz
Binary file not shown.
115 changes: 115 additions & 0 deletions app-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
app:
title: Scaffolded Backstage App
baseUrl: http://localhost:3000

organization:
name: My Company

backend:
# Used for enabling authentication, secret is shared by all backend plugins
# See https://backstage.io/docs/auth/service-to-service-auth for
# information on the format
# auth:
# keys:
# - secret: ${BACKEND_SECRET}
baseUrl: http://localhost:7007
listen:
port: 7007
# Uncomment the following host directive to bind to specific interfaces
# host: 127.0.0.1
csp:
connect-src: ["'self'", 'http:', 'https:']
# Content-Security-Policy directives follow the Helmet format: https://helmetjs.github.io/#reference
# Default Helmet Content-Security-Policy values can be removed by setting the key to false
cors:
origin: http://localhost:3000
methods: [GET, HEAD, PATCH, POST, PUT, DELETE]
credentials: true
# This is for local development only, it is not recommended to use this in production
# The production database configuration is stored in app-config.production.yaml
database:
client: better-sqlite3
connection: ':memory:'
# workingDirectory: /tmp # Use this to configure a working directory for the scaffolder, defaults to the OS temp-dir

integrations:
github:
- host: github.com
# This is a Personal Access Token or PAT from GitHub. You can find out how to generate this token, and more information
# about setting up the GitHub integration here: https://backstage.io/docs/getting-started/configuration#setting-up-a-github-integration
token: ${GITHUB_TOKEN}
### Example for how to add your GitHub Enterprise instance using the API:
# - host: ghe.example.net
# apiBaseUrl: https://ghe.example.net/api/v3
# token: ${GHE_TOKEN}
pagerDuty:
eventsBaseUrl: 'https://events.pagerduty.com/v2'
# apiToken: ${PAGERDUTY_TOKEN}
oauth:
clientId: ${PAGERDUTY_OAUTH_CLIENT_ID}
clientSecret: ${PAGERDUTY_OAUTH_CLIENT_SECRET}
subDomain: ${PAGERDUTY_OAUTH_SUBDOMAIN}
region: ${PAGERDUTY_OAUTH_REGION}

# proxy:
# '/pagerduty':
# target: https://api.pagerduty.com
# headers:
# Authorization: Token token=${PAGERDUTY_TOKEN}
### Example for how to add a proxy endpoint for the frontend.
### A typical reason to do this is to handle HTTPS and CORS for internal services.
# endpoints:
# '/test':
# target: 'https://example.com'
# changeOrigin: true

# Reference documentation http://backstage.io/docs/features/techdocs/configuration
# Note: After experimenting with basic setup, use CI/CD to generate docs
# and an external cloud storage when deploying TechDocs for production use-case.
# https://backstage.io/docs/features/techdocs/how-to-guides#how-to-migrate-from-techdocs-basic-to-recommended-deployment-approach
techdocs:
builder: 'local' # Alternatives - 'external'
generator:
runIn: 'docker' # Alternatives - 'local'
publisher:
type: 'local' # Alternatives - 'googleGcs' or 'awsS3'. Read documentation for using alternatives.

auth:
# see https://backstage.io/docs/auth/ to learn about auth providers
providers: {}

scaffolder:
# see https://backstage.io/docs/features/software-templates/configuration for software template options

catalog:
import:
entityFilename: catalog-info.yaml
pullRequestBranchName: backstage-integration
rules:
- allow: [Component, System, API, Resource, Location]
locations:
# Local example data, file locations are relative to the backend process, typically `packages/backend`
- type: file
target: ../../examples/entities.yaml

# Local example template
- type: file
target: ../../examples/template/template.yaml
rules:
- allow: [Template]

# Local example organizational data
- type: file
target: ../../examples/org.yaml
rules:
- allow: [User, Group]

## Uncomment these lines to add more example data
# - type: url
# target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/all.yaml

## Uncomment these lines to add an example org
# - type: url
# target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme-corp.yaml
# rules:
# - allow: [User, Group]
8 changes: 8 additions & 0 deletions config.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import { PagerDutyOAuthConfig } from '@pagerduty/backstage-plugin-common';

export interface Config {
/**
* Configuration for the PagerDuty plugin
Expand All @@ -29,5 +32,10 @@ export interface Config {
* @visibility frontend
*/
apiToken?: string;
/**
* Optional PagerDuty Scoped OAuth Token used in API calls from the backend component.
* @visibility frontend
*/
oauth?: PagerDutyOAuthConfig;
};
}
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@
"zod": "^3.22.4"
},
"peerDependencies": {
"@pagerduty/backstage-plugin-common": "^0.0.2"
"@pagerduty/backstage-plugin-common": "^0.1.0"
},
"devDependencies": {
"@backstage/cli": "^0.24.0",
"@pagerduty/backstage-plugin-common": "^0.0.2",
"@pagerduty/backstage-plugin-common": "^0.1.0",
"@types/node": "^20.9.2",
"@types/supertest": "^2.0.12",
"@types/webpack-env": "1.18.4",
Expand Down
Loading

0 comments on commit 431de63

Please sign in to comment.