// authen with keycloak client import Keycloak from "keycloak-js"; const ACCESS_TOKEN = "BMAHRIS_KEYCLOAK_IDENTITY"; const REFRESH_TOKEN = "BMAHRIS_KEYCLOAK_REFRESH"; const keycloakConfig = { url: import.meta.env.VITE_URL_KEYCLOAK, realm: import.meta.env.VITE_REALM_KEYCLOAK, clientId: import.meta.env.VITE_CLIENTID_KEYCLOAK, clientSecret: import.meta.env.VITE_CLIENTSECRET_KEYCLOAK, }; const keycloak = new Keycloak(keycloakConfig); async function kcAuthen(access_token: string, refresh_token: string) { await setCookie(ACCESS_TOKEN, access_token, 1); await setCookie(REFRESH_TOKEN, refresh_token, 1); window.location.href = "/login"; } async function kcLogout() { await deleteCookie(ACCESS_TOKEN); await deleteCookie(REFRESH_TOKEN); if (keycloak.authenticated !== undefined) { keycloak.logout(); } window.location.href = "/login"; } async function getToken() { return { token: getCookie(ACCESS_TOKEN), refresh_token: getCookie(REFRESH_TOKEN), }; } function setCookie(name: string, value: any, days: number) { let expires = ""; if (days) { const date = new Date(); date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/"; } function getCookie(name: string) { const nameEQ = name + "="; const ca = document.cookie.split(";"); for (let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) == " ") c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } function deleteCookie(name: string) { document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`; } export default keycloak; export { keycloakConfig, getToken, kcAuthen, kcLogout, ACCESS_TOKEN, REFRESH_TOKEN, };