@josempgon/vue-keycloak
Version:
Keycloak plugin for Vue 3 with Composition API
1 lines • 14.3 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../dist-transpiled/utils.js","../dist-transpiled/state.js","../dist-transpiled/keycloak.js","../dist-transpiled/composable.js","../dist-transpiled/const.js","../dist-transpiled/plugin.js"],"sourcesContent":["export function isArray(value) {\n return Array.isArray(value);\n}\nexport function isFunction(fun) {\n return typeof fun === 'function';\n}\nexport function isNil(value) {\n return value === undefined || value === null;\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function isErrorLike(value) {\n return value instanceof Error || isString(value) || isString(value === null || value === void 0 ? void 0 : value.error);\n}\n//# sourceMappingURL=utils.js.map","import { shallowRef, reactive } from 'vue';\nimport { isString } from './utils';\nexport const keycloak = shallowRef();\nexport const state = reactive({\n isAuthenticated: false,\n hasFailed: false,\n error: null,\n isPending: false,\n token: '',\n decodedToken: {},\n username: '',\n userId: '',\n roles: [],\n resourceRoles: {},\n});\nexport const setKeycloak = (value) => {\n keycloak.value = value;\n};\nexport const setToken = (token, tokenParsed) => {\n var _a, _b;\n state.token = token;\n const content = tokenParsed;\n state.decodedToken = content;\n state.roles = content.realm_access ? content.realm_access.roles : [];\n state.username = ((_a = content.preferred_username) !== null && _a !== void 0 ? _a : '');\n state.userId = (_b = content.sub) !== null && _b !== void 0 ? _b : '';\n state.resourceRoles = content.resource_access\n ? Object.fromEntries(Object.entries(content.resource_access).map(([key, value]) => [key, value.roles]))\n : {};\n};\nexport const clearToken = () => {\n state.token = '';\n state.decodedToken = {};\n state.roles = [];\n state.username = '';\n state.userId = '';\n state.resourceRoles = {};\n};\nexport const hasFailed = (value, err) => {\n state.hasFailed = value;\n if (err instanceof Error) {\n state.error = err;\n }\n else if (isString(err === null || err === void 0 ? void 0 : err.error)) {\n state.error = new Error(err.error);\n }\n else if (isString(err)) {\n state.error = new Error(err);\n }\n else {\n state.error = new Error('Unknown');\n }\n state.error.name = '[vue-keycloak]';\n console.error(state.error);\n};\nexport const isPending = (value) => {\n state.isPending = value;\n};\nexport const isAuthenticated = (value) => {\n state.isAuthenticated = value;\n};\n//# sourceMappingURL=state.js.map","import Keycloak from 'keycloak-js';\nimport { clearToken, hasFailed, isAuthenticated, isPending, setKeycloak, setToken } from './state';\nimport { isErrorLike, isNil } from './utils';\nlet $keycloak = undefined;\nlet creationFailed = false;\nasync function updateToken(minValidity) {\n const keycloak = $keycloak;\n if (isNil(keycloak)) {\n throw new Error('[vue-keycloak] Keycloak is not initialised. Call createKeycloak() first.');\n }\n try {\n await keycloak.updateToken(minValidity);\n const { token, tokenParsed } = keycloak;\n if (isNil(token) || isNil(tokenParsed)) {\n throw new Error('Failed to refresh the access token');\n }\n setToken(token, tokenParsed);\n return token;\n }\n catch (err) {\n if (!keycloak.authenticated) {\n isAuthenticated(false);\n clearToken();\n }\n const rejectionReason = isErrorLike(err) ? err : new Error('Failed to refresh the access token');\n hasFailed(true, rejectionReason);\n throw rejectionReason;\n }\n}\nexport async function getToken(minValidity = 10) {\n return updateToken(minValidity);\n}\nexport function createKeycloak(config) {\n creationFailed = false;\n try {\n $keycloak = new Keycloak(config);\n setKeycloak($keycloak);\n }\n catch (err) {\n $keycloak = undefined;\n creationFailed = true;\n hasFailed(true, isNil(err) ? new Error('Failed to create the keycloak adapter') : err);\n }\n return $keycloak;\n}\nexport async function initKeycloak(initConfig) {\n try {\n isPending(true);\n const keycloak = $keycloak;\n if (isNil(keycloak)) {\n if (!creationFailed) {\n hasFailed(true, new Error('Keycloak is not initialised. Call createKeycloak() first.'));\n }\n return;\n }\n const _isAuthenticated = await keycloak.init(initConfig);\n isAuthenticated(_isAuthenticated);\n if (!isNil(keycloak.token) && !isNil(keycloak.tokenParsed)) {\n setToken(keycloak.token, keycloak.tokenParsed);\n }\n }\n catch (err) {\n isAuthenticated(false);\n hasFailed(true, isNil(err) ? new Error('Failed to initialize the keycloak adapter') : err);\n }\n finally {\n isPending(false);\n }\n}\n//# sourceMappingURL=keycloak.js.map","import { toRefs } from 'vue';\nimport { keycloak, state } from './state';\nimport { isArray, isNil } from './utils';\nexport const useKeycloak = () => {\n return {\n keycloak,\n ...toRefs(state),\n hasRoles: (roles) => isArray(roles) && roles.length > 0 && state.isAuthenticated && roles.every(role => state.roles.includes(role)),\n hasResourceRoles: (roles, resource) => isArray(roles) &&\n roles.length > 0 &&\n !isNil(resource) &&\n state.isAuthenticated &&\n !isNil(state.resourceRoles) &&\n isArray(state.resourceRoles[resource]) &&\n roles.every(role => state.resourceRoles[resource].includes(role)),\n };\n};\n//# sourceMappingURL=composable.js.map","export const defaultInitConfig = {\n flow: 'standard',\n checkLoginIframe: false,\n onLoad: 'login-required',\n};\n//# sourceMappingURL=const.js.map","import { hasFailed, isPending } from './state';\nimport { defaultInitConfig } from './const';\nimport { createKeycloak, initKeycloak } from './keycloak';\nimport { isFunction, isNil } from './utils';\nexport const vueKeycloak = {\n install: async (app, options) => {\n isPending(true);\n if (isNil(options)) {\n isPending(false);\n hasFailed(true, new Error('The VueKeycloakPluginConfig is required'));\n return;\n }\n let keycloakPluginConfig;\n if (isFunction(options)) {\n try {\n keycloakPluginConfig = await options();\n }\n catch (err) {\n isPending(false);\n hasFailed(true, isNil(err) ? new Error('The KeycloakConfigAsyncFactory failed') : err);\n return;\n }\n }\n else {\n keycloakPluginConfig = options;\n }\n if (isNil(keycloakPluginConfig.config)) {\n isPending(false);\n hasFailed(true, new Error('The KeycloakConfig is required'));\n return;\n }\n const keycloakConfig = keycloakPluginConfig.config;\n const keycloakInitOptions = !isNil(keycloakPluginConfig.initOptions)\n ? { ...defaultInitConfig, ...keycloakPluginConfig.initOptions }\n : defaultInitConfig;\n const _keycloak = createKeycloak(keycloakConfig);\n app.config.globalProperties.$keycloak = _keycloak;\n await initKeycloak(keycloakInitOptions);\n },\n};\n//# sourceMappingURL=plugin.js.map"],"names":["shallowRef","reactive","Keycloak","toRefs"],"mappings":"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"}