UNPKG

5.01 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/auth.js"],"names":[],"mappings":"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","file":"auth.js","sourcesContent":["import queryParse from './util/query-parse'\nimport { Observable } from 'rxjs/Observable'\nimport { map } from 'rxjs/operator/map'\nimport fetchJSON from './util/fetch.js'\n\nconst HORIZON_JWT = 'horizon-jwt'\n\n/** @this Horizon **/\nexport function authEndpoint(name) {\n const endpointForName = methods => {\n if (methods.hasOwnProperty(name)) {\n return methods[name]\n } else {\n throw new Error(`Unconfigured auth type: ${name}`)\n }\n }\n if (!this._authMethods) {\n console.log('No auth methods, have to fetch')\n return fetchJSON(`${this._horizonPath}/auth_methods`)\n .do(authMethods => {\n this._authMethods = authMethods\n })::map(endpointForName)\n } else {\n return Observable.of(this._authMethods)::map(endpointForName)\n }\n}\n\n// Simple shim to make a Map look like local/session storage\nclass FakeStorage {\n constructor() { this._storage = new Map() }\n setItem(a, b) { return this._storage.set(a, b) }\n getItem(a) { return this._storage.get(a) }\n removeItem(a) { return this._storage.delete(a) }\n}\n\nfunction getStorage() {\n try {\n if (typeof window !== 'object' || window.localStorage === undefined) {\n return new FakeStorage()\n }\n window.localStorage.setItem('$$fake', 1)\n window.localStorage.removeItem('$$fake')\n return window.localStorage\n } catch (error) {\n if (window.sessionStorage === undefined) {\n return new FakeStorage()\n } else {\n return window.sessionStorage\n }\n }\n}\n\nexport class TokenStorage {\n constructor(authType = 'unauthenticated') {\n this._storage = getStorage()\n this._authType = authType\n }\n\n set(jwt) {\n return this._storage.setItem(HORIZON_JWT, jwt)\n }\n\n get() {\n return this._storage.getItem(HORIZON_JWT)\n }\n\n remove() {\n return this._storage.removeItem(HORIZON_JWT)\n }\n\n setAuthFromQueryParams() {\n const parsed = queryParse(window.location.search)\n if (parsed.horizon_auth != null) {\n this.set(parsed.horizon_auth)\n }\n }\n\n // Handshake types are implemented here\n handshake() {\n // If we have a token, we should send it rather than requesting a\n // new one\n const token = this.get()\n if (token != null) {\n return { method: 'token', token }\n } else if (this._authType === 'token') {\n throw new Error(\n 'Attempting to authenticate with a token, but no token is present')\n } else {\n return { method: this._authType }\n }\n }\n\n // Whether there is an auth token for the provided authType\n hasAuthToken() {\n return Boolean(this.get())\n }\n}\n\nexport function clearAuthTokens() {\n return getStorage().removeItem(HORIZON_JWT)\n}\n"]}
\No newline at end of file