48 lines
984 B
TypeScript
48 lines
984 B
TypeScript
|
|
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()
|
||
|
|
}
|