ngx-oauth 1.0.2 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -10
- package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/esm2020/lib/components/login/oauth-login.component.mjs +104 -0
- package/esm2020/lib/models/index.mjs +21 -0
- package/esm2020/lib/oauth.module.mjs +130 -0
- package/esm2020/lib/services/oauth.interceptor.mjs +57 -0
- package/esm2020/lib/services/oauth.service.mjs +398 -0
- package/{esm2015/ngx-oauth.js → esm2020/ngx-oauth.mjs} +0 -0
- package/fesm2015/ngx-oauth.mjs +661 -0
- package/fesm2015/ngx-oauth.mjs.map +1 -0
- package/fesm2020/ngx-oauth.mjs +698 -0
- package/fesm2020/ngx-oauth.mjs.map +1 -0
- package/lib/components/login/oauth-login.component.d.ts +12 -5
- package/lib/models/index.d.ts +41 -3
- package/lib/oauth.module.d.ts +9 -0
- package/lib/services/oauth.interceptor.d.ts +3 -0
- package/lib/services/oauth.service.d.ts +22 -4
- package/ngx-oauth.d.ts +1 -0
- package/package.json +42 -9
- package/bundles/ngx-oauth.umd.js +0 -988
- package/bundles/ngx-oauth.umd.js.map +0 -1
- package/esm2015/lib/components/login/oauth-login.component.js +0 -82
- package/esm2015/lib/models/index.js +0 -20
- package/esm2015/lib/oauth.module.js +0 -112
- package/esm2015/lib/services/oauth.interceptor.js +0 -54
- package/esm2015/lib/services/oauth.service.js +0 -310
- package/fesm2015/ngx-oauth.js +0 -569
- package/fesm2015/ngx-oauth.js.map +0 -1
- package/ngx-oauth.metadata.json +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-oauth.umd.js","sources":["../../../projects/ngx-oauth/src/lib/models/index.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-oauth/src/lib/services/oauth.service.ts","../../../projects/ngx-oauth/src/lib/services/oauth.interceptor.ts","../../../projects/ngx-oauth/src/lib/components/login/oauth-login.component.ts","../../../projects/ngx-oauth/src/lib/oauth.module.ts","../../../projects/ngx-oauth/src/index.ts","../../../projects/ngx-oauth/src/ngx-oauth.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nexport const SERVER_HOST = new InjectionToken<string>('SERVER_HOST');\nexport const SERVER_PATH = new InjectionToken<string>('SERVER_PATH');\nexport const LOCATION = new InjectionToken<Location>('Location');\nexport const STORAGE = new InjectionToken<Storage>('Storage');\nexport const OAUTH_CONFIG = new InjectionToken<OAuthConfig>('OAuthConfig');\n\nexport enum OAuthType {\n RESOURCE = 'password',\n AUTHORIZATION_CODE = 'code',\n IMPLICIT = 'token',\n CLIENT_CREDENTIAL = 'client_credentials'\n}\n\nexport interface OAuthConfig {\n type: OAuthType;\n config: OAuthTypeConfig;\n storageKey?: string;\n storage?: Storage;\n ignorePaths?: RegExp[];\n}\n\nexport interface ClientCredentialConfig {\n tokenPath: string;\n revokePath?: string;\n clientId: string;\n clientSecret: string;\n scope?: string;\n}\n\n// tslint:disable-next-line:no-empty-interface\nexport interface ResourceConfig extends ClientCredentialConfig {\n}\n\nexport interface ImplicitConfig {\n authorizePath: string;\n revokePath?: string;\n clientId: string;\n scope?: string;\n}\n\nexport interface AuthorizationCodeConfig extends ResourceConfig {\n authorizePath: string;\n}\n\nexport interface AuthorizationCodePKCEConfig extends AuthorizationCodeConfig {\n codeVerifier: string;\n}\n\nexport interface ResourceParameters {\n username: string;\n password: string;\n}\n\nexport interface ImplicitParameters {\n redirectUri: string;\n state?: string;\n}\n\n// tslint:disable-next-line:no-empty-interface\nexport interface AuthorizationCodeParameters extends ImplicitParameters {\n}\n\nexport type OAuthParameters = ResourceParameters | AuthorizationCodeParameters | ImplicitParameters;\nexport type OAuthTypeConfig =\n AuthorizationCodePKCEConfig\n | AuthorizationCodeConfig\n | ImplicitConfig\n | ResourceConfig\n | ClientCredentialConfig;\n\nexport interface OAuthToken {\n id_token?: string;\n access_token?: string;\n refresh_token?: string;\n token_type?: string;\n state?: string;\n error?: string;\n expires_in?: number | string;\n refresh_expires_in?: number;\n scope?: string;\n}\n\nexport enum OAuthStatus {\n NOT_AUTHORIZED = 'NOT_AUTHORIZED',\n AUTHORIZED = 'AUTHORIZED',\n DENIED = 'DENIED'\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {Inject, Injectable, NgZone} from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {catchError, concatMap, delay, switchMap} from 'rxjs/operators';\nimport {EMPTY, from, noop, of, ReplaySubject} from 'rxjs';\nimport {\n AuthorizationCodeParameters,\n ImplicitParameters,\n LOCATION,\n OAUTH_CONFIG,\n OAuthConfig,\n OAuthParameters,\n OAuthStatus,\n OAuthToken,\n OAuthType,\n OAuthTypeConfig,\n ResourceParameters\n} from '../models';\n\nconst base64url = (str: string) => btoa(str)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n\nconst pkce = async (value: string) => {\n const buff = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(value));\n return base64url(new Uint8Array(buff).reduce((s, b) => s + String.fromCharCode(b), ''));\n};\n\nconst REQUEST_HEADER = new HttpHeaders({'Content-Type': 'application/x-www-form-urlencoded'});\n\nconst parseOauthUri = (hash: string): Record<string, string> | null => {\n const regex = /([^&=]+)=([^&]*)/g;\n const params: Record<string, string> = {};\n let m;\n // tslint:disable-next-line:no-conditional-assignment\n while ((m = regex.exec(hash)) !== null) {\n params[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);\n }\n if (Object.keys(params).length) {\n return params;\n }\n return null;\n};\n\n@Injectable()\nexport class OAuthService {\n\n private _token: OAuthToken | null = null;\n private _status = OAuthStatus.NOT_AUTHORIZED;\n private timer: any;\n state$: ReplaySubject<string> = new ReplaySubject(1);\n status$: ReplaySubject<OAuthStatus> = new ReplaySubject(1);\n\n constructor(private http: HttpClient,\n private zone: NgZone,\n @Inject(OAUTH_CONFIG) private authConfig: OAuthConfig,\n @Inject(LOCATION) private locationService: Location) {\n this.init();\n }\n\n protected init(): void {\n const {hash, search, origin} = this.locationService;\n const isImplicitRedirect = hash && new RegExp('(#access_token=)|(#error=)').test(hash);\n const isAuthCodeRedirect = search && new RegExp('(code=)|(error=)').test(search);\n const {storageKey} = this.authConfig;\n const savedToken = storageKey && this.authConfig.storage && this.authConfig.storage[storageKey] &&\n JSON.parse(this.authConfig.storage[storageKey]);\n if (isImplicitRedirect) {\n const parameters = parseOauthUri(hash.substr(1));\n this.emitState(parameters);\n this.cleanLocationHash();\n if (!parameters || parameters.error) {\n this.token = null;\n this.status = OAuthStatus.DENIED;\n } else {\n this.token = parameters;\n this.status = OAuthStatus.AUTHORIZED;\n }\n } else if (isAuthCodeRedirect) {\n const parameters = parseOauthUri(search.substr(1));\n this.emitState(parameters);\n const newParametersString = this.getCleanedUnSearchParameters();\n if (parameters && parameters.code) {\n const {clientId, clientSecret, tokenPath, scope, codeVerifier} = this.authConfig.config as any;\n setTimeout(() => {\n this.http.post(tokenPath, new HttpParams({\n fromObject: {\n code: parameters.code,\n client_id: clientId,\n client_secret: clientSecret,\n redirect_uri: `${origin}/${newParametersString}`,\n grant_type: 'authorization_code',\n ...scope ? {scope} : {},\n ...codeVerifier ? {code_verifier: codeVerifier} : {}\n }\n }), {headers: REQUEST_HEADER}).pipe(\n catchError(() => {\n this.token = {error: 'error'};\n this.status = OAuthStatus.DENIED;\n this.locationService.href = `${origin}/${newParametersString}`;\n return EMPTY;\n })\n ).subscribe(token => {\n this.token = token;\n // authorized event will be triggered after redirect\n this.locationService.href = `${origin}/${newParametersString}`;\n });\n });\n } else {\n this.token = null;\n this.status = OAuthStatus.DENIED;\n }\n } else if (savedToken) {\n const {access_token, refresh_token, error} = savedToken;\n if (error) {\n this.token = null;\n this.status = OAuthStatus.DENIED;\n } else if (access_token) {\n this.token = savedToken;\n if (refresh_token) {\n setTimeout(() => {\n this.refreshToken();\n });\n } else {\n this.status = OAuthStatus.AUTHORIZED;\n }\n }\n } else {\n this.status = OAuthStatus.NOT_AUTHORIZED;\n }\n }\n\n login(parameters?: OAuthParameters) {\n if (this.isResourceType(parameters as ResourceParameters)) {\n this.resourceLogin(parameters as ResourceParameters);\n } else if (this.isAuthorizationCodeType(parameters as AuthorizationCodeParameters)) {\n this.authorizationCodeLogin(parameters as AuthorizationCodeParameters).then();\n } else if (this.isImplicitType(parameters as ImplicitParameters)) {\n this.implicitLogin(parameters as ImplicitParameters).then();\n } else if (this.isClientCredentialType()) {\n this.clientCredentialLogin();\n }\n }\n\n logout() {\n this.revoke();\n this.token = null;\n this.status = OAuthStatus.NOT_AUTHORIZED;\n }\n\n revoke() {\n const {revokePath, clientId, clientSecret} = this.authConfig.config as any;\n if (revokePath) {\n const {access_token, refresh_token} = this.token as OAuthToken;\n const toRevoke = [];\n if (access_token) {\n toRevoke.push({\n ...clientId ? {client_id: clientId} : {},\n ...clientSecret ? {client_secret: clientSecret} : {},\n token: access_token,\n token_type_hint: 'access_token'\n });\n }\n if (refresh_token) {\n toRevoke.push({\n ...clientId ? {client_id: clientId} : {},\n ...clientSecret ? {client_secret: clientSecret} : {},\n token: refresh_token,\n token_type_hint: 'refresh_token'\n });\n }\n from(toRevoke).pipe(\n concatMap(o => of(o).pipe(delay(300))), // space request to avoid cancellation\n switchMap(o => this.http.post(revokePath, new HttpParams({fromObject: o}))),\n ).subscribe(noop);\n }\n }\n\n get status(): OAuthStatus {\n return this._status;\n }\n\n set status(status) {\n this._status = status;\n this.status$.next(status);\n }\n\n set(type: OAuthType, config?: OAuthTypeConfig): void {\n this.authConfig.type = type;\n if (config) {\n this.authConfig.config = {\n ...this.authConfig.config,\n ...config\n };\n }\n }\n\n get type(): OAuthType {\n return this.authConfig.type;\n }\n\n get ignorePaths(): RegExp[] {\n return this.authConfig.ignorePaths || [];\n }\n\n private resourceLogin(parameters: ResourceParameters) {\n const {clientId, clientSecret, tokenPath, scope} = this.authConfig.config as any;\n const {username, password} = parameters;\n this.http.post(tokenPath, new HttpParams({\n fromObject: {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: OAuthType.RESOURCE,\n ...scope ? {scope} : {},\n username,\n password\n }\n }), {headers: REQUEST_HEADER}).pipe(\n catchError(() => {\n this.token = null;\n this.status = OAuthStatus.DENIED;\n return EMPTY;\n })\n ).subscribe(params => {\n this.token = params;\n this.status = OAuthStatus.AUTHORIZED;\n });\n }\n\n private async authorizationCodeLogin(parameters: AuthorizationCodeParameters) {\n const authUrl = await this.toAuthorizationUrl(parameters, OAuthType.AUTHORIZATION_CODE);\n this.locationService.replace(authUrl);\n }\n\n private async implicitLogin(parameters: ImplicitParameters) {\n const authUrl = await this.toAuthorizationUrl(parameters, OAuthType.IMPLICIT);\n this.locationService.replace(authUrl);\n }\n\n private clientCredentialLogin() {\n const {clientId, clientSecret, tokenPath, scope} = this.authConfig.config as any;\n this.http.post(tokenPath, new HttpParams({\n fromObject: {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: OAuthType.CLIENT_CREDENTIAL,\n ...scope ? {scope} : {},\n }\n }), {headers: REQUEST_HEADER}).pipe(\n catchError(() => {\n this.token = null;\n this.status = OAuthStatus.DENIED;\n return EMPTY;\n })\n ).subscribe(params => {\n this.token = params;\n this.status = OAuthStatus.AUTHORIZED;\n });\n }\n\n private isClientCredentialType(): boolean {\n return this.authConfig.type === OAuthType.CLIENT_CREDENTIAL;\n }\n\n private isResourceType(parameters?: ResourceParameters): boolean {\n return this.authConfig.type === OAuthType.RESOURCE && !!parameters?.password;\n }\n\n private isImplicitType(parameters?: ImplicitParameters): boolean {\n return this.authConfig.type === OAuthType.IMPLICIT && !!parameters?.redirectUri;\n }\n\n private isAuthorizationCodeType(parameters?: AuthorizationCodeParameters): boolean {\n return this.authConfig.type === OAuthType.AUTHORIZATION_CODE && !!parameters?.redirectUri;\n }\n\n private async toAuthorizationUrl(parameters: AuthorizationCodeParameters | ImplicitParameters, responseType: OAuthType): Promise<string> {\n const {config} = this.authConfig as any;\n const appendChar = config.authorizePath.includes('?') ? '&' : '?';\n const clientId = `${appendChar}client_id=${config.clientId}`;\n const redirectUri = `&redirect_uri=${encodeURIComponent(parameters.redirectUri)}`;\n const responseTypeString = `&response_type=${responseType}`;\n const scope = `&scope=${encodeURIComponent(config.scope || '')}`;\n const state = `&state=${encodeURIComponent(parameters.state || '')}`;\n const {codeVerifier} = config;\n const codeChallenge = codeVerifier ? `&code_challenge=${await pkce(codeVerifier)}&code_challenge_method=S256` : '';\n const parametersString = `${clientId}${redirectUri}${responseTypeString}${scope}${state}${codeChallenge}`;\n return `${config.authorizePath}${parametersString}`;\n }\n\n set token(token: OAuthToken | null) {\n this._token = token;\n const {storageKey} = this.authConfig;\n if (token) {\n // @ts-ignore\n this.authConfig.storage[storageKey] = JSON.stringify(this.token);\n clearTimeout(this.timer);\n if (this.token && this.token.expires_in) {\n this.zone.runOutsideAngular(() => {\n this.timer = setTimeout(() => {\n this.zone.run(() => {\n this.refreshToken();\n });\n }, Number(this.token?.expires_in) * 1000);\n });\n }\n } else {\n // @ts-ignore\n delete this.authConfig.storage[storageKey];\n }\n }\n\n get token() {\n return this._token;\n }\n\n private refreshToken() {\n const {tokenPath, clientId, clientSecret, scope} = this.authConfig.config as any;\n const {refresh_token} = this.token as OAuthToken;\n if (tokenPath && refresh_token) {\n this.http.post(tokenPath, new HttpParams({\n fromObject: {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'refresh_token',\n refresh_token,\n ...scope ? {scope} : {},\n }\n }), {headers: REQUEST_HEADER}).pipe(\n catchError(() => {\n this.logout();\n return EMPTY;\n })\n ).subscribe(params => {\n this.token = {\n ...this.token,\n ...params\n };\n this.status = OAuthStatus.AUTHORIZED;\n });\n }\n }\n\n private getCleanedUnSearchParameters(): string {\n const {search} = this.locationService;\n let searchString = search.substr(1);\n const hashKeys = ['code', 'state', 'error', 'error_description', 'session_state'];\n hashKeys.forEach((hashKey) => {\n const re = new RegExp('&' + hashKey + '(=[^&]*)?|^' + hashKey + '(=[^&]*)?&?');\n searchString = searchString.replace(re, '');\n });\n return searchString.length ? `?${searchString}` : '';\n }\n\n private cleanLocationHash() {\n const {hash} = this.locationService;\n let curHash = hash.substr(1);\n const hashKeys = ['access_token', 'token_type', 'expires_in', 'scope', 'state', 'error', 'error_description', 'session_state'];\n hashKeys.forEach((hashKey) => {\n const re = new RegExp('&' + hashKey + '(=[^&]*)?|^' + hashKey + '(=[^&]*)?&?');\n curHash = curHash.replace(re, '');\n });\n this.locationService.hash = curHash;\n }\n\n private emitState(parameters: Record<string, string> | null) {\n const {state} = parameters as any;\n if (state) {\n this.state$.next(state);\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {EMPTY, Observable, throwError} from 'rxjs';\nimport {catchError} from 'rxjs/operators';\nimport {OAuthService} from './oauth.service';\nimport {OAuthStatus} from '../models';\n\n@Injectable()\nexport class OAuthInterceptor implements HttpInterceptor {\n\n constructor(private oauthService: OAuthService) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (this.oauthService) {\n if (!this.isPathExcepted(req)) {\n const token = this.oauthService.token;\n if (token && token.access_token) {\n req = req.clone({\n setHeaders: {\n Authorization: `${token.token_type} ${token.access_token}`\n }\n });\n }\n }\n return next.handle(req).pipe(\n catchError((err) => {\n if (err.status === 401) {\n this.oauthService.token = null;\n this.oauthService.status = OAuthStatus.DENIED;\n return EMPTY;\n }\n return throwError(() => new Error(err));\n })\n );\n } else {\n return next.handle(req);\n }\n }\n\n private isPathExcepted(req: HttpRequest<any>) {\n for (const ignorePath of this.oauthService.ignorePaths) {\n try {\n if (req.url.match(ignorePath)) {\n return true;\n }\n } catch (err) {\n }\n }\n return false;\n }\n}\n","import {Component, ContentChild, EventEmitter, HostListener, Inject, Input, OnDestroy, Output, TemplateRef} from '@angular/core';\r\nimport {Observable, Subscription} from 'rxjs';\r\nimport {LOCATION, OAuthParameters, OAuthStatus, OAuthType} from '../../models';\r\nimport {tap} from 'rxjs/operators';\r\nimport {OAuthService} from '../../services/oauth.service';\r\n\r\nexport interface OAuthLoginI18n {\r\n username?: string;\r\n password?: string;\r\n submit?: string;\r\n notAuthorized?: string;\r\n authorized?: string;\r\n denied?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'oauth-login',\r\n templateUrl: 'oauth-login.component.html',\r\n styleUrls: ['oauth-login.component.scss']\r\n})\r\nexport class OAuthLoginComponent implements OnDestroy {\r\n\r\n private subscription = new Subscription();\r\n private _i18n: OAuthLoginI18n = {\r\n username: 'Username',\r\n password: 'Password',\r\n submit: 'Sign in',\r\n notAuthorized: 'Sign in',\r\n authorized: 'Welcome',\r\n denied: 'Access Denied. Try again!'\r\n };\r\n\r\n get i18n() {\r\n return this._i18n;\r\n }\r\n\r\n @Input()\r\n set i18n(i18n) {\r\n this._i18n = {\r\n ...this._i18n,\r\n ...i18n\r\n };\r\n }\r\n\r\n @Input()\r\n state = '';\r\n @Output()\r\n stateChange: EventEmitter<string> = new EventEmitter();\r\n @Input()\r\n profileName$: Observable<string> | undefined;\r\n @ContentChild('login', {static: false})\r\n loginTemplate: TemplateRef<any> | undefined;\r\n username = '';\r\n password = '';\r\n profileName: string | undefined;\r\n OAuthStatus = OAuthStatus;\r\n OAuthType = OAuthType;\r\n collapse = false;\r\n type = this.oauthService.type;\r\n redirectUri = this.location.href;\r\n state$ = this.oauthService.state$.pipe(\r\n tap(s => this.stateChange.emit(s))\r\n );\r\n status$ = this.oauthService.status$.pipe(\r\n tap(s => {\r\n if (s === OAuthStatus.AUTHORIZED && this.profileName$) {\r\n this.subscription.add(this.profileName$.subscribe(n => this.profileName = n));\r\n } else {\r\n this.profileName = '';\r\n }\r\n })\r\n );\r\n loginFunction = (p: OAuthParameters) => this.login(p);\r\n logoutFunction = () => this.logout();\r\n\r\n constructor(private oauthService: OAuthService,\r\n @Inject(LOCATION) private location: Location) {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n logout() {\r\n this.oauthService.logout();\r\n }\r\n\r\n login(parameters: OAuthParameters) {\r\n this.oauthService.login(parameters);\r\n this.collapse = false;\r\n }\r\n\r\n toggleCollapse() {\r\n this.collapse = !this.collapse;\r\n }\r\n\r\n @HostListener('window:keydown.escape')\r\n keyboardEvent() {\r\n this.collapse = false;\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule, Optional, PLATFORM_ID} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\nimport {RouterModule} from '@angular/router';\nimport {OAuthConfig, OAUTH_CONFIG, LOCATION, SERVER_HOST, SERVER_PATH, STORAGE} from './models';\nimport {OAuthService} from './services/oauth.service';\nimport {OAuthLoginComponent} from './components/login/oauth-login.component';\nimport {CommonModule, isPlatformBrowser} from '@angular/common';\nimport {OAuthInterceptor} from './services/oauth.interceptor';\n\nconst mockLocation = (serverHost: string, serverPath: string): Location => {\n const url = new URL(serverHost && serverPath ? `${serverHost}${serverPath}` : 'http://localhost');\n const {href, origin, protocol, host, hostname, port, pathname, search, hash} = url;\n return {\n href, origin, protocol, host, hostname, port, pathname, search, hash,\n reload() {\n },\n assign(u: string) {\n },\n ancestorOrigins: {} as any,\n replace(u: string) {\n }\n };\n};\n\nconst LocationService = {\n provide: LOCATION,\n useFactory(platformId: Object, serverHost: string, serverPath: string) {\n return isPlatformBrowser(platformId) ? location : mockLocation(serverHost, serverPath);\n },\n deps: [\n PLATFORM_ID,\n [new Optional(), SERVER_HOST],\n [new Optional(), SERVER_PATH]\n ]\n};\n\nconst mockStorage: Storage = {\n clear() {\n },\n getItem(key: string) {\n return null;\n },\n key(index: number) {\n return null;\n },\n removeItem(key: string) {\n },\n setItem(key: string, value: string) {\n },\n length: 0\n};\n\nconst StorageService = {\n provide: STORAGE,\n useFactory(platformId: Object) {\n return isPlatformBrowser(platformId) ? localStorage : mockStorage;\n },\n deps: [PLATFORM_ID]\n};\n\nconst OAuthInterceptorService = {\n provide: HTTP_INTERCEPTORS,\n useClass: OAuthInterceptor,\n multi: true,\n};\n\nconst defaultConfig = (storage: Storage) => {\n return {\n storage,\n storageKey: 'token',\n ignorePaths: []\n };\n};\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n RouterModule,\n ],\n declarations: [OAuthLoginComponent],\n exports: [OAuthLoginComponent],\n providers: [\n LocationService,\n StorageService,\n OAuthService,\n OAuthInterceptorService,\n ]\n})\nexport class OAuthModule {\n\n static forRoot(config: OAuthConfig): ModuleWithProviders<OAuthModule> {\n return {\n ngModule: OAuthModule,\n providers: [\n LocationService,\n StorageService,\n OAuthService,\n OAuthInterceptorService,\n {\n provide: OAUTH_CONFIG,\n useFactory(storage: Storage) {\n return {\n ...defaultConfig(storage),\n ...config,\n };\n },\n deps: [\n STORAGE\n ]\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of ngx-oauth\n */\nexport * from './lib/models';\nexport * from './lib/services/oauth.service';\nexport * from './lib/services/oauth.interceptor';\nexport * from './lib/components/login/oauth-login.component';\nexport * from './lib/oauth.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["InjectionToken","OAuthType","OAuthStatus","HttpHeaders","ReplaySubject","HttpParams","catchError","EMPTY","from","concatMap","of","delay","switchMap","noop","Injectable","HttpClient","NgZone","Inject","throwError","Subscription","EventEmitter","tap","Component","Input","Output","ContentChild","HostListener","isPlatformBrowser","PLATFORM_ID","Optional","HTTP_INTERCEPTORS","NgModule","CommonModule","FormsModule","HttpClientModule","RouterModule"],"mappings":"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"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { Component, ContentChild, EventEmitter, HostListener, Inject, Input, Output } from '@angular/core';
|
|
2
|
-
import { Subscription } from 'rxjs';
|
|
3
|
-
import { LOCATION, OAuthStatus, OAuthType } from '../../models';
|
|
4
|
-
import { tap } from 'rxjs/operators';
|
|
5
|
-
import { OAuthService } from '../../services/oauth.service';
|
|
6
|
-
export class OAuthLoginComponent {
|
|
7
|
-
constructor(oauthService, location) {
|
|
8
|
-
this.oauthService = oauthService;
|
|
9
|
-
this.location = location;
|
|
10
|
-
this.subscription = new Subscription();
|
|
11
|
-
this._i18n = {
|
|
12
|
-
username: 'Username',
|
|
13
|
-
password: 'Password',
|
|
14
|
-
submit: 'Sign in',
|
|
15
|
-
notAuthorized: 'Sign in',
|
|
16
|
-
authorized: 'Welcome',
|
|
17
|
-
denied: 'Access Denied. Try again!'
|
|
18
|
-
};
|
|
19
|
-
this.state = '';
|
|
20
|
-
this.stateChange = new EventEmitter();
|
|
21
|
-
this.username = '';
|
|
22
|
-
this.password = '';
|
|
23
|
-
this.OAuthStatus = OAuthStatus;
|
|
24
|
-
this.OAuthType = OAuthType;
|
|
25
|
-
this.collapse = false;
|
|
26
|
-
this.type = this.oauthService.type;
|
|
27
|
-
this.redirectUri = this.location.href;
|
|
28
|
-
this.state$ = this.oauthService.state$.pipe(tap(s => this.stateChange.emit(s)));
|
|
29
|
-
this.status$ = this.oauthService.status$.pipe(tap(s => {
|
|
30
|
-
if (s === OAuthStatus.AUTHORIZED && this.profileName$) {
|
|
31
|
-
this.subscription.add(this.profileName$.subscribe(n => this.profileName = n));
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
this.profileName = '';
|
|
35
|
-
}
|
|
36
|
-
}));
|
|
37
|
-
this.loginFunction = (p) => this.login(p);
|
|
38
|
-
this.logoutFunction = () => this.logout();
|
|
39
|
-
}
|
|
40
|
-
get i18n() {
|
|
41
|
-
return this._i18n;
|
|
42
|
-
}
|
|
43
|
-
set i18n(i18n) {
|
|
44
|
-
this._i18n = Object.assign(Object.assign({}, this._i18n), i18n);
|
|
45
|
-
}
|
|
46
|
-
ngOnDestroy() {
|
|
47
|
-
this.subscription.unsubscribe();
|
|
48
|
-
}
|
|
49
|
-
logout() {
|
|
50
|
-
this.oauthService.logout();
|
|
51
|
-
}
|
|
52
|
-
login(parameters) {
|
|
53
|
-
this.oauthService.login(parameters);
|
|
54
|
-
this.collapse = false;
|
|
55
|
-
}
|
|
56
|
-
toggleCollapse() {
|
|
57
|
-
this.collapse = !this.collapse;
|
|
58
|
-
}
|
|
59
|
-
keyboardEvent() {
|
|
60
|
-
this.collapse = false;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
OAuthLoginComponent.decorators = [
|
|
64
|
-
{ type: Component, args: [{
|
|
65
|
-
selector: 'oauth-login',
|
|
66
|
-
template: "<ng-container *ngIf=\"state$ | async\"></ng-container>\r\n<ng-container *ngIf=\"loginTemplate; else defaultLogin\"\r\n [ngTemplateOutlet]=\"loginTemplate\"\r\n [ngTemplateOutletContext]=\"{login: loginFunction, logout: logoutFunction, status: status$ | async}\">\r\n</ng-container>\r\n<ng-template #defaultLogin>\r\n <ng-container *ngIf=\"status$ | async as status\">\r\n <ng-container *ngIf=\"type === OAuthType.RESOURCE; else noResource\">\r\n <div class=\"oauth dropdown text-right p-3 {{collapse ? 'show': ''}}\">\r\n <button class=\"btn btn-link p-0 dropdown-toggle\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : toggleCollapse()\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </button>\r\n <div class=\"dropdown-menu mr-3 {{collapse ? 'show': ''}}\">\r\n <form class=\"p-3\" #form=\"ngForm\"\r\n *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED || status === OAuthStatus.DENIED\"\r\n (submit)=\"login({username: username, password: password})\">\r\n <div class=\"form-group\">\r\n <input type=\"text\"\r\n class=\"form-control\"\r\n name=\"username\"\r\n required\r\n [(ngModel)]=\"username\"\r\n [placeholder]=\"i18n.username\">\r\n </div>\r\n <div class=\"form-group\">\r\n <input type=\"password\"\r\n class=\"form-control\"\r\n name=\"password\"\r\n required\r\n [(ngModel)]=\"password\"\r\n [placeholder]=\"i18n.password\">\r\n </div>\r\n <div class=\"text-right\">\r\n <button type=\"submit\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"form.invalid\">{{i18n.submit}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #noResource>\r\n <a role=\"button\" class=\"oauth\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : login({redirectUri: redirectUri, state:state})\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </a>\r\n </ng-template>\r\n\r\n <ng-template #message>\r\n <span *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED\">{{i18n.notAuthorized}}</span>\r\n <span *ngIf=\"status === OAuthStatus.AUTHORIZED\">\r\n {{i18n.authorized}}<strong> {{profileName}}</strong>\r\n </span>\r\n <span *ngIf=\"status === OAuthStatus.DENIED\">{{i18n.denied}}</span>\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>\r\n\r\n",
|
|
67
|
-
styles: [".oauth .dropdown-menu{left:auto;right:0;box-shadow:0 5px 10px #0003;min-width:250px}.oauth .dropdown-menu:before{content:\"\";display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:#0003;position:absolute;top:-7px;left:auto;right:15px}.oauth .dropdown-menu:after{content:\"\";display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:auto;right:16px}\n"]
|
|
68
|
-
},] }
|
|
69
|
-
];
|
|
70
|
-
OAuthLoginComponent.ctorParameters = () => [
|
|
71
|
-
{ type: OAuthService },
|
|
72
|
-
{ type: Location, decorators: [{ type: Inject, args: [LOCATION,] }] }
|
|
73
|
-
];
|
|
74
|
-
OAuthLoginComponent.propDecorators = {
|
|
75
|
-
i18n: [{ type: Input }],
|
|
76
|
-
state: [{ type: Input }],
|
|
77
|
-
stateChange: [{ type: Output }],
|
|
78
|
-
profileName$: [{ type: Input }],
|
|
79
|
-
loginTemplate: [{ type: ContentChild, args: ['login', { static: false },] }],
|
|
80
|
-
keyboardEvent: [{ type: HostListener, args: ['window:keydown.escape',] }]
|
|
81
|
-
};
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtbG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9hdXRoL3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9vYXV0aC1sb2dpbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQWEsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxRQUFRLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQWdCMUQsTUFBTSxPQUFPLG1CQUFtQjtJQXVEOUIsWUFBb0IsWUFBMEIsRUFDUixRQUFrQjtRQURwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUNSLGFBQVEsR0FBUixRQUFRLENBQVU7UUF0RGhELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxVQUFLLEdBQW1CO1lBQzlCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGFBQWEsRUFBRSxTQUFTO1lBQ3hCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE1BQU0sRUFBRSwyQkFBMkI7U0FDcEMsQ0FBQztRQWVGLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFWCxnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBS3ZELGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWQsZ0JBQVcsR0FBRyxXQUFXLENBQUM7UUFDMUIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUM5QixnQkFBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25DLENBQUM7UUFDRixZQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsS0FBSyxXQUFXLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9FO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLGtCQUFhLEdBQUcsQ0FBQyxDQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RELG1CQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBSXJDLENBQUM7SUE3Q0QsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUNJLElBQUksQ0FBQyxJQUFJO1FBQ1gsSUFBSSxDQUFDLEtBQUssbUNBQ0wsSUFBSSxDQUFDLEtBQUssR0FDVixJQUFJLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFxQ0QsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBMkI7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBR0QsYUFBYTtRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7OztZQXBGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLHN3RkFBeUM7O2FBRTFDOzs7WUFmTyxZQUFZO1lBd0U4QixRQUFRLHVCQUEzQyxNQUFNLFNBQUMsUUFBUTs7O21CQXhDM0IsS0FBSztvQkFRTCxLQUFLOzBCQUVMLE1BQU07MkJBRU4sS0FBSzs0QkFFTCxZQUFZLFNBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQzs0QkE4Q3JDLFlBQVksU0FBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFRlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0xPQ0FUSU9OLCBPQXV0aFBhcmFtZXRlcnMsIE9BdXRoU3RhdHVzLCBPQXV0aFR5cGV9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7dGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7T0F1dGhTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vYXV0aC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhMb2dpbkkxOG4ge1xyXG4gIHVzZXJuYW1lPzogc3RyaW5nO1xyXG4gIHBhc3N3b3JkPzogc3RyaW5nO1xyXG4gIHN1Ym1pdD86IHN0cmluZztcclxuICBub3RBdXRob3JpemVkPzogc3RyaW5nO1xyXG4gIGF1dGhvcml6ZWQ/OiBzdHJpbmc7XHJcbiAgZGVuaWVkPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ29hdXRoLWxvZ2luJyxcclxuICB0ZW1wbGF0ZVVybDogJ29hdXRoLWxvZ2luLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnb2F1dGgtbG9naW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgT0F1dGhMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgX2kxOG46IE9BdXRoTG9naW5JMThuID0ge1xyXG4gICAgdXNlcm5hbWU6ICdVc2VybmFtZScsXHJcbiAgICBwYXNzd29yZDogJ1Bhc3N3b3JkJyxcclxuICAgIHN1Ym1pdDogJ1NpZ24gaW4nLFxyXG4gICAgbm90QXV0aG9yaXplZDogJ1NpZ24gaW4nLFxyXG4gICAgYXV0aG9yaXplZDogJ1dlbGNvbWUnLFxyXG4gICAgZGVuaWVkOiAnQWNjZXNzIERlbmllZC4gVHJ5IGFnYWluISdcclxuICB9O1xyXG5cclxuICBnZXQgaTE4bigpIHtcclxuICAgIHJldHVybiB0aGlzLl9pMThuO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaTE4bihpMThuKSB7XHJcbiAgICB0aGlzLl9pMThuID0ge1xyXG4gICAgICAuLi50aGlzLl9pMThuLFxyXG4gICAgICAuLi5pMThuXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzdGF0ZSA9ICcnO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKVxyXG4gIHByb2ZpbGVOYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG4gIEBDb250ZW50Q2hpbGQoJ2xvZ2luJywge3N0YXRpYzogZmFsc2V9KVxyXG4gIGxvZ2luVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcbiAgdXNlcm5hbWUgPSAnJztcclxuICBwYXNzd29yZCA9ICcnO1xyXG4gIHByb2ZpbGVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgT0F1dGhTdGF0dXMgPSBPQXV0aFN0YXR1cztcclxuICBPQXV0aFR5cGUgPSBPQXV0aFR5cGU7XHJcbiAgY29sbGFwc2UgPSBmYWxzZTtcclxuICB0eXBlID0gdGhpcy5vYXV0aFNlcnZpY2UudHlwZTtcclxuICByZWRpcmVjdFVyaSA9IHRoaXMubG9jYXRpb24uaHJlZjtcclxuICBzdGF0ZSQgPSB0aGlzLm9hdXRoU2VydmljZS5zdGF0ZSQucGlwZShcclxuICAgIHRhcChzID0+IHRoaXMuc3RhdGVDaGFuZ2UuZW1pdChzKSlcclxuICApO1xyXG4gIHN0YXR1cyQgPSB0aGlzLm9hdXRoU2VydmljZS5zdGF0dXMkLnBpcGUoXHJcbiAgICB0YXAocyA9PiB7XHJcbiAgICAgIGlmIChzID09PSBPQXV0aFN0YXR1cy5BVVRIT1JJWkVEICYmIHRoaXMucHJvZmlsZU5hbWUkKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMucHJvZmlsZU5hbWUkLnN1YnNjcmliZShuID0+IHRoaXMucHJvZmlsZU5hbWUgPSBuKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcm9maWxlTmFtZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICk7XHJcbiAgbG9naW5GdW5jdGlvbiA9IChwOiBPQXV0aFBhcmFtZXRlcnMpID0+IHRoaXMubG9naW4ocCk7XHJcbiAgbG9nb3V0RnVuY3Rpb24gPSAoKSA9PiB0aGlzLmxvZ291dCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoTE9DQVRJT04pIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICB0aGlzLm9hdXRoU2VydmljZS5sb2dvdXQoKTtcclxuICB9XHJcblxyXG4gIGxvZ2luKHBhcmFtZXRlcnM6IE9BdXRoUGFyYW1ldGVycykge1xyXG4gICAgdGhpcy5vYXV0aFNlcnZpY2UubG9naW4ocGFyYW1ldGVycyk7XHJcbiAgICB0aGlzLmNvbGxhcHNlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZSgpIHtcclxuICAgIHRoaXMuY29sbGFwc2UgPSAhdGhpcy5jb2xsYXBzZTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLmVzY2FwZScpXHJcbiAga2V5Ym9hcmRFdmVudCgpIHtcclxuICAgIHRoaXMuY29sbGFwc2UgPSBmYWxzZTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const SERVER_HOST = new InjectionToken('SERVER_HOST');
|
|
3
|
-
export const SERVER_PATH = new InjectionToken('SERVER_PATH');
|
|
4
|
-
export const LOCATION = new InjectionToken('Location');
|
|
5
|
-
export const STORAGE = new InjectionToken('Storage');
|
|
6
|
-
export const OAUTH_CONFIG = new InjectionToken('OAuthConfig');
|
|
7
|
-
export var OAuthType;
|
|
8
|
-
(function (OAuthType) {
|
|
9
|
-
OAuthType["RESOURCE"] = "password";
|
|
10
|
-
OAuthType["AUTHORIZATION_CODE"] = "code";
|
|
11
|
-
OAuthType["IMPLICIT"] = "token";
|
|
12
|
-
OAuthType["CLIENT_CREDENTIAL"] = "client_credentials";
|
|
13
|
-
})(OAuthType || (OAuthType = {}));
|
|
14
|
-
export var OAuthStatus;
|
|
15
|
-
(function (OAuthStatus) {
|
|
16
|
-
OAuthStatus["NOT_AUTHORIZED"] = "NOT_AUTHORIZED";
|
|
17
|
-
OAuthStatus["AUTHORIZED"] = "AUTHORIZED";
|
|
18
|
-
OAuthStatus["DENIED"] = "DENIED";
|
|
19
|
-
})(OAuthStatus || (OAuthStatus = {}));
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2F1dGgvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQVMsYUFBYSxDQUFDLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFTLGFBQWEsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBVyxVQUFVLENBQUMsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQVUsU0FBUyxDQUFDLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBRTNFLE1BQU0sQ0FBTixJQUFZLFNBS1g7QUFMRCxXQUFZLFNBQVM7SUFDbkIsa0NBQXFCLENBQUE7SUFDckIsd0NBQTJCLENBQUE7SUFDM0IsK0JBQWtCLENBQUE7SUFDbEIscURBQXdDLENBQUE7QUFDMUMsQ0FBQyxFQUxXLFNBQVMsS0FBVCxTQUFTLFFBS3BCO0FBdUVELE1BQU0sQ0FBTixJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDckIsZ0RBQWlDLENBQUE7SUFDakMsd0NBQXlCLENBQUE7SUFDekIsZ0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBTRVJWRVJfSE9TVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdTRVJWRVJfSE9TVCcpO1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9QQVRIID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9QQVRIJyk7XG5leHBvcnQgY29uc3QgTE9DQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9jYXRpb24+KCdMb2NhdGlvbicpO1xuZXhwb3J0IGNvbnN0IFNUT1JBR0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3RvcmFnZT4oJ1N0b3JhZ2UnKTtcbmV4cG9ydCBjb25zdCBPQVVUSF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48T0F1dGhDb25maWc+KCdPQXV0aENvbmZpZycpO1xuXG5leHBvcnQgZW51bSBPQXV0aFR5cGUge1xuICBSRVNPVVJDRSA9ICdwYXNzd29yZCcsXG4gIEFVVEhPUklaQVRJT05fQ09ERSA9ICdjb2RlJyxcbiAgSU1QTElDSVQgPSAndG9rZW4nLFxuICBDTElFTlRfQ1JFREVOVElBTCA9ICdjbGllbnRfY3JlZGVudGlhbHMnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhDb25maWcge1xuICB0eXBlOiBPQXV0aFR5cGU7XG4gIGNvbmZpZzogT0F1dGhUeXBlQ29uZmlnO1xuICBzdG9yYWdlS2V5Pzogc3RyaW5nO1xuICBzdG9yYWdlPzogU3RvcmFnZTtcbiAgaWdub3JlUGF0aHM/OiBSZWdFeHBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGllbnRDcmVkZW50aWFsQ29uZmlnIHtcbiAgdG9rZW5QYXRoOiBzdHJpbmc7XG4gIHJldm9rZVBhdGg/OiBzdHJpbmc7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIGNsaWVudFNlY3JldDogc3RyaW5nO1xuICBzY29wZT86IHN0cmluZztcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZUNvbmZpZyBleHRlbmRzIENsaWVudENyZWRlbnRpYWxDb25maWcge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltcGxpY2l0Q29uZmlnIHtcbiAgYXV0aG9yaXplUGF0aDogc3RyaW5nO1xuICByZXZva2VQYXRoPzogc3RyaW5nO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICBzY29wZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uQ29kZUNvbmZpZyBleHRlbmRzIFJlc291cmNlQ29uZmlnIHtcbiAgYXV0aG9yaXplUGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6YXRpb25Db2RlUEtDRUNvbmZpZyBleHRlbmRzIEF1dGhvcml6YXRpb25Db2RlQ29uZmlnIHtcbiAgY29kZVZlcmlmaWVyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VQYXJhbWV0ZXJzIHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbXBsaWNpdFBhcmFtZXRlcnMge1xuICByZWRpcmVjdFVyaTogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uQ29kZVBhcmFtZXRlcnMgZXh0ZW5kcyBJbXBsaWNpdFBhcmFtZXRlcnMge1xufVxuXG5leHBvcnQgdHlwZSBPQXV0aFBhcmFtZXRlcnMgPSBSZXNvdXJjZVBhcmFtZXRlcnMgfCBBdXRob3JpemF0aW9uQ29kZVBhcmFtZXRlcnMgfCBJbXBsaWNpdFBhcmFtZXRlcnM7XG5leHBvcnQgdHlwZSBPQXV0aFR5cGVDb25maWcgPVxuICBBdXRob3JpemF0aW9uQ29kZVBLQ0VDb25maWdcbiAgfCBBdXRob3JpemF0aW9uQ29kZUNvbmZpZ1xuICB8IEltcGxpY2l0Q29uZmlnXG4gIHwgUmVzb3VyY2VDb25maWdcbiAgfCBDbGllbnRDcmVkZW50aWFsQ29uZmlnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoVG9rZW4ge1xuICBpZF90b2tlbj86IHN0cmluZztcbiAgYWNjZXNzX3Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoX3Rva2VuPzogc3RyaW5nO1xuICB0b2tlbl90eXBlPzogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG4gIGV4cGlyZXNfaW4/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHJlZnJlc2hfZXhwaXJlc19pbj86IG51bWJlcjtcbiAgc2NvcGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIE9BdXRoU3RhdHVzIHtcbiAgTk9UX0FVVEhPUklaRUQgPSAnTk9UX0FVVEhPUklaRUQnLFxuICBBVVRIT1JJWkVEID0gJ0FVVEhPUklaRUQnLFxuICBERU5JRUQgPSAnREVOSUVEJ1xufVxuIl19
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { NgModule, Optional, PLATFORM_ID } from '@angular/core';
|
|
2
|
-
import { FormsModule } from '@angular/forms';
|
|
3
|
-
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
|
|
4
|
-
import { RouterModule } from '@angular/router';
|
|
5
|
-
import { OAUTH_CONFIG, LOCATION, SERVER_HOST, SERVER_PATH, STORAGE } from './models';
|
|
6
|
-
import { OAuthService } from './services/oauth.service';
|
|
7
|
-
import { OAuthLoginComponent } from './components/login/oauth-login.component';
|
|
8
|
-
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
9
|
-
import { OAuthInterceptor } from './services/oauth.interceptor';
|
|
10
|
-
const mockLocation = (serverHost, serverPath) => {
|
|
11
|
-
const url = new URL(serverHost && serverPath ? `${serverHost}${serverPath}` : 'http://localhost');
|
|
12
|
-
const { href, origin, protocol, host, hostname, port, pathname, search, hash } = url;
|
|
13
|
-
return {
|
|
14
|
-
href, origin, protocol, host, hostname, port, pathname, search, hash,
|
|
15
|
-
reload() {
|
|
16
|
-
},
|
|
17
|
-
assign(u) {
|
|
18
|
-
},
|
|
19
|
-
ancestorOrigins: {},
|
|
20
|
-
replace(u) {
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
const ɵ0 = mockLocation;
|
|
25
|
-
const LocationService = {
|
|
26
|
-
provide: LOCATION,
|
|
27
|
-
useFactory(platformId, serverHost, serverPath) {
|
|
28
|
-
return isPlatformBrowser(platformId) ? location : mockLocation(serverHost, serverPath);
|
|
29
|
-
},
|
|
30
|
-
deps: [
|
|
31
|
-
PLATFORM_ID,
|
|
32
|
-
[new Optional(), SERVER_HOST],
|
|
33
|
-
[new Optional(), SERVER_PATH]
|
|
34
|
-
]
|
|
35
|
-
};
|
|
36
|
-
const mockStorage = {
|
|
37
|
-
clear() {
|
|
38
|
-
},
|
|
39
|
-
getItem(key) {
|
|
40
|
-
return null;
|
|
41
|
-
},
|
|
42
|
-
key(index) {
|
|
43
|
-
return null;
|
|
44
|
-
},
|
|
45
|
-
removeItem(key) {
|
|
46
|
-
},
|
|
47
|
-
setItem(key, value) {
|
|
48
|
-
},
|
|
49
|
-
length: 0
|
|
50
|
-
};
|
|
51
|
-
const StorageService = {
|
|
52
|
-
provide: STORAGE,
|
|
53
|
-
useFactory(platformId) {
|
|
54
|
-
return isPlatformBrowser(platformId) ? localStorage : mockStorage;
|
|
55
|
-
},
|
|
56
|
-
deps: [PLATFORM_ID]
|
|
57
|
-
};
|
|
58
|
-
const OAuthInterceptorService = {
|
|
59
|
-
provide: HTTP_INTERCEPTORS,
|
|
60
|
-
useClass: OAuthInterceptor,
|
|
61
|
-
multi: true,
|
|
62
|
-
};
|
|
63
|
-
const defaultConfig = (storage) => {
|
|
64
|
-
return {
|
|
65
|
-
storage,
|
|
66
|
-
storageKey: 'token',
|
|
67
|
-
ignorePaths: []
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
const ɵ1 = defaultConfig;
|
|
71
|
-
export class OAuthModule {
|
|
72
|
-
static forRoot(config) {
|
|
73
|
-
return {
|
|
74
|
-
ngModule: OAuthModule,
|
|
75
|
-
providers: [
|
|
76
|
-
LocationService,
|
|
77
|
-
StorageService,
|
|
78
|
-
OAuthService,
|
|
79
|
-
OAuthInterceptorService,
|
|
80
|
-
{
|
|
81
|
-
provide: OAUTH_CONFIG,
|
|
82
|
-
useFactory(storage) {
|
|
83
|
-
return Object.assign(Object.assign({}, defaultConfig(storage)), config);
|
|
84
|
-
},
|
|
85
|
-
deps: [
|
|
86
|
-
STORAGE
|
|
87
|
-
]
|
|
88
|
-
}
|
|
89
|
-
]
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
OAuthModule.decorators = [
|
|
94
|
-
{ type: NgModule, args: [{
|
|
95
|
-
imports: [
|
|
96
|
-
CommonModule,
|
|
97
|
-
FormsModule,
|
|
98
|
-
HttpClientModule,
|
|
99
|
-
RouterModule,
|
|
100
|
-
],
|
|
101
|
-
declarations: [OAuthLoginComponent],
|
|
102
|
-
exports: [OAuthLoginComponent],
|
|
103
|
-
providers: [
|
|
104
|
-
LocationService,
|
|
105
|
-
StorageService,
|
|
106
|
-
OAuthService,
|
|
107
|
-
OAuthInterceptorService,
|
|
108
|
-
]
|
|
109
|
-
},] }
|
|
110
|
-
];
|
|
111
|
-
export { ɵ0, ɵ1 };
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9hdXRoL3NyYy9saWIvb2F1dGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQWMsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRTlELE1BQU0sWUFBWSxHQUFHLENBQUMsVUFBa0IsRUFBRSxVQUFrQixFQUFZLEVBQUU7SUFDeEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbEcsTUFBTSxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFD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IjpbImltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBQTEFURk9STV9JRH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0hUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50TW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1JvdXRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7T0F1dGhDb25maWcsIE9BVVRIX0NPTkZJRywgTE9DQVRJT04sIFNFUlZFUl9IT1NULCBTRVJWRVJfUEFUSCwgU1RPUkFHRX0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtPQXV0aFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvb2F1dGguc2VydmljZSc7XG5pbXBvcnQge09BdXRoTG9naW5Db21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9sb2dpbi9vYXV0aC1sb2dpbi5jb21wb25lbnQnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtPQXV0aEludGVyY2VwdG9yfSBmcm9tICcuL3NlcnZpY2VzL29hdXRoLmludGVyY2VwdG9yJztcblxuY29uc3QgbW9ja0xvY2F0aW9uID0gKHNlcnZlckhvc3Q6IHN0cmluZywgc2VydmVyUGF0aDogc3RyaW5nKTogTG9jYXRpb24gPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZlckhvc3QgJiYgc2VydmVyUGF0aCA/IGAke3NlcnZlckhvc3R9JHtzZXJ2ZXJQYXRofWAgOiAnaHR0cDovL2xvY2FsaG9zdCcpO1xuICBjb25zdCB7aHJlZiwgb3JpZ2luLCBwcm90b2NvbCwgaG9zdCwgaG9zdG5hbWUsIHBvcnQsIHBhdGhuYW1lLCBzZWFyY2gsIGhhc2h9ID0gdXJsO1xuICByZXR1cm4ge1xuICAgIGhyZWYsIG9yaWdpbiwgcHJvdG9jb2wsIGhvc3QsIGhvc3RuYW1lLCBwb3J0LCBwYXRobmFtZSwgc2VhcmNoLCBoYXNoLFxuICAgIHJlbG9hZCgpIHtcbiAgICB9LFxuICAgIGFzc2lnbih1OiBzdHJpbmcpIHtcbiAgICB9LFxuICAgIGFuY2VzdG9yT3JpZ2luczoge30gYXMgYW55LFxuICAgIHJlcGxhY2UodTogc3RyaW5nKSB7XG4gICAgfVxuICB9O1xufTtcblxuY29uc3QgTG9jYXRpb25TZXJ2aWNlID0ge1xuICBwcm92aWRlOiBMT0NBVElPTixcbiAgdXNlRmFjdG9yeShwbGF0Zm9ybUlkOiBPYmplY3QsIHNlcnZlckhvc3Q6IHN0cmluZywgc2VydmVyUGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpID8gbG9jYXRpb24gOiBtb2NrTG9jYXRpb24oc2VydmVySG9zdCwgc2VydmVyUGF0aCk7XG4gIH0sXG4gIGRlcHM6IFtcbiAgICBQTEFURk9STV9JRCxcbiAgICBbbmV3IE9wdGlvbmFsKCksIFNFUlZFUl9IT1NUXSxcbiAgICBbbmV3IE9wdGlvbmFsKCksIFNFUlZFUl9QQVRIXVxuICBdXG59O1xuXG5jb25zdCBtb2NrU3RvcmFnZTogU3RvcmFnZSA9IHtcbiAgY2xlYXIoKSB7XG4gIH0sXG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAga2V5KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZykge1xuICB9LFxuICBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gIH0sXG4gIGxlbmd0aDogMFxufTtcblxuY29uc3QgU3RvcmFnZVNlcnZpY2UgPSB7XG4gIHByb3ZpZGU6IFNUT1JBR0UsXG4gIHVzZUZhY3RvcnkocGxhdGZvcm1JZDogT2JqZWN0KSB7XG4gICAgcmV0dXJuIGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpID8gbG9jYWxTdG9yYWdlIDogbW9ja1N0b3JhZ2U7XG4gIH0sXG4gIGRlcHM6IFtQTEFURk9STV9JRF1cbn07XG5cbmNvbnN0IE9BdXRoSW50ZXJjZXB0b3JTZXJ2aWNlID0ge1xuICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgdXNlQ2xhc3M6IE9BdXRoSW50ZXJjZXB0b3IsXG4gIG11bHRpOiB0cnVlLFxufTtcblxuY29uc3QgZGVmYXVsdENvbmZpZyA9IChzdG9yYWdlOiBTdG9yYWdlKSA9PiB7XG4gIHJldHVybiB7XG4gICAgc3RvcmFnZSxcbiAgICBzdG9yYWdlS2V5OiAndG9rZW4nLFxuICAgIGlnbm9yZVBhdGhzOiBbXVxuICB9O1xufTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbT0F1dGhMb2dpbkNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtPQXV0aExvZ2luQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTG9jYXRpb25TZXJ2aWNlLFxuICAgIFN0b3JhZ2VTZXJ2aWNlLFxuICAgIE9BdXRoU2VydmljZSxcbiAgICBPQXV0aEludGVyY2VwdG9yU2VydmljZSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPQXV0aE1vZHVsZSB7XG5cbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBPQXV0aENvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8T0F1dGhNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE9BdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIExvY2F0aW9uU2VydmljZSxcbiAgICAgICAgU3RvcmFnZVNlcnZpY2UsXG4gICAgICAgIE9BdXRoU2VydmljZSxcbiAgICAgICAgT0F1dGhJbnRlcmNlcHRvclNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBPQVVUSF9DT05GSUcsXG4gICAgICAgICAgdXNlRmFjdG9yeShzdG9yYWdlOiBTdG9yYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5kZWZhdWx0Q29uZmlnKHN0b3JhZ2UpLFxuICAgICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW1xuICAgICAgICAgICAgU1RPUkFHRVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { EMPTY, throwError } from 'rxjs';
|
|
3
|
-
import { catchError } from 'rxjs/operators';
|
|
4
|
-
import { OAuthService } from './oauth.service';
|
|
5
|
-
import { OAuthStatus } from '../models';
|
|
6
|
-
export class OAuthInterceptor {
|
|
7
|
-
constructor(oauthService) {
|
|
8
|
-
this.oauthService = oauthService;
|
|
9
|
-
}
|
|
10
|
-
intercept(req, next) {
|
|
11
|
-
if (this.oauthService) {
|
|
12
|
-
if (!this.isPathExcepted(req)) {
|
|
13
|
-
const token = this.oauthService.token;
|
|
14
|
-
if (token && token.access_token) {
|
|
15
|
-
req = req.clone({
|
|
16
|
-
setHeaders: {
|
|
17
|
-
Authorization: `${token.token_type} ${token.access_token}`
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return next.handle(req).pipe(catchError((err) => {
|
|
23
|
-
if (err.status === 401) {
|
|
24
|
-
this.oauthService.token = null;
|
|
25
|
-
this.oauthService.status = OAuthStatus.DENIED;
|
|
26
|
-
return EMPTY;
|
|
27
|
-
}
|
|
28
|
-
return throwError(() => new Error(err));
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
return next.handle(req);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
isPathExcepted(req) {
|
|
36
|
-
for (const ignorePath of this.oauthService.ignorePaths) {
|
|
37
|
-
try {
|
|
38
|
-
if (req.url.match(ignorePath)) {
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
catch (err) {
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
OAuthInterceptor.decorators = [
|
|
49
|
-
{ type: Injectable }
|
|
50
|
-
];
|
|
51
|
-
OAuthInterceptor.ctorParameters = () => [
|
|
52
|
-
{ type: OAuthService }
|
|
53
|
-
];
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2F1dGgvc3JjL2xpYi9zZXJ2aWNlcy9vYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxLQUFLLEVBQWMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUd0QyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQzlDLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO29CQUMvQixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQzt3QkFDZCxVQUFVLEVBQUU7NEJBQ1YsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO3lCQUMzRDtxQkFDRixDQUFDLENBQUM7aUJBQ0o7YUFDRjtZQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzFCLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO29CQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQzlDLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2dCQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLEdBQXFCO1FBQzFDLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUU7WUFDdEQsSUFBSTtnQkFDRixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUM3QixPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO1lBQUMsT0FBTyxHQUFHLEVBQUU7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUEzQ0YsVUFBVTs7O1lBSEgsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3R9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RU1QVFksIE9ic2VydmFibGUsIHRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge09BdXRoU2VydmljZX0gZnJvbSAnLi9vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7T0F1dGhTdGF0dXN9IGZyb20gJy4uL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlKSB7XG4gIH1cblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBpZiAodGhpcy5vYXV0aFNlcnZpY2UpIHtcbiAgICAgIGlmICghdGhpcy5pc1BhdGhFeGNlcHRlZChyZXEpKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5vYXV0aFNlcnZpY2UudG9rZW47XG4gICAgICAgIGlmICh0b2tlbiAmJiB0b2tlbi5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICAgICAgc2V0SGVhZGVyczoge1xuICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgJHt0b2tlbi50b2tlbl90eXBlfSAke3Rva2VuLmFjY2Vzc190b2tlbn1gXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgIHRoaXMub2F1dGhTZXJ2aWNlLnRva2VuID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMub2F1dGhTZXJ2aWNlLnN0YXR1cyA9IE9BdXRoU3RhdHVzLkRFTklFRDtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVycikpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1BhdGhFeGNlcHRlZChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICBmb3IgKGNvbnN0IGlnbm9yZVBhdGggb2YgdGhpcy5vYXV0aFNlcnZpY2UuaWdub3JlUGF0aHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChyZXEudXJsLm1hdGNoKGlnbm9yZVBhdGgpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|