// 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 = '/' } 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, }