UNPKG

@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
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