hrms-edm/Services/client/src/services/KeyCloakService.ts
Methapon2001 7c28d3f3ae
All checks were successful
Build / build (push) Successful in 32s
fix: roles
2025-09-09 16:35:01 +07:00

47 lines
1 KiB
TypeScript

import Keycloak from 'keycloak-js'
const keycloak = new Keycloak({
realm: import.meta.env.VITE_KC_REALM,
url: import.meta.env.VITE_KC_URL,
clientId: import.meta.env.VITE_CLIENTID_KEYCLOAK,
})
let init = false
export async function login(cb?: (...args: any[]) => void) {
const auth = !init
? await keycloak
.init({
onLoad: 'login-required',
responseMode: 'query',
checkLoginIframe: false,
})
.catch((e) => console.dir(e))
: await keycloak.login().catch((e) => console.dir(e))
if (auth) init = true
if (auth && cb) cb()
}
export async function logout() {
await keycloak.logout()
}
export async function getToken() {
await keycloak.updateToken(60).catch(() => login())
return keycloak.token
}
export function getUsername(): string {
return keycloak.tokenParsed?.preferred_username
}
export function getRole(): string[] {
const decoded = keycloak.tokenParsed
return decoded?.roles ?? decoded?.role ?? []
}
export function isLoggedIn() {
return !!keycloak.token
}