@krashnakant/next-keycloak
Version:
An authentication library based on Keycloak for NextJs applications
33 lines (24 loc) • 771 B
text/typescript
import type { KeycloakConfig } from "keycloak-js";
import { isServer } from "./Util";
const Keycloak = !isServer() ? require("keycloak-js") : null;
export type Keycloak = typeof Keycloak;
// Global Keycloak instance
let keycloakInstance = Keycloak;
/**
* @description A function to create instance of Keycloak based on proper environment (server or client)
* @param keycloakConfig
* @returns
*/
export const getKeycloakInstance = (
keycloakConfig: KeycloakConfig
): Keycloak | undefined => {
const isServerSide = isServer();
if (isServerSide) {
return undefined;
}
keycloakInstance =
typeof Keycloak.default === 'function'
? new Keycloak.default(keycloakConfig)
: new Keycloak(keycloakConfig);
return keycloakInstance;
};