Keycloak

Форк
0
67 строк · 2.3 Кб
1
import { Page } from "@patternfly/react-core";
2
import { PropsWithChildren, Suspense } from "react";
3
import { Outlet } from "react-router-dom";
4
import { Help, mainPageContentId } from "ui-shared";
5

6
import { Header } from "./PageHeader";
7
import { PageNav } from "./PageNav";
8
import { AlertProvider } from "./components/alert/Alerts";
9
import { PageBreadCrumbs } from "./components/bread-crumb/PageBreadCrumbs";
10
import { ErrorRenderer } from "./components/error/ErrorRenderer";
11
import { KeycloakSpinner } from "./components/keycloak-spinner/KeycloakSpinner";
12
import {
13
  ErrorBoundaryFallback,
14
  ErrorBoundaryProvider,
15
} from "./context/ErrorBoundary";
16
import { RealmsProvider } from "./context/RealmsContext";
17
import { RecentRealmsProvider } from "./context/RecentRealms";
18
import { AccessContextProvider } from "./context/access/Access";
19
import { RealmContextProvider } from "./context/realm-context/RealmContext";
20
import { ServerInfoProvider } from "./context/server-info/ServerInfoProvider";
21
import { WhoAmIContextProvider } from "./context/whoami/WhoAmI";
22
import { SubGroups } from "./groups/SubGroupsContext";
23
import { AuthWall } from "./root/AuthWall";
24

25
const AppContexts = ({ children }: PropsWithChildren) => (
26
  <ErrorBoundaryProvider>
27
    <ServerInfoProvider>
28
      <RealmContextProvider>
29
        <WhoAmIContextProvider>
30
          <RealmsProvider>
31
            <RecentRealmsProvider>
32
              <AccessContextProvider>
33
                <Help>
34
                  <AlertProvider>
35
                    <SubGroups>{children}</SubGroups>
36
                  </AlertProvider>
37
                </Help>
38
              </AccessContextProvider>
39
            </RecentRealmsProvider>
40
          </RealmsProvider>
41
        </WhoAmIContextProvider>
42
      </RealmContextProvider>
43
    </ServerInfoProvider>
44
  </ErrorBoundaryProvider>
45
);
46

47
export const App = () => {
48
  return (
49
    <AppContexts>
50
      <Page
51
        header={<Header />}
52
        isManagedSidebar
53
        sidebar={<PageNav />}
54
        breadcrumb={<PageBreadCrumbs />}
55
        mainContainerId={mainPageContentId}
56
      >
57
        <ErrorBoundaryFallback fallback={ErrorRenderer}>
58
          <Suspense fallback={<KeycloakSpinner />}>
59
            <AuthWall>
60
              <Outlet />
61
            </AuthWall>
62
          </Suspense>
63
        </ErrorBoundaryFallback>
64
      </Page>
65
    </AppContexts>
66
  );
67
};
68

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.