todolist-proto/frontend/src/keycloak.ts

48 lines
984 B
TypeScript
Raw Normal View History

2026-01-20 18:40:33 +01:00
import Keycloak from 'keycloak-js'
let keycloak: Keycloak | null = null
export const initKeycloak = async (): Promise<Keycloak> => {
keycloak = new Keycloak({
url: 'https://terminus.bluelake.cloud/',
realm: 'dalex-immo-dev',
clientId: 'dalex-proto'
})
try {
const authenticated = await keycloak.init({
onLoad: 'login-required',
checkLoginIframe: false
})
if (!authenticated) {
window.location.reload()
}
// Token refresh
setInterval(() => {
keycloak?.updateToken(70).catch(() => {
console.error('Failed to refresh token')
keycloak?.login()
})
}, 60000)
return keycloak
} catch (error) {
console.error('Failed to initialize Keycloak', error)
throw error
}
}
export const getKeycloak = (): Keycloak | null => {
return keycloak
}
export const getToken = (): string | undefined => {
return keycloak?.token
}
export const logout = (): void => {
keycloak?.logout()
}