From dbcc20911e9ec7bed0604c3e35ddcb00565da067 Mon Sep 17 00:00:00 2001 From: Manabu Mccloskey Date: Mon, 2 Oct 2023 11:24:15 -0700 Subject: [PATCH] enable guest auth for local environment --- packages/app/src/App.tsx | 42 +++++++++++++--------- packages/backend/src/plugins/auth.ts | 52 +++++++++++++++++----------- 2 files changed, 58 insertions(+), 36 deletions(-) diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index e97ca3d..a1f68db 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -43,24 +43,34 @@ import { KubernetesClusterPickerExtension } from '@cnoe-io/plugin-scaffolder-act import { ThemeProvider } from '@material-ui/core/styles'; import CssBaseline from '@material-ui/core/CssBaseline'; import LightIcon from '@material-ui/icons/WbSunny'; -import {CNOEHomepage, cnoeLightTheme, cnoeDarkTheme} from '@internal/cnoe-ui-plugin' +import { + CNOEHomepage, + cnoeLightTheme, + cnoeDarkTheme, +} from '@internal/cnoe-ui-plugin'; +import { configApiRef, useApi } from '@backstage/core-plugin-api'; const app = createApp({ apis, components: { - // SignInPage: (props) => , - SignInPage: props => ( - - ), + SignInPage: props => { + const configApi = useApi(configApiRef); + if (configApi.getString('auth.environment') === 'local') { + return ; + } + return ( + + ); + }, }, bindRoutes({ bind }) { bind(catalogPlugin.externalRoutes, { @@ -100,13 +110,13 @@ const app = createApp({ ), }, - ] + ], }); const routes = ( } /> - } /> + } /> } /> { - return await createRouter({ + const opts = { logger: env.logger, config: env.config, database: env.database, @@ -22,24 +22,36 @@ export default async function createPlugin( tokenManager: env.tokenManager, providerFactories: { ...defaultAuthProviderFactories, - 'keycloak-oidc': providers.oidc.create({ - signIn: { - resolver(info, ctx) { - const userRef = stringifyEntityRef({ - kind: 'User', - name: info.result.userinfo.sub, - namespace: DEFAULT_NAMESPACE, - }); - return ctx.issueToken({ - claims: { - sub: userRef, - ent: [userRef], - groups: (info.result.userinfo.groups as JsonArray) || [], - }, - }); - }, - }, - }), }, - }); + }; + + const envName = env.config + .getOptionalConfig('auth') + ?.getOptionalString('auth'); + if (envName === 'local') { + return await createRouter(opts); + } + + const keycloakAuth = (opts.providerFactories['keycloak-oidc'] = + providers.oidc.create({ + signIn: { + resolver(info, ctx) { + const userRef = stringifyEntityRef({ + kind: 'User', + name: info.result.userinfo.sub, + namespace: DEFAULT_NAMESPACE, + }); + return ctx.issueToken({ + claims: { + sub: userRef, + ent: [userRef], + groups: (info.result.userinfo.groups as JsonArray) || [], + }, + }); + }, + }, + })); + opts.providerFactories['keycloak-oidc'] = keycloakAuth; + + return await createRouter(opts); }