frontend-app-api: update app protection wiring

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2024-04-09 13:42:11 +02:00
parent e2e0c998e6
commit 1bfaadb73e
3 changed files with 23 additions and 5 deletions
-1
View File
@@ -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:^",
@@ -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 (
<RouterComponent>
<RouteTracker routeObjects={routeObjects} />
<AppAuthProvider>{children}</AppAuthProvider>
{children}
</RouterComponent>
);
}
@@ -204,7 +202,7 @@ export function AppRouter(props: AppRouterProps) {
component={SignInPageComponent}
appIdentityProxy={appIdentityProxy}
>
<AppAuthProvider>{children}</AppAuthProvider>
{children}
</SignInPageWrapper>
</RouterComponent>
);
@@ -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) {