UNPKG

4.68 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/auth/utils.js"],"names":["matchAnyRole","r","roles","matchAllRoles","reduce","a","b","appRoles","includes","hasAccess","app","jwt","matchAny","isGodMode","map","chain","t","getOrElse","e","console","log","stack","getEffectiveJwt","extractJwtFromAddress","href","substr","indexOf","cachedJWt","window","localStorage","getItem","storageKey","undefined","injectedJwt","location","development","process","env","NODE_ENV","setItem"],"mappings":"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","file":"utils.js","sourcesContent":["import jwtDecode from 'jwt-decode'\nimport R from 'ramda'\n/* import idx from 'idx' */\nimport { fromNullable } from 'data.maybe'\n\n// TODO: test this\nexport const matchAnyRole = roles => R.any(r => R.contains(r, roles))\nexport const matchAllRoles = roles => appRoles =>\n roles.reduce((a, b) => a && appRoles.includes(b), appRoles.includes(roles[0]))\n\nexport const hasAccess = ({ roles, app, jwt, matchAny = false, isGodMode }) => {\n // TODO: add validations here\n if (isGodMode) return true\n try {\n return fromNullable(jwt)\n .map(jwtDecode)\n .chain(t => fromNullable(t.roles))\n .chain(roles => fromNullable(roles[app]))\n .map(\n appRoles => (matchAny && matchAnyRole(roles)(appRoles)) || matchAllRoles(roles)(appRoles)\n )\n .getOrElse(false)\n } catch (e) {\n /* eslint-disable no-console */\n console.log(e)\n console.log(e.stack)\n /* eslint-enable no-console */\n }\n return false\n}\n\nexport const getEffectiveJwt = storageKey => {\n const extractJwtFromAddress = href => href.substr(href.indexOf('jwt') + 4)\n\n const cachedJWt =\n window && window.localStorage !== null && window.localStorage.getItem(storageKey)\n ? window.localStorage.getItem(storageKey)\n : undefined\n const injectedJwt =\n window && window.location && window.location.href && window.location.href.indexOf('jwt') >= 0\n ? extractJwtFromAddress(window.location.href)\n : undefined\n\n const jwt = injectedJwt || cachedJWt\n /* eslint-disable */\n console.log('injected jwt-->', injectedJwt)\n console.log('cached jwt-->', cachedJWt)\n console.log('final jwt-->', jwt)\n\n const development = process.env.NODE_ENV === undefined || process.env.NODE_ENV !== 'production'\n\n // WARNING non-pure\n if (window && window.localStorage && injectedJwt) {\n window.localStorage.setItem(storageKey, injectedJwt)\n //for security reasons m\n if (development) console.log('stored jwt', jwt, ' into local storage')\n //window.history.replaceState({}, 'UI', basename ? basename + '/' : '/')\n }\n\n /* eslint-enable */\n\n return jwt\n}\n"]}
\No newline at end of file