diff --git a/packages/frontend-app-api/package.json b/packages/frontend-app-api/package.json index 097f5a3611..fb5e982058 100644 --- a/packages/frontend-app-api/package.json +++ b/packages/frontend-app-api/package.json @@ -38,7 +38,6 @@ "@backstage/core-plugin-api": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/frontend-plugin-api": "workspace:^", - "@backstage/plugin-auth-react": "workspace:^", "@backstage/theme": "workspace:^", "@backstage/types": "workspace:^", "@backstage/version-bridge": "workspace:^", diff --git a/packages/frontend-app-api/src/extensions/AppRoot.tsx b/packages/frontend-app-api/src/extensions/AppRoot.tsx index db8de268b0..f3a962dd10 100644 --- a/packages/frontend-app-api/src/extensions/AppRoot.tsx +++ b/packages/frontend-app-api/src/extensions/AppRoot.tsx @@ -38,8 +38,6 @@ import { } from '@backstage/core-plugin-api'; import { InternalAppContext } from '../wiring/InternalAppContext'; // eslint-disable-next-line @backstage/no-relative-monorepo-imports -import { AppAuthProvider } from '../../../core-app-api/src/app/AppAuthProvider'; -// eslint-disable-next-line @backstage/no-relative-monorepo-imports import { AppIdentityProxy } from '../../../core-app-api/src/apis/implementations/IdentityApi/AppIdentityProxy'; import { BrowserRouter } from 'react-router-dom'; import { RouteTracker } from '../routing/RouteTracker'; @@ -192,7 +190,7 @@ export function AppRouter(props: AppRouterProps) { return ( - {children} + {children} ); } @@ -204,7 +202,7 @@ export function AppRouter(props: AppRouterProps) { component={SignInPageComponent} appIdentityProxy={appIdentityProxy} > - {children} + {children} ); diff --git a/packages/frontend-app-api/src/wiring/createApp.tsx b/packages/frontend-app-api/src/wiring/createApp.tsx index 6e0a2c7cd7..cf6ea6dab4 100644 --- a/packages/frontend-app-api/src/wiring/createApp.tsx +++ b/packages/frontend-app-api/src/wiring/createApp.tsx @@ -43,6 +43,9 @@ import { featureFlagsApiRef, identityApiRef, AppTheme, + errorApiRef, + discoveryApiRef, + fetchApiRef, } from '@backstage/core-plugin-api'; import { getAvailableFeatures } from './discovery'; import { @@ -54,6 +57,8 @@ import { // TODO: Get rid of all of these // eslint-disable-next-line @backstage/no-relative-monorepo-imports +import { isProtectedApp } from '../../../core-app-api/src/app/isProtectedApp'; +// eslint-disable-next-line @backstage/no-relative-monorepo-imports import { AppThemeProvider } from '../../../core-app-api/src/app/AppThemeProvider'; // eslint-disable-next-line @backstage/no-relative-monorepo-imports import { AppIdentityProxy } from '../../../core-app-api/src/apis/implementations/IdentityApi/AppIdentityProxy'; @@ -281,6 +286,22 @@ export function createSpecializedApp(options?: { options?.icons, ); + if (isProtectedApp()) { + const discoveryApi = apiHolder.get(discoveryApiRef); + const errorApi = apiHolder.get(errorApiRef); + const fetchApi = apiHolder.get(fetchApiRef); + if (!discoveryApi || !errorApi || !fetchApi) { + throw new Error( + 'App is running in protected mode but missing required APIs', + ); + } + appIdentityProxy.enableCookieAuth({ + discoveryApi, + errorApi, + fetchApi, + }); + } + const featureFlagApi = apiHolder.get(featureFlagsApiRef); if (featureFlagApi) { for (const feature of features) {