@red-hat-developer-hub/backstage-plugin-app-auth 0.0.3 → 0.1.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 +10 -0
- package/README.md +2 -0
- package/config.d.ts +2 -1
- package/dist/components/SignInPage.esm.js +8 -5
- package/dist/components/SignInPage.esm.js.map +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @red-hat-developer-hub/backstage-plugin-app-auth
|
|
2
2
|
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- bf36f65: Backstage version bump to v1.52.1
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- d7f7899: Make signInPage config optional and derive signInPage cards from configs defined under auth.providers
|
|
12
|
+
|
|
3
13
|
## 0.0.3
|
|
4
14
|
|
|
5
15
|
### 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
|
-
*
|
|
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
|
|
164
|
-
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
|
|
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":";;;;;;;;AAgDA,MAAM,gBAAA,GAAmB,QAAA;AAEzB,MAAM,eAAA,GAAkB,CAAC,CAAA,qBACvB,IAAI,GAAA,CAA2C;AAAA,EAC7C;AAAA,IACE,OAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,qBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,8BAA8B,CAAA;AAAA,MACvC,OAAA,EAAS,EAAE,gCAAgC,CAAA;AAAA,MAC3C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,WAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,yBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,kCAAkC,CAAA;AAAA,MAC3C,OAAA,EAAS,EAAE,oCAAoC,CAAA;AAAA,MAC/C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,WAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,yBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,kCAAkC,CAAA;AAAA,MAC3C,OAAA,EAAS,EAAE,oCAAoC,CAAA;AAAA,MAC/C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA,CAAC,kBAAkB,gBAAgB,CAAA;AAAA,EACnC;AAAA,IACE,WAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,yBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,kCAAkC,CAAA;AAAA,MAC3C,OAAA,EAAS,EAAE,oCAAoC,CAAA;AAAA,MAC/C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,iBAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,gCAAA;AAAA,MACJ,KAAA,EAAO,EAAE,wCAAwC,CAAA;AAAA,MACjD,OAAA,EAAS,EAAE,0CAA0C,CAAA;AAAA,MACrD,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA,CAAC,YAAY,UAAU,CAAA;AAAA,EACvB;AAAA,IACE,QAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,sBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,MACxC,OAAA,EAAS,EAAE,iCAAiC,CAAA;AAAA,MAC5C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,QAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,sBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,MACxC,OAAA,EAAS,EAAE,iCAAiC,CAAA;AAAA,MAC5C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,QAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,sBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,MACxC,OAAA,EAAS,EAAE,iCAAiC,CAAA;AAAA,MAC5C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA,CAAC,WAAW,SAAS,CAAA;AAAA,EACrB;AAAA,IACE,MAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,oBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,MACtC,OAAA,EAAS,EAAE,+BAA+B,CAAA;AAAA,MAC1C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,UAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,wBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,iCAAiC,CAAA;AAAA,MAC1C,OAAA,EAAS,EAAE,mCAAmC,CAAA;AAAA,MAC9C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,cAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,4BAAA;AAAA,MACJ,KAAA,EAAO,EAAE,qCAAqC,CAAA;AAAA,MAC9C,OAAA,EAAS,EAAE,uCAAuC,CAAA;AAAA,MAClD,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,MAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,oBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,MACtC,OAAA,EAAS,EAAE,+BAA+B,CAAA;AAAA,MAC1C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA,CAAC,eAAe,aAAa,CAAA;AAAA,EAC7B;AAAA,IACE,UAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,wBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,iCAAiC,CAAA;AAAA,MAC1C,OAAA,EAAS,EAAE,mCAAmC,CAAA;AAAA,MAC9C,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA;AAAA,IACE,MAAA;AAAA,IACA;AAAA,MACE,EAAA,EAAI,oBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,MACtC,OAAA,EAAS,EAAE,+BAA+B,CAAA;AAAA,MAC1C,MAAA,EAAQ;AAAA;AACV;AAEJ,CAAC,CAAA;AAOI,SAAS,WAAW,KAAA,EAA2C;AACpE,EAAA,MAAM,SAAA,GAAY,OAAO,YAAY,CAAA;AACrC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,MAAM,eAAA,GAAkB,SAAA,CAAU,iBAAA,CAAkB,kBAAkB,CAAA;AACtE,EAAA,IAAI,CAAC,eAAA,EAAiB,IAAA,EAAK,EAAG;AAC5B,IAAA,uBACE,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,IAAI,KAAA,CAAM,CAAA,CAAE,4CAA4C,CAAC,CAAA;AAAA,QAChE,KAAA,EAAO,EAAE,iDAAiD,CAAA;AAAA,QAE1D,8BAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAQ,SAAA,EAAU,KAAA,EACnC,YAAE,kDAAA,EAAoD;AAAA,UACrD,OAAA,EAAS;AAAA,YACP,UAAA,kBAAY,GAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,YAClC,MAAA,kBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,YACzB,OAAA,kBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,YAAA,EAAU;AAAA;AAC3B,SACD,CAAA,EACH;AAAA;AAAA,KACF;AAAA,EAEJ;AACA,EAAA,MAAM,WAAW,eAAA,KAAoB,aAAA;AAErC,EAAA,MAAM,UAAA,GAAa,SAAA,CAAU,WAAA,CAA+B,YAAY,CAAA;AACxE,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,IAAA,MAAM,QAAA,GACJ,SAAA,CACG,iBAAA,CAAkB,gBAAgB,CAAA,EACjC,IAAA,EAAK,EACL,MAAA,CAAO,CAAA,UAAA,KAAc,UAAA,KAAe,OAAO,CAAA,IAAK,EAAC;AACvD,IAAA,aAAA,GAAgB,QAAA,CAAS,MAAA,GAAS,CAAA,GAAI,QAAA,GAAW,CAAC,gBAAgB,CAAA;AAAA,EACpE,CAAA,MAAO;AACL,IAAA,aAAA,GAAgB,MAAM,OAAA,CAAQ,UAAU,CAAA,GAAI,UAAA,GAAa,CAAC,UAAU,CAAA;AAAA,EACtE;AAEA,EAAA,MAAM,SAAA,GAAY,gBAAgB,CAAC,CAAA;AAEnC,EAAA,MAAM,eAAA,GAAkB,cACrB,GAAA,CAAI,CAAA,IAAA,KAAQ,UAAU,GAAA,CAAI,IAAI,CAAC,CAAA,CAC/B,MAAA;AAAA,IACC,CAAC,WAAoD,MAAA,KAAW;AAAA,GAClE;AAEF,EAAA,IAAI,eAAA,CAAgB,WAAW,CAAA,EAAG;AAChC,IAAA,MAAM,eAAA,GAAkB,SAAA,CAAU,GAAA,CAAI,gBAAgB,CAAA;AACtD,IAAA,IAAI,eAAA,EAAiB,eAAA,CAAgB,IAAA,CAAK,eAAe,CAAA;AAAA,EAC3D;AAEA,EAAA,IAAI,gBAAgB,IAAA,CAAK,CAAA,MAAA,KAAU,OAAO,MAAA,KAAW,QAAQ,CAAA,EAAG;AAC9D,IAAA,MAAM,kBAAkB,eAAA,CAAgB,IAAA;AAAA,MACtC,CAAA,MAAA,KAAU,OAAO,MAAA,KAAW;AAAA,KAC9B;AACA,IAAA,uBAAO,GAAA,CAAC,iBAAA,EAAA,EAAmB,GAAG,KAAA,EAAO,UAAU,eAAA,EAAiB,CAAA;AAAA,EAClE;AAEA,EAAA,MAAM,eAAe,QAAA,GACjB,CAAC,OAAA,EAAkB,GAAI,eAA0C,CAAA,GAChE,eAAA;AAEL,EAAA,uBACE,GAAA;AAAA,IAACA,YAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,MAC5B,KAAA,EAAM,QAAA;AAAA,MACN,SAAA,EAAW;AAAA;AAAA,GACb;AAEJ;;;;"}
|
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
|
+
"version": "0.1.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",
|
|
@@ -59,19 +59,19 @@
|
|
|
59
59
|
"postpack": "backstage-cli package postpack"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@backstage/core-app-api": "^1.
|
|
63
|
-
"@backstage/core-components": "^0.18.
|
|
64
|
-
"@backstage/core-plugin-api": "^1.12.
|
|
65
|
-
"@backstage/frontend-plugin-api": "^0.
|
|
66
|
-
"@backstage/plugin-app": "^0.
|
|
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.
|
|
74
|
-
"@backstage/test-utils": "^1.7.
|
|
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",
|