@keycloakify/keycloak-account-ui
Version:
<p align="center"> <img src="https://github.com/user-attachments/assets/e31c4910-7205-441c-9a35-e134b806b3a8"> </p> <p align="center"> <i>Repackaged Keycloak Account UI</i> <br> <br> <a href="https://github.com/keycloakify/keycloak-a
53 lines • 2.06 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { Spinner } from "@patternfly/react-core";
import Keycloak from "keycloak-js";
import { createContext, useContext, useEffect, useMemo, useRef, useState, } from "react";
import { AlertProvider } from "../../ui-shared/alerts/Alerts";
import { ErrorPage } from "../../ui-shared/context/ErrorPage";
import { Help } from "../../ui-shared/context/HelpContext";
const createKeycloakEnvContext = () => createContext(undefined);
let KeycloakEnvContext;
export const useEnvironment = () => {
const context = useContext(KeycloakEnvContext);
if (!context)
throw Error("no environment provider in the hierarchy make sure to add the provider");
return context;
};
export const KeycloakProvider = ({ environment, children, }) => {
KeycloakEnvContext = createKeycloakEnvContext();
const calledOnce = useRef(false);
const [init, setInit] = useState(false);
const [error, setError] = useState();
const keycloak = useMemo(() => {
const keycloak = new Keycloak({
url: environment.serverBaseUrl,
realm: environment.realm,
clientId: environment.clientId,
});
keycloak.onAuthLogout = () => keycloak.login();
return keycloak;
}, [environment]);
useEffect(() => {
// only needed in dev mode
if (calledOnce.current) {
return;
}
const init = () => keycloak.init({
onLoad: "check-sso",
pkceMethod: "S256",
responseMode: "query",
});
init()
.then(() => setInit(true))
.catch((error) => setError(error));
calledOnce.current = true;
}, [keycloak]);
if (error) {
return _jsx(ErrorPage, { error: error });
}
if (!init) {
return _jsx(Spinner, {});
}
return (_jsx(KeycloakEnvContext.Provider, { value: { environment, keycloak }, children: _jsx(AlertProvider, { children: _jsx(Help, { children: children }) }) }));
};
//# sourceMappingURL=KeycloakContext.js.map