@red-hat-developer-hub/backstage-plugin-app-auth 0.0.3 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @red-hat-developer-hub/backstage-plugin-app-auth
2
2
 
3
+ ## 0.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 7f30033: Pin `electron-to-chromium` to `1.5.349` via Yarn resolutions so hermetic Konflux/Hermeto builds do not float to freshly published versions that 404 on the cluster npm proxy.
8
+
9
+ ## 0.1.0
10
+
11
+ ### Minor Changes
12
+
13
+ - bf36f65: Backstage version bump to v1.52.1
14
+
15
+ ### Patch Changes
16
+
17
+ - d7f7899: Make signInPage config optional and derive signInPage cards from configs defined under auth.providers
18
+
3
19
  ## 0.0.3
4
20
 
5
21
  ### Patch Changes
package/README.md CHANGED
@@ -10,3 +10,5 @@ RHDH sign-in page (multi-provider) and OIDC / Keycloak / PingFederate / Auth0 /
10
10
  ## Config
11
11
 
12
12
  Root `signInPage` (string or string[]) selects which providers appear; see `config.d.ts`. Provider ids include `oidc`, `keycloak`, and `pingfederate` (OIDC-backed; backend `auth.providers` keys must match).
13
+
14
+ By default, sign-in page follows the top-level keys under `auth.providers`. Set root `signInPage` (string or string[]) to override the list or order; see `config.d.ts`.
package/config.d.ts CHANGED
@@ -16,7 +16,8 @@
16
16
 
17
17
  export interface Config {
18
18
  /**
19
- * Sign-in provider id(s) to show on the RHDH sign-in page.
19
+ * Optional override for which sign-in provider buttons appear and in what order.
20
+ * When omitted, provider ids are taken from the keys of `auth.providers`.
20
21
  * @visibility frontend
21
22
  */
22
23
  signInPage?: string | string[];
@@ -160,11 +160,14 @@ function SignInPage(props) {
160
160
  );
161
161
  }
162
162
  const isDevEnv = authEnvironment === "development";
163
- const signInPageConfig = configApi.getOptional(
164
- "signInPage"
165
- );
166
- const configValue = signInPageConfig ?? DEFAULT_PROVIDER;
167
- const providerNames = Array.isArray(configValue) ? configValue : [configValue];
163
+ const signInPage = configApi.getOptional("signInPage");
164
+ let providerNames;
165
+ if (signInPage === void 0) {
166
+ const fromAuth = configApi.getOptionalConfig("auth.providers")?.keys()?.filter((providerId) => providerId !== "guest") ?? [];
167
+ providerNames = fromAuth.length > 0 ? fromAuth : [DEFAULT_PROVIDER];
168
+ } else {
169
+ providerNames = Array.isArray(signInPage) ? signInPage : [signInPage];
170
+ }
168
171
  const providers = createProviders(t);
169
172
  const providerConfigs = providerNames.map((name) => providers.get(name)).filter(
170
173
  (config) => config !== void 0
@@ -1 +1 @@
1
- {"version":3,"file":"SignInPage.esm.js","sources":["../../src/components/SignInPage.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ErrorPanel,\n SignInPage as CCSignInPage,\n ProxiedSignInPage,\n type SignInProviderConfig,\n} from '@backstage/core-components';\nimport {\n atlassianAuthApiRef,\n bitbucketAuthApiRef,\n bitbucketServerAuthApiRef,\n configApiRef,\n githubAuthApiRef,\n gitlabAuthApiRef,\n googleAuthApiRef,\n microsoftAuthApiRef,\n oktaAuthApiRef,\n oneloginAuthApiRef,\n useApi,\n type SignInPageProps,\n} from '@backstage/core-plugin-api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Typography from '@mui/material/Typography';\n\nimport {\n auth0AuthApiRef,\n keycloakAuthApiRef,\n oidcAuthApiRef,\n pingfederateAuthApiRef,\n samlAuthApiRef,\n} from '../AuthApiRefs';\nimport { signInTranslationRef } from '../translations/signIn';\n\nconst DEFAULT_PROVIDER = 'github';\n\nconst createProviders = (t: (key: string, params?: any) => string) =>\n new Map<string, SignInProviderConfig | string>([\n [\n 'auth0',\n {\n id: 'auth0-auth-provider',\n title: t('signIn.providers.auth0.title'),\n message: t('signIn.providers.auth0.message'),\n apiRef: auth0AuthApiRef,\n },\n ],\n [\n 'atlassian',\n {\n id: 'atlassian-auth-provider',\n title: t('signIn.providers.atlassian.title'),\n message: t('signIn.providers.atlassian.message'),\n apiRef: atlassianAuthApiRef,\n },\n ],\n [\n 'microsoft',\n {\n id: 'microsoft-auth-provider',\n title: t('signIn.providers.microsoft.title'),\n message: t('signIn.providers.microsoft.message'),\n apiRef: microsoftAuthApiRef,\n },\n ],\n ['azure-easyauth', 'azure-easyauth'],\n [\n 'bitbucket',\n {\n id: 'bitbucket-auth-provider',\n title: t('signIn.providers.bitbucket.title'),\n message: t('signIn.providers.bitbucket.message'),\n apiRef: bitbucketAuthApiRef,\n },\n ],\n [\n 'bitbucketServer',\n {\n id: 'bitbucket-server-auth-provider',\n title: t('signIn.providers.bitbucketServer.title'),\n message: t('signIn.providers.bitbucketServer.message'),\n apiRef: bitbucketServerAuthApiRef,\n },\n ],\n ['cfaccess', 'cfaccess'],\n [\n 'github',\n {\n id: 'github-auth-provider',\n title: t('signIn.providers.github.title'),\n message: t('signIn.providers.github.message'),\n apiRef: githubAuthApiRef,\n },\n ],\n [\n 'gitlab',\n {\n id: 'gitlab-auth-provider',\n title: t('signIn.providers.gitlab.title'),\n message: t('signIn.providers.gitlab.message'),\n apiRef: gitlabAuthApiRef,\n },\n ],\n [\n 'google',\n {\n id: 'google-auth-provider',\n title: t('signIn.providers.google.title'),\n message: t('signIn.providers.google.message'),\n apiRef: googleAuthApiRef,\n },\n ],\n ['gcp-iap', 'gcp-iap'],\n [\n 'oidc',\n {\n id: 'oidc-auth-provider',\n title: t('signIn.providers.oidc.title'),\n message: t('signIn.providers.oidc.message'),\n apiRef: oidcAuthApiRef,\n },\n ],\n [\n 'keycloak',\n {\n id: 'keycloak-auth-provider',\n title: t('signIn.providers.keycloak.title'),\n message: t('signIn.providers.keycloak.message'),\n apiRef: keycloakAuthApiRef,\n },\n ],\n [\n 'pingfederate',\n {\n id: 'pingfederate-auth-provider',\n title: t('signIn.providers.pingfederate.title'),\n message: t('signIn.providers.pingfederate.message'),\n apiRef: pingfederateAuthApiRef,\n },\n ],\n [\n 'okta',\n {\n id: 'okta-auth-provider',\n title: t('signIn.providers.okta.title'),\n message: t('signIn.providers.okta.message'),\n apiRef: oktaAuthApiRef,\n },\n ],\n ['oauth2Proxy', 'oauth2Proxy'],\n [\n 'onelogin',\n {\n id: 'onelogin-auth-provider',\n title: t('signIn.providers.onelogin.title'),\n message: t('signIn.providers.onelogin.message'),\n apiRef: oneloginAuthApiRef,\n },\n ],\n [\n 'saml',\n {\n id: 'saml-auth-provider',\n title: t('signIn.providers.saml.title'),\n message: t('signIn.providers.saml.message'),\n apiRef: samlAuthApiRef,\n },\n ],\n ]);\n\n/**\n * RHDH multi-provider sign-in page (mirrors classic app `SignInPage` behavior for NFS).\n *\n * @alpha\n */\nexport function SignInPage(props: SignInPageProps): React.JSX.Element {\n const configApi = useApi(configApiRef);\n const { t } = useTranslationRef(signInTranslationRef);\n const authEnvironment = configApi.getOptionalString('auth.environment');\n if (!authEnvironment?.trim()) {\n return (\n <ErrorPanel\n error={new Error(t('signIn.config.missingAuthEnvironment.error'))}\n title={t('signIn.config.missingAuthEnvironment.panelTitle')}\n >\n <Typography variant=\"body2\" component=\"div\">\n {t('signIn.config.missingAuthEnvironment.description', {\n replace: {\n authEnvKey: <code>auth.environment</code>,\n devEnv: <code>development</code>,\n prodEnv: <code>production</code>,\n },\n })}\n </Typography>\n </ErrorPanel>\n );\n }\n const isDevEnv = authEnvironment === 'development';\n\n const signInPageConfig = configApi.getOptional<string | string[]>(\n 'signInPage',\n );\n const configValue = signInPageConfig ?? DEFAULT_PROVIDER;\n const providerNames = Array.isArray(configValue)\n ? configValue\n : [configValue];\n\n const providers = createProviders(t);\n\n const providerConfigs = providerNames\n .map(name => providers.get(name))\n .filter(\n (config): config is SignInProviderConfig | string => config !== undefined,\n );\n\n if (providerConfigs.length === 0) {\n const defaultProvider = providers.get(DEFAULT_PROVIDER);\n if (defaultProvider) providerConfigs.push(defaultProvider);\n }\n\n if (providerConfigs.some(config => typeof config === 'string')) {\n const proxiedProvider = providerConfigs.find(\n config => typeof config === 'string',\n ) as string;\n return <ProxiedSignInPage {...props} provider={proxiedProvider} />;\n }\n\n const providerList = isDevEnv\n ? ['guest' as const, ...(providerConfigs as SignInProviderConfig[])]\n : (providerConfigs as SignInProviderConfig[]);\n\n return (\n <CCSignInPage\n {...props}\n title={t('signIn.page.title')}\n align=\"center\"\n providers={providerList}\n />\n );\n}\n"],"names":["CCSignInPage"],"mappings":"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"}
1
+ {"version":3,"file":"SignInPage.esm.js","sources":["../../src/components/SignInPage.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ErrorPanel,\n SignInPage as CCSignInPage,\n ProxiedSignInPage,\n type SignInProviderConfig,\n} from '@backstage/core-components';\nimport {\n atlassianAuthApiRef,\n bitbucketAuthApiRef,\n bitbucketServerAuthApiRef,\n configApiRef,\n githubAuthApiRef,\n gitlabAuthApiRef,\n googleAuthApiRef,\n microsoftAuthApiRef,\n oktaAuthApiRef,\n oneloginAuthApiRef,\n useApi,\n type SignInPageProps,\n} from '@backstage/core-plugin-api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Typography from '@mui/material/Typography';\n\nimport {\n auth0AuthApiRef,\n keycloakAuthApiRef,\n oidcAuthApiRef,\n pingfederateAuthApiRef,\n samlAuthApiRef,\n} from '../AuthApiRefs';\nimport { signInTranslationRef } from '../translations/signIn';\n\nconst DEFAULT_PROVIDER = 'github';\n\nconst createProviders = (t: (key: string, params?: any) => string) =>\n new Map<string, SignInProviderConfig | string>([\n [\n 'auth0',\n {\n id: 'auth0-auth-provider',\n title: t('signIn.providers.auth0.title'),\n message: t('signIn.providers.auth0.message'),\n apiRef: auth0AuthApiRef,\n },\n ],\n [\n 'atlassian',\n {\n id: 'atlassian-auth-provider',\n title: t('signIn.providers.atlassian.title'),\n message: t('signIn.providers.atlassian.message'),\n apiRef: atlassianAuthApiRef,\n },\n ],\n [\n 'microsoft',\n {\n id: 'microsoft-auth-provider',\n title: t('signIn.providers.microsoft.title'),\n message: t('signIn.providers.microsoft.message'),\n apiRef: microsoftAuthApiRef,\n },\n ],\n ['azure-easyauth', 'azure-easyauth'],\n [\n 'bitbucket',\n {\n id: 'bitbucket-auth-provider',\n title: t('signIn.providers.bitbucket.title'),\n message: t('signIn.providers.bitbucket.message'),\n apiRef: bitbucketAuthApiRef,\n },\n ],\n [\n 'bitbucketServer',\n {\n id: 'bitbucket-server-auth-provider',\n title: t('signIn.providers.bitbucketServer.title'),\n message: t('signIn.providers.bitbucketServer.message'),\n apiRef: bitbucketServerAuthApiRef,\n },\n ],\n ['cfaccess', 'cfaccess'],\n [\n 'github',\n {\n id: 'github-auth-provider',\n title: t('signIn.providers.github.title'),\n message: t('signIn.providers.github.message'),\n apiRef: githubAuthApiRef,\n },\n ],\n [\n 'gitlab',\n {\n id: 'gitlab-auth-provider',\n title: t('signIn.providers.gitlab.title'),\n message: t('signIn.providers.gitlab.message'),\n apiRef: gitlabAuthApiRef,\n },\n ],\n [\n 'google',\n {\n id: 'google-auth-provider',\n title: t('signIn.providers.google.title'),\n message: t('signIn.providers.google.message'),\n apiRef: googleAuthApiRef,\n },\n ],\n ['gcp-iap', 'gcp-iap'],\n [\n 'oidc',\n {\n id: 'oidc-auth-provider',\n title: t('signIn.providers.oidc.title'),\n message: t('signIn.providers.oidc.message'),\n apiRef: oidcAuthApiRef,\n },\n ],\n [\n 'keycloak',\n {\n id: 'keycloak-auth-provider',\n title: t('signIn.providers.keycloak.title'),\n message: t('signIn.providers.keycloak.message'),\n apiRef: keycloakAuthApiRef,\n },\n ],\n [\n 'pingfederate',\n {\n id: 'pingfederate-auth-provider',\n title: t('signIn.providers.pingfederate.title'),\n message: t('signIn.providers.pingfederate.message'),\n apiRef: pingfederateAuthApiRef,\n },\n ],\n [\n 'okta',\n {\n id: 'okta-auth-provider',\n title: t('signIn.providers.okta.title'),\n message: t('signIn.providers.okta.message'),\n apiRef: oktaAuthApiRef,\n },\n ],\n ['oauth2Proxy', 'oauth2Proxy'],\n [\n 'onelogin',\n {\n id: 'onelogin-auth-provider',\n title: t('signIn.providers.onelogin.title'),\n message: t('signIn.providers.onelogin.message'),\n apiRef: oneloginAuthApiRef,\n },\n ],\n [\n 'saml',\n {\n id: 'saml-auth-provider',\n title: t('signIn.providers.saml.title'),\n message: t('signIn.providers.saml.message'),\n apiRef: samlAuthApiRef,\n },\n ],\n ]);\n\n/**\n * RHDH multi-provider sign-in page (mirrors classic app `SignInPage` behavior for NFS).\n *\n * @alpha\n */\nexport function SignInPage(props: SignInPageProps): React.JSX.Element {\n const configApi = useApi(configApiRef);\n const { t } = useTranslationRef(signInTranslationRef);\n const authEnvironment = configApi.getOptionalString('auth.environment');\n if (!authEnvironment?.trim()) {\n return (\n <ErrorPanel\n error={new Error(t('signIn.config.missingAuthEnvironment.error'))}\n title={t('signIn.config.missingAuthEnvironment.panelTitle')}\n >\n <Typography variant=\"body2\" component=\"div\">\n {t('signIn.config.missingAuthEnvironment.description', {\n replace: {\n authEnvKey: <code>auth.environment</code>,\n devEnv: <code>development</code>,\n prodEnv: <code>production</code>,\n },\n })}\n </Typography>\n </ErrorPanel>\n );\n }\n const isDevEnv = authEnvironment === 'development';\n\n const signInPage = configApi.getOptional<string | string[]>('signInPage');\n let providerNames: string[];\n if (signInPage === undefined) {\n const fromAuth =\n configApi\n .getOptionalConfig('auth.providers')\n ?.keys()\n ?.filter(providerId => providerId !== 'guest') ?? [];\n providerNames = fromAuth.length > 0 ? fromAuth : [DEFAULT_PROVIDER];\n } else {\n providerNames = Array.isArray(signInPage) ? signInPage : [signInPage];\n }\n\n const providers = createProviders(t);\n\n const providerConfigs = providerNames\n .map(name => providers.get(name))\n .filter(\n (config): config is SignInProviderConfig | string => config !== undefined,\n );\n\n if (providerConfigs.length === 0) {\n const defaultProvider = providers.get(DEFAULT_PROVIDER);\n if (defaultProvider) providerConfigs.push(defaultProvider);\n }\n\n if (providerConfigs.some(config => typeof config === 'string')) {\n const proxiedProvider = providerConfigs.find(\n config => typeof config === 'string',\n ) as string;\n return <ProxiedSignInPage {...props} provider={proxiedProvider} />;\n }\n\n const providerList = isDevEnv\n ? ['guest' as const, ...(providerConfigs as SignInProviderConfig[])]\n : (providerConfigs as SignInProviderConfig[]);\n\n return (\n <CCSignInPage\n {...props}\n title={t('signIn.page.title')}\n align=\"center\"\n providers={providerList}\n />\n );\n}\n"],"names":["CCSignInPage"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@red-hat-developer-hub/backstage-plugin-app-auth",
3
- "version": "0.0.3",
3
+ "version": "0.1.1",
4
4
  "license": "Apache-2.0",
5
5
  "description": "RHDH sign-in page and OIDC/Auth0/SAML frontend auth APIs for the new frontend system",
6
6
  "main": "./dist/index.esm.js",
@@ -59,19 +59,19 @@
59
59
  "postpack": "backstage-cli package postpack"
60
60
  },
61
61
  "dependencies": {
62
- "@backstage/core-app-api": "^1.19.6",
63
- "@backstage/core-components": "^0.18.8",
64
- "@backstage/core-plugin-api": "^1.12.4",
65
- "@backstage/frontend-plugin-api": "^0.15.1",
66
- "@backstage/plugin-app": "^0.4.2",
62
+ "@backstage/core-app-api": "^1.20.2",
63
+ "@backstage/core-components": "^0.18.11",
64
+ "@backstage/core-plugin-api": "^1.12.7",
65
+ "@backstage/frontend-plugin-api": "^0.17.2",
66
+ "@backstage/plugin-app": "^0.5.0",
67
67
  "@mui/material": "5.18.0"
68
68
  },
69
69
  "peerDependencies": {
70
70
  "react": "^16.13.1 || ^17.0.0 || ^18.0.0"
71
71
  },
72
72
  "devDependencies": {
73
- "@backstage/cli": "^0.36.0",
74
- "@backstage/test-utils": "^1.7.16",
73
+ "@backstage/cli": "^0.36.3",
74
+ "@backstage/test-utils": "^1.7.19",
75
75
  "@testing-library/jest-dom": "^6.0.0",
76
76
  "@testing-library/react": "^16.0.0",
77
77
  "@types/react": "^18",