@josempgon/vue-keycloak
Version:
Keycloak plugin for Vue 3 with Composition API
1 lines • 10.8 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","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}\n//# sourceMappingURL=utils.js.map","import { reactive } from 'vue';\nimport { isString } from './utils';\nexport const state = reactive({\n keycloak: undefined,\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 state.keycloak = value;\n};\nexport const setToken = (token, tokenParsed) => {\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 = content.preferred_username;\n state.userId = content.sub;\n state.resourceRoles = content.resource_access\n ? Object.fromEntries(Object.entries(content.resource_access).map(([key, value]) => [key, value.roles]))\n : {};\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 { hasFailed, isAuthenticated, isPending, setKeycloak, setToken } from './state';\nimport { isNil } from './utils';\nlet $keycloak = undefined;\nasync function updateToken(minValidity) {\n try {\n await $keycloak.updateToken(minValidity);\n setToken($keycloak.token, $keycloak.tokenParsed);\n return $keycloak.token;\n }\n catch (err) {\n const rejectionReason = isNil(err) ? new Error('Failed to refresh the access token') : err;\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 try {\n $keycloak = new Keycloak(config);\n setKeycloak($keycloak);\n }\n catch (err) {\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 _isAuthenticated = await $keycloak.init(initConfig);\n isAuthenticated(_isAuthenticated);\n if (!isNil($keycloak.token)) {\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 { state } from './state';\nimport { isArray, isNil } from './utils';\nexport const useKeycloak = () => {\n return {\n ...toRefs(state),\n hasRoles: (roles) => isArray(roles) && state.isAuthenticated && roles.every(role => state.roles.includes(role)),\n hasResourceRoles: (roles, resource) => isArray(roles) &&\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 } 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 if (isNil(options)) {\n hasFailed(true, new Error('The VueKeycloakPluginConfig is required'));\n return;\n }\n let keycloakPluginConfig;\n if (isFunction(options)) {\n keycloakPluginConfig = await options();\n }\n else {\n keycloakPluginConfig = options;\n }\n if (isNil(keycloakPluginConfig.config)) {\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 if (isNil(_keycloak))\n return;\n app.config.globalProperties.$keycloak = _keycloak;\n await initKeycloak(keycloakInitOptions);\n },\n};\n//# sourceMappingURL=plugin.js.map"],"names":[],"mappings":"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"}