@red-hat-developer-hub/backstage-plugin-app-auth 1.1.1 → 1.2.0

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,11 @@
1
1
  # @red-hat-developer-hub/backstage-plugin-app-auth
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d608526: Replaces the broken Guest/GitHub fallback with a descriptive ErrorPanel when auth.providers is empty or misconfigured. Removed DEFAULT_PROVIDER = 'github', auth providers need to explicitly installed dynamically. Also removed behavior when default Guest login when `auth.environment` is development.
8
+
3
9
  ## 1.1.1
4
10
 
5
11
  ### Patch Changes
package/dist/alpha.d.ts CHANGED
@@ -10,6 +10,9 @@ declare const signInTranslationRef: _backstage_frontend_plugin_api.TranslationRe
10
10
  readonly "signIn.config.missingAuthEnvironment.error": "Missing required app configuration: auth.environment must be set";
11
11
  readonly "signIn.config.missingAuthEnvironment.panelTitle": "Sign-in is not available";
12
12
  readonly "signIn.config.missingAuthEnvironment.description": "Set {{ authEnvKey }} in your app configuration (for example {{ devEnv }} for local use or {{ prodEnv }} in deployed environments). Without it, the app cannot safely determine which sign-in options to offer.";
13
+ readonly "signIn.config.noConfiguredProviders.error": "No authentication providers are configured";
14
+ readonly "signIn.config.noConfiguredProviders.panelTitle": "Sign-in is not available";
15
+ readonly "signIn.config.noConfiguredProviders.description": "To enable sign-in, configure at least one authentication provider in your app configuration under {{ authProvidersKey }}.";
13
16
  readonly "signIn.providers.auth0.title": "Auth0";
14
17
  readonly "signIn.providers.auth0.message": "Sign in using Auth0";
15
18
  readonly "signIn.providers.atlassian.title": "Atlassian";
@@ -6,8 +6,8 @@ import Typography from '@mui/material/Typography';
6
6
  import { auth0AuthApiRef, oidcAuthApiRef, keycloakAuthApiRef, pingfederateAuthApiRef, samlAuthApiRef } from '../AuthApiRefs.esm.js';
7
7
  import { signInTranslationRef } from '../translations/signIn.esm.js';
8
8
 
9
- const DEFAULT_PROVIDER = "github";
10
9
  const createProviders = (t) => /* @__PURE__ */ new Map([
10
+ ["guest", "guest"],
11
11
  [
12
12
  "auth0",
13
13
  {
@@ -159,12 +159,10 @@ function SignInPage(props) {
159
159
  }
160
160
  );
161
161
  }
162
- const isDevEnv = authEnvironment === "development";
163
162
  const signInPage = configApi.getOptional("signInPage");
164
163
  let providerNames;
165
164
  if (signInPage === void 0) {
166
- const fromAuth = configApi.getOptionalConfig("auth.providers")?.keys()?.filter((providerId) => providerId !== "guest") ?? [];
167
- providerNames = fromAuth.length > 0 ? fromAuth : [DEFAULT_PROVIDER];
165
+ providerNames = configApi.getOptionalConfig("auth.providers")?.keys() ?? [];
168
166
  } else {
169
167
  providerNames = Array.isArray(signInPage) ? signInPage : [signInPage];
170
168
  }
@@ -173,23 +171,34 @@ function SignInPage(props) {
173
171
  (config) => config !== void 0
174
172
  );
175
173
  if (providerConfigs.length === 0) {
176
- const defaultProvider = providers.get(DEFAULT_PROVIDER);
177
- if (defaultProvider) providerConfigs.push(defaultProvider);
174
+ return /* @__PURE__ */ jsx(
175
+ ErrorPanel,
176
+ {
177
+ error: new Error(t("signIn.config.noConfiguredProviders.error")),
178
+ title: t("signIn.config.noConfiguredProviders.panelTitle"),
179
+ children: /* @__PURE__ */ jsx(Typography, { variant: "body2", component: "div", children: t("signIn.config.noConfiguredProviders.description", {
180
+ replace: {
181
+ authProvidersKey: /* @__PURE__ */ jsx("code", { children: "auth.providers" })
182
+ }
183
+ }) })
184
+ }
185
+ );
178
186
  }
179
- if (providerConfigs.some((config) => typeof config === "string")) {
187
+ if (providerConfigs.some(
188
+ (config) => typeof config === "string" && config !== "guest"
189
+ )) {
180
190
  const proxiedProvider = providerConfigs.find(
181
191
  (config) => typeof config === "string"
182
192
  );
183
193
  return /* @__PURE__ */ jsx(ProxiedSignInPage, { ...props, provider: proxiedProvider });
184
194
  }
185
- const providerList = isDevEnv ? ["guest", ...providerConfigs] : providerConfigs;
186
195
  return /* @__PURE__ */ jsx(
187
196
  SignInPage$1,
188
197
  {
189
198
  ...props,
190
199
  title: t("signIn.page.title"),
191
200
  align: "center",
192
- providers: providerList
201
+ providers: providerConfigs
193
202
  }
194
203
  );
195
204
  }
@@ -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 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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"}
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 createProviders = (t: (key: string, params?: any) => string) =>\n new Map<string, SignInProviderConfig | string>([\n ['guest', 'guest'],\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\n const signInPage = configApi.getOptional<string | string[]>('signInPage');\n let providerNames: string[];\n if (signInPage === undefined) {\n providerNames = configApi.getOptionalConfig('auth.providers')?.keys() ?? [];\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 return (\n <ErrorPanel\n error={new Error(t('signIn.config.noConfiguredProviders.error'))}\n title={t('signIn.config.noConfiguredProviders.panelTitle')}\n >\n <Typography variant=\"body2\" component=\"div\">\n {t('signIn.config.noConfiguredProviders.description', {\n replace: {\n authProvidersKey: <code>auth.providers</code>,\n },\n })}\n </Typography>\n </ErrorPanel>\n );\n }\n\n if (\n providerConfigs.some(\n config => typeof config === 'string' && config !== 'guest',\n )\n ) {\n const proxiedProvider = providerConfigs.find(\n config => typeof config === 'string',\n ) as string;\n return <ProxiedSignInPage {...props} provider={proxiedProvider} />;\n }\n\n return (\n <CCSignInPage\n {...props}\n title={t('signIn.page.title')}\n align=\"center\"\n providers={providerConfigs as SignInProviderConfig[]}\n />\n );\n}\n"],"names":["CCSignInPage"],"mappings":"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"}
@@ -12,6 +12,11 @@ const signInTranslationRef = createTranslationRef({
12
12
  error: "Missing required app configuration: auth.environment must be set",
13
13
  panelTitle: "Sign-in is not available",
14
14
  description: "Set {{ authEnvKey }} in your app configuration (for example {{ devEnv }} for local use or {{ prodEnv }} in deployed environments). Without it, the app cannot safely determine which sign-in options to offer."
15
+ },
16
+ noConfiguredProviders: {
17
+ error: "No authentication providers are configured",
18
+ panelTitle: "Sign-in is not available",
19
+ description: "To enable sign-in, configure at least one authentication provider in your app configuration under {{ authProvidersKey }}."
15
20
  }
16
21
  },
17
22
  providers: {
@@ -1 +1 @@
1
- {"version":3,"file":"signIn.esm.js","sources":["../../src/translations/signIn.ts"],"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 { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/**\n * Sign-in page messages (English). Same key shape as legacy RHDH app signIn for compatibility.\n *\n * @alpha\n */\nexport const signInTranslationRef = createTranslationRef({\n id: 'plugin.app-auth.sign-in',\n messages: {\n signIn: {\n page: {\n title: 'Select a sign-in method',\n },\n config: {\n missingAuthEnvironment: {\n error:\n 'Missing required app configuration: auth.environment must be set',\n panelTitle: 'Sign-in is not available',\n description:\n 'Set {{ authEnvKey }} in your app configuration (for example {{ devEnv }} for local use or {{ prodEnv }} in deployed environments). Without it, the app cannot safely determine which sign-in options to offer.',\n },\n },\n providers: {\n auth0: {\n title: 'Auth0',\n message: 'Sign in using Auth0',\n },\n atlassian: {\n title: 'Atlassian',\n message: 'Sign in using Atlassian',\n },\n microsoft: {\n title: 'Microsoft',\n message: 'Sign in using Microsoft',\n },\n bitbucket: {\n title: 'Bitbucket',\n message: 'Sign in using Bitbucket',\n },\n bitbucketServer: {\n title: 'Bitbucket Server',\n message: 'Sign in using Bitbucket Server',\n },\n github: {\n title: 'GitHub',\n message: 'Sign in using GitHub',\n },\n gitlab: {\n title: 'GitLab',\n message: 'Sign in using GitLab',\n },\n google: {\n title: 'Google',\n message: 'Sign in using Google',\n },\n oidc: {\n title: 'OIDC',\n message: 'Sign in using OIDC',\n },\n keycloak: {\n title: 'Keycloak',\n message: 'Sign in using Keycloak',\n },\n pingfederate: {\n title: 'PingFederate',\n message: 'Sign in using PingFederate',\n },\n okta: {\n title: 'Okta',\n message: 'Sign in using Okta',\n },\n onelogin: {\n title: 'OneLogin',\n message: 'Sign in using OneLogin',\n },\n saml: {\n title: 'SAML',\n message: 'Sign in using SAML',\n },\n },\n },\n },\n});\n"],"names":[],"mappings":";;AAuBO,MAAM,uBAAuB,oBAAA,CAAqB;AAAA,EACvD,EAAA,EAAI,yBAAA;AAAA,EACJ,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO;AAAA,OACT;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,sBAAA,EAAwB;AAAA,UACtB,KAAA,EACE,kEAAA;AAAA,UACF,UAAA,EAAY,0BAAA;AAAA,UACZ,WAAA,EACE;AAAA;AACJ,OACF;AAAA,MACA,SAAA,EAAW;AAAA,QACT,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,OAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,WAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,WAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,WAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,eAAA,EAAiB;AAAA,UACf,KAAA,EAAO,kBAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,KAAA,EAAO,QAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,KAAA,EAAO,QAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,KAAA,EAAO,QAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,KAAA,EAAO,MAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,QAAA,EAAU;AAAA,UACR,KAAA,EAAO,UAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,YAAA,EAAc;AAAA,UACZ,KAAA,EAAO,cAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,KAAA,EAAO,MAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,QAAA,EAAU;AAAA,UACR,KAAA,EAAO,UAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,KAAA,EAAO,MAAA;AAAA,UACP,OAAA,EAAS;AAAA;AACX;AACF;AACF;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"signIn.esm.js","sources":["../../src/translations/signIn.ts"],"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 { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/**\n * Sign-in page messages (English). Same key shape as legacy RHDH app signIn for compatibility.\n *\n * @alpha\n */\nexport const signInTranslationRef = createTranslationRef({\n id: 'plugin.app-auth.sign-in',\n messages: {\n signIn: {\n page: {\n title: 'Select a sign-in method',\n },\n config: {\n missingAuthEnvironment: {\n error:\n 'Missing required app configuration: auth.environment must be set',\n panelTitle: 'Sign-in is not available',\n description:\n 'Set {{ authEnvKey }} in your app configuration (for example {{ devEnv }} for local use or {{ prodEnv }} in deployed environments). Without it, the app cannot safely determine which sign-in options to offer.',\n },\n noConfiguredProviders: {\n error: 'No authentication providers are configured',\n panelTitle: 'Sign-in is not available',\n description:\n 'To enable sign-in, configure at least one authentication provider in your app configuration under {{ authProvidersKey }}.',\n },\n },\n providers: {\n auth0: {\n title: 'Auth0',\n message: 'Sign in using Auth0',\n },\n atlassian: {\n title: 'Atlassian',\n message: 'Sign in using Atlassian',\n },\n microsoft: {\n title: 'Microsoft',\n message: 'Sign in using Microsoft',\n },\n bitbucket: {\n title: 'Bitbucket',\n message: 'Sign in using Bitbucket',\n },\n bitbucketServer: {\n title: 'Bitbucket Server',\n message: 'Sign in using Bitbucket Server',\n },\n github: {\n title: 'GitHub',\n message: 'Sign in using GitHub',\n },\n gitlab: {\n title: 'GitLab',\n message: 'Sign in using GitLab',\n },\n google: {\n title: 'Google',\n message: 'Sign in using Google',\n },\n oidc: {\n title: 'OIDC',\n message: 'Sign in using OIDC',\n },\n keycloak: {\n title: 'Keycloak',\n message: 'Sign in using Keycloak',\n },\n pingfederate: {\n title: 'PingFederate',\n message: 'Sign in using PingFederate',\n },\n okta: {\n title: 'Okta',\n message: 'Sign in using Okta',\n },\n onelogin: {\n title: 'OneLogin',\n message: 'Sign in using OneLogin',\n },\n saml: {\n title: 'SAML',\n message: 'Sign in using SAML',\n },\n },\n },\n },\n});\n"],"names":[],"mappings":";;AAuBO,MAAM,uBAAuB,oBAAA,CAAqB;AAAA,EACvD,EAAA,EAAI,yBAAA;AAAA,EACJ,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO;AAAA,OACT;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,sBAAA,EAAwB;AAAA,UACtB,KAAA,EACE,kEAAA;AAAA,UACF,UAAA,EAAY,0BAAA;AAAA,UACZ,WAAA,EACE;AAAA,SACJ;AAAA,QACA,qBAAA,EAAuB;AAAA,UACrB,KAAA,EAAO,4CAAA;AAAA,UACP,UAAA,EAAY,0BAAA;AAAA,UACZ,WAAA,EACE;AAAA;AACJ,OACF;AAAA,MACA,SAAA,EAAW;AAAA,QACT,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,OAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,WAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,WAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,WAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,eAAA,EAAiB;AAAA,UACf,KAAA,EAAO,kBAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,KAAA,EAAO,QAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,KAAA,EAAO,QAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,KAAA,EAAO,QAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,KAAA,EAAO,MAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,QAAA,EAAU;AAAA,UACR,KAAA,EAAO,UAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,YAAA,EAAc;AAAA,UACZ,KAAA,EAAO,cAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,KAAA,EAAO,MAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,QAAA,EAAU;AAAA,UACR,KAAA,EAAO,UAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,KAAA,EAAO,MAAA;AAAA,UACP,OAAA,EAAS;AAAA;AACX;AACF;AACF;AAEJ,CAAC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@red-hat-developer-hub/backstage-plugin-app-auth",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
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",