2023-11-28 09:22:44 +07:00
|
|
|
import Keycloak from 'keycloak-js'
|
2023-11-23 08:47:44 +07:00
|
|
|
|
2023-12-07 14:55:34 +07:00
|
|
|
const keycloak = new Keycloak('/keycloak.json')
|
2023-11-29 16:58:53 +07:00
|
|
|
|
|
|
|
|
export async function login(cb?: (...args: any[]) => void) {
|
|
|
|
|
const auth = await keycloak
|
|
|
|
|
.init({
|
|
|
|
|
onLoad: 'login-required',
|
|
|
|
|
responseMode: 'query',
|
|
|
|
|
checkLoginIframe: false,
|
2023-11-23 08:47:44 +07:00
|
|
|
})
|
2023-11-29 16:58:53 +07:00
|
|
|
.catch((e) => console.dir(e))
|
2023-11-23 08:47:44 +07:00
|
|
|
|
2023-11-29 16:58:53 +07:00
|
|
|
if (auth && cb) cb()
|
|
|
|
|
}
|
2023-11-23 08:47:44 +07:00
|
|
|
|
2023-11-29 16:58:53 +07:00
|
|
|
export async function logout() {
|
|
|
|
|
await keycloak.logout()
|
|
|
|
|
}
|
2023-11-23 08:47:44 +07:00
|
|
|
|
2023-11-29 16:58:53 +07:00
|
|
|
export async function getToken() {
|
|
|
|
|
await keycloak.updateToken(60).catch(() => login())
|
|
|
|
|
return keycloak.token
|
2023-11-28 09:22:44 +07:00
|
|
|
}
|
2023-11-23 08:47:44 +07:00
|
|
|
|
2023-11-29 16:58:53 +07:00
|
|
|
export function getUsername(): string {
|
|
|
|
|
return keycloak.tokenParsed?.preferred_username
|
|
|
|
|
}
|
2023-11-23 08:47:44 +07:00
|
|
|
|
2023-11-29 16:58:53 +07:00
|
|
|
export function getRole(): string[] {
|
|
|
|
|
const decoded = keycloak.tokenParsed
|
2023-11-23 08:47:44 +07:00
|
|
|
|
2023-11-29 16:58:53 +07:00
|
|
|
if (decoded && decoded.resource_access && decoded.azp) {
|
|
|
|
|
return decoded.resource_access[decoded.azp].roles
|
|
|
|
|
}
|
2023-11-23 08:47:44 +07:00
|
|
|
|
2023-11-29 16:58:53 +07:00
|
|
|
return []
|
2023-11-28 09:22:44 +07:00
|
|
|
}
|
2023-11-23 08:47:44 +07:00
|
|
|
|
2023-11-29 16:58:53 +07:00
|
|
|
export function isLoggedIn() {
|
|
|
|
|
return !!keycloak.token
|
2023-11-28 09:22:44 +07:00
|
|
|
}
|