@multiplatform.one/keycloak
v7.4.1
Published
keycloak client for multiplatform.one ecosystem
Readme
@multiplatform.one/keycloak
Keycloak authentication for the multiplatform.one ecosystem — a
Better Auth–powered client with a useKeycloak()
hook, session hooks, route guards, and a server config factory for
One apps.
Install
pnpm add @multiplatform.one/keycloakPeers: react, @multiplatform.one/logger, @multiplatform.one/platform.
What it owns
KeycloakProvider— auth context (debug,disabled,iframeSso,loginRedirectUri, …); usually mounted for you bycreateApp({ keycloak: true })from@multiplatform.one/coreuseKeycloak()— the Keycloak client (login/logout, tokens); returnsnullwhen auth is disableduseSession(),useAuthConfig(),useTokensFromQuery,useTokensFromStateAuthenticated/withAuthenticated— render children only when signed in- Token helpers —
isTokenExpired,validOrRefreshableToken,getKeycloakBearerToken, wallet-claim readers (getWalletsFromToken,getWalletAddresses,hasWallets) @multiplatform.one/keycloak/one—createAuth()Better Auth server factory (stateless JWE sessions, Keycloak OAuth, Expo support)
What it must not do
- No UI beyond the guard components — login screens belong to apps
- No Frappe logic besides bearer-token bridging (
getKeycloakBearerToken)
Usage
import { Authenticated, useKeycloak } from "@multiplatform.one/keycloak";
export function AccountMenu() {
const keycloak = useKeycloak();
if (!keycloak) return null; // auth disabled
return (
<Authenticated>
<button onClick={() => keycloak.logout()}>Sign out</button>
</Authenticated>
);
}Uses the patched adapter from @multiplatform.one/keycloak-js under the hood.
License
Apache-2.0
