keycloak-scim/js/apps/admin-ui/src/admin-client.ts
Jon Koops 38f185dff1
Update ESLint dependencies to latest version (#31831)
Signed-off-by: Jon Koops <jonkoops@gmail.com>
2024-08-06 08:02:18 -04:00

42 lines
1 KiB
TypeScript

import KeycloakAdminClient from "@keycloak/keycloak-admin-client";
import {
createNamedContext,
useRequiredContext,
} from "@keycloak/keycloak-ui-shared";
import type Keycloak from "keycloak-js";
import type { Environment } from "./environment";
export type AdminClientProps = {
keycloak: Keycloak;
adminClient: KeycloakAdminClient;
};
export const AdminClientContext = createNamedContext<
AdminClientProps | undefined
>("AdminClientContext", undefined);
export const useAdminClient = () => useRequiredContext(AdminClientContext);
export async function initAdminClient(
keycloak: Keycloak,
environment: Environment,
) {
const adminClient = new KeycloakAdminClient();
adminClient.setConfig({ realmName: environment.realm });
adminClient.baseUrl = environment.adminBaseUrl;
adminClient.registerTokenProvider({
async getAccessToken() {
try {
await keycloak.updateToken(5);
} catch {
keycloak.login();
}
return keycloak.token;
},
});
return adminClient;
}