@dangl/angular-dangl-identity-client 4.0.0 → 4.0.1-beta0001
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/api-client.d.ts +3 -0
- package/dangl-angular-dangl-identity-client.d.ts +1 -0
- package/dangl-identity.module.d.ts +5 -0
- package/{esm2015/api-client.js → esm2020/api-client.mjs} +17 -11
- package/{esm2015/dangl-angular-dangl-identity-client.js → esm2020/dangl-angular-dangl-identity-client.mjs} +0 -0
- package/esm2020/dangl-identity.module.mjs +21 -0
- package/{esm2015/interceptors/dangl-identity-request-validator.js → esm2020/interceptors/dangl-identity-request-validator.mjs} +0 -0
- package/esm2020/interceptors/jwt-interceptor.service.mjs +47 -0
- package/esm2020/messengers/authentication.messenger.mjs +83 -0
- package/{esm2015/models/jwt-storage.js → esm2020/models/jwt-storage.mjs} +0 -0
- package/{esm2015/models/user-info.js → esm2020/models/user-info.mjs} +0 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/esm2020/services/authentication.service.mjs +41 -0
- package/esm2020/services/jwt-token.service.mjs +95 -0
- package/fesm2015/dangl-angular-dangl-identity-client.mjs +754 -0
- package/fesm2015/dangl-angular-dangl-identity-client.mjs.map +1 -0
- package/{fesm2015/dangl-angular-dangl-identity-client.js → fesm2020/dangl-angular-dangl-identity-client.mjs} +65 -54
- package/fesm2020/dangl-angular-dangl-identity-client.mjs.map +1 -0
- package/interceptors/jwt-interceptor.service.d.ts +3 -0
- package/messengers/authentication.messenger.d.ts +3 -0
- package/package.json +21 -9
- package/services/authentication.service.d.ts +3 -0
- package/services/jwt-token.service.d.ts +3 -0
- package/bundles/dangl-angular-dangl-identity-client.umd.js +0 -1179
- package/bundles/dangl-angular-dangl-identity-client.umd.js.map +0 -1
- package/dangl-angular-dangl-identity-client.metadata.json +0 -1
- package/esm2015/dangl-identity.module.js +0 -14
- package/esm2015/interceptors/jwt-interceptor.service.js +0 -43
- package/esm2015/messengers/authentication.messenger.js +0 -85
- package/esm2015/services/authentication.service.js +0 -45
- package/esm2015/services/jwt-token.service.js +0 -97
- package/fesm2015/dangl-angular-dangl-identity-client.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dangl-angular-dangl-identity-client.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/angular-dangl-identity-client/src/api-client.ts","../../../projects/angular-dangl-identity-client/src/services/jwt-token.service.ts","../../../projects/angular-dangl-identity-client/src/interceptors/jwt-interceptor.service.ts","../../../projects/angular-dangl-identity-client/src/dangl-identity.module.ts","../../../projects/angular-dangl-identity-client/src/services/authentication.service.ts","../../../projects/angular-dangl-identity-client/src/messengers/authentication.messenger.ts","../../../projects/angular-dangl-identity-client/src/public_api.ts","../../../projects/angular-dangl-identity-client/src/dangl-angular-dangl-identity-client.ts"],"sourcesContent":["/*! *****************************************************************************\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","/* tslint:disable */\r\n/* eslint-disable */\r\n//----------------------\r\n// <auto-generated>\r\n// Generated using the NSwag toolchain v13.13.2.0 (NJsonSchema v10.5.2.0 (Newtonsoft.Json v12.0.0.0)) (http://NSwag.org)\r\n// </auto-generated>\r\n//----------------------\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\r\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\r\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\r\n\r\nexport const DANGL_IDENTITY_CLIENT_API_BASE_URL = new InjectionToken<string>('DANGL_IDENTITY_CLIENT_API_BASE_URL');\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DanglIdentityClient {\r\n private http: HttpClient;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(DANGL_IDENTITY_CLIENT_API_BASE_URL) baseUrl?: string) {\r\n this.http = http;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n loginWithCookie(model: LoginPost, redirectUrl: string | null | undefined): Observable<void> {\r\n let url_ = this.baseUrl + \"/identity/login?\";\r\n if (redirectUrl !== undefined && redirectUrl !== null)\r\n url_ += \"redirectUrl=\" + encodeURIComponent(\"\" + redirectUrl) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(model);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processLoginWithCookie(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processLoginWithCookie(<any>response_);\r\n } catch (e) {\r\n return <Observable<void>><any>_observableThrow(e);\r\n }\r\n } else\r\n return <Observable<void>><any>_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processLoginWithCookie(response: HttpResponseBase): Observable<void> {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return _observableOf<void>(<any>null);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf<void>(<any>null);\r\n }\r\n\r\n signOutWithSignInManager(): Observable<void> {\r\n let url_ = this.baseUrl + \"/identity/login\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n })\r\n };\r\n\r\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processSignOutWithSignInManager(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processSignOutWithSignInManager(<any>response_);\r\n } catch (e) {\r\n return <Observable<void>><any>_observableThrow(e);\r\n }\r\n } else\r\n return <Observable<void>><any>_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processSignOutWithSignInManager(response: HttpResponseBase): Observable<void> {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return _observableOf<void>(<any>null);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf<void>(<any>null);\r\n }\r\n\r\n loginAndReturnToken(model: TokenLoginPost): Observable<TokenResponseGet> {\r\n let url_ = this.baseUrl + \"/identity/token-login\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(model);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processLoginAndReturnToken(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processLoginAndReturnToken(<any>response_);\r\n } catch (e) {\r\n return <Observable<TokenResponseGet>><any>_observableThrow(e);\r\n }\r\n } else\r\n return <Observable<TokenResponseGet>><any>_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processLoginAndReturnToken(response: HttpResponseBase): Observable<TokenResponseGet> {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : <TokenResponseGet>JSON.parse(_responseText, this.jsonParseReviver);\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 400) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : <TokenResponseGet>JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf<TokenResponseGet>(<any>null);\r\n }\r\n\r\n refreshToken(model: TokenRefreshPost): Observable<TokenResponseGet> {\r\n let url_ = this.baseUrl + \"/identity/token-refresh\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(model);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRefreshToken(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRefreshToken(<any>response_);\r\n } catch (e) {\r\n return <Observable<TokenResponseGet>><any>_observableThrow(e);\r\n }\r\n } else\r\n return <Observable<TokenResponseGet>><any>_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processRefreshToken(response: HttpResponseBase): Observable<TokenResponseGet> {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : <TokenResponseGet>JSON.parse(_responseText, this.jsonParseReviver);\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 400) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : <TokenResponseGet>JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf<TokenResponseGet>(<any>null);\r\n }\r\n\r\n register(registerModel: RegisterPost): Observable<void> {\r\n let url_ = this.baseUrl + \"/identity/register\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(registerModel);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRegister(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRegister(<any>response_);\r\n } catch (e) {\r\n return <Observable<void>><any>_observableThrow(e);\r\n }\r\n } else\r\n return <Observable<void>><any>_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processRegister(response: HttpResponseBase): Observable<void> {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return _observableOf<void>(<any>null);\r\n }));\r\n } else if (status === 400) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : <ApiError>JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf<void>(<any>null);\r\n }\r\n\r\n requestPasswordReset(forgotPasswordModel: ForgotPasswordPost): Observable<void> {\r\n let url_ = this.baseUrl + \"/identity/password-forgotten\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(forgotPasswordModel);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRequestPasswordReset(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRequestPasswordReset(<any>response_);\r\n } catch (e) {\r\n return <Observable<void>><any>_observableThrow(e);\r\n }\r\n } else\r\n return <Observable<void>><any>_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processRequestPasswordReset(response: HttpResponseBase): Observable<void> {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return _observableOf<void>(<any>null);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf<void>(<any>null);\r\n }\r\n}\r\n\r\nexport interface LoginPost {\r\n identifier: string;\r\n password: string;\r\n staySignedIn: boolean;\r\n}\r\n\r\nexport interface TokenResponseGet {\r\n accessToken?: string | null;\r\n error?: string | null;\r\n errorDescription?: string | null;\r\n expiresIn: number;\r\n httpErrorReason?: string | null;\r\n httpStatusCode: HttpStatusCode;\r\n identityToken?: string | null;\r\n isError: boolean;\r\n refreshToken?: string | null;\r\n tokenType?: string | null;\r\n errorType: ResponseErrorType;\r\n}\r\n\r\nexport enum HttpStatusCode {\r\n Continue = \"Continue\",\r\n SwitchingProtocols = \"SwitchingProtocols\",\r\n Processing = \"Processing\",\r\n EarlyHints = \"EarlyHints\",\r\n OK = \"OK\",\r\n Created = \"Created\",\r\n Accepted = \"Accepted\",\r\n NonAuthoritativeInformation = \"NonAuthoritativeInformation\",\r\n NoContent = \"NoContent\",\r\n ResetContent = \"ResetContent\",\r\n PartialContent = \"PartialContent\",\r\n MultiStatus = \"MultiStatus\",\r\n AlreadyReported = \"AlreadyReported\",\r\n IMUsed = \"IMUsed\",\r\n MultipleChoices = \"Ambiguous\",\r\n Ambiguous = \"Moved\",\r\n MovedPermanently = \"Redirect\",\r\n Moved = \"RedirectMethod\",\r\n Found = \"NotModified\",\r\n Redirect = \"UseProxy\",\r\n SeeOther = \"Unused\",\r\n RedirectMethod = \"TemporaryRedirect\",\r\n NotModified = \"PermanentRedirect\",\r\n UseProxy = \"BadRequest\",\r\n Unused = \"Unauthorized\",\r\n TemporaryRedirect = \"PaymentRequired\",\r\n RedirectKeepVerb = \"Forbidden\",\r\n PermanentRedirect = \"NotFound\",\r\n BadRequest = \"MethodNotAllowed\",\r\n Unauthorized = \"NotAcceptable\",\r\n PaymentRequired = \"ProxyAuthenticationRequired\",\r\n Forbidden = \"RequestTimeout\",\r\n NotFound = \"Conflict\",\r\n MethodNotAllowed = \"Gone\",\r\n NotAcceptable = \"LengthRequired\",\r\n ProxyAuthenticationRequired = \"PreconditionFailed\",\r\n RequestTimeout = \"RequestEntityTooLarge\",\r\n Conflict = \"RequestUriTooLong\",\r\n Gone = \"UnsupportedMediaType\",\r\n LengthRequired = \"RequestedRangeNotSatisfiable\",\r\n PreconditionFailed = \"ExpectationFailed\",\r\n RequestEntityTooLarge = \"MisdirectedRequest\",\r\n RequestUriTooLong = \"UnprocessableEntity\",\r\n UnsupportedMediaType = \"Locked\",\r\n RequestedRangeNotSatisfiable = \"FailedDependency\",\r\n ExpectationFailed = \"UpgradeRequired\",\r\n MisdirectedRequest = \"PreconditionRequired\",\r\n UnprocessableEntity = \"TooManyRequests\",\r\n Locked = \"RequestHeaderFieldsTooLarge\",\r\n FailedDependency = \"UnavailableForLegalReasons\",\r\n UpgradeRequired = \"InternalServerError\",\r\n PreconditionRequired = \"NotImplemented\",\r\n TooManyRequests = \"BadGateway\",\r\n RequestHeaderFieldsTooLarge = \"ServiceUnavailable\",\r\n UnavailableForLegalReasons = \"GatewayTimeout\",\r\n InternalServerError = \"HttpVersionNotSupported\",\r\n NotImplemented = \"VariantAlsoNegotiates\",\r\n BadGateway = \"InsufficientStorage\",\r\n ServiceUnavailable = \"LoopDetected\",\r\n GatewayTimeout = \"NotExtended\",\r\n HttpVersionNotSupported = \"NetworkAuthenticationRequired\",\r\n}\r\n\r\n/** Various reasons for a protocol endpoint error */\r\nexport enum ResponseErrorType {\r\n None = \"None\",\r\n Protocol = \"Protocol\",\r\n Http = \"Http\",\r\n Exception = \"Exception\",\r\n PolicyViolation = \"PolicyViolation\",\r\n}\r\n\r\nexport interface TokenLoginPost {\r\n identifier: string;\r\n password: string;\r\n}\r\n\r\nexport interface TokenRefreshPost {\r\n refreshToken: string;\r\n}\r\n\r\n/** Data transfer class to convey api errors */\r\nexport interface ApiError {\r\n /** This dictionary contains a set of all errors and their messages */\r\n errors?: { [key: string]: string[]; } | null;\r\n}\r\n\r\nexport interface RegisterPost {\r\n username: string;\r\n email: string;\r\n password: string;\r\n preferredLanguages?: string[] | null;\r\n}\r\n\r\nexport interface ForgotPasswordPost {\r\n identifier: string;\r\n preferredLanguages?: string[] | null;\r\n}\r\n\r\nexport class SwaggerException extends Error {\r\n message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isSwaggerException = true;\r\n\r\n static isSwaggerException(obj: any): obj is SwaggerException {\r\n return obj.isSwaggerException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable<any> {\r\n if (result !== null && result !== undefined)\r\n return _observableThrow(result);\r\n else\r\n return _observableThrow(new SwaggerException(message, status, response, headers, null));\r\n}\r\n\r\nfunction blobToText(blob: any): Observable<string> {\r\n return new Observable<string>((observer: any) => {\r\n if (!blob) {\r\n observer.next(\"\");\r\n observer.complete();\r\n } else {\r\n let reader = new FileReader();\r\n reader.onload = event => {\r\n observer.next((<any>event.target).result);\r\n observer.complete();\r\n };\r\n reader.readAsText(blob);\r\n }\r\n });\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { DanglIdentityClient, TokenResponseGet } from \"../api-client\";\r\nimport { JwtStorage } from \"../models/jwt-storage\";\r\nimport { Subject, Observable, of, ReplaySubject } from \"rxjs\";\r\nimport { map, catchError, tap, first } from \"rxjs/operators\";\r\nimport { AuthenticationMessenger } from \"../messengers/authentication.messenger\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class JwtTokenService {\r\n private readonly storage_identifier = \"dangl_identity_integration_jwt_token\";\r\n private isRefreshing = false;\r\n private refreshTokenSource = new Subject<JwtStorage>();\r\n private tokenStoredSource = new ReplaySubject<JwtStorage>(1);\r\n tokenStored = this.tokenStoredSource.asObservable();\r\n private tokenRefreshStartedSource = new Subject();\r\n tokenRefreshStarted = this.tokenRefreshStartedSource.asObservable();\r\n private tokenRefreshFinishedSource = new Subject<boolean>();\r\n tokenRefreshFinished = this.tokenRefreshFinishedSource.asObservable();\r\n\r\n constructor(private danglIdentityClient: DanglIdentityClient) {}\r\n\r\n deleteToken() {\r\n localStorage.removeItem(this.storage_identifier);\r\n this.tokenStoredSource.next(null);\r\n }\r\n\r\n storeCustomToken(tokenToStore: JwtStorage) {\r\n localStorage.setItem(this.storage_identifier, JSON.stringify(tokenToStore));\r\n this.tokenStoredSource.next(tokenToStore);\r\n }\r\n\r\n storeToken(token: TokenResponseGet) {\r\n const tokenToStore = this.transformTokenResponse(token);\r\n localStorage.setItem(this.storage_identifier, JSON.stringify(tokenToStore));\r\n this.tokenStoredSource.next(tokenToStore);\r\n }\r\n\r\n getTokenFromStorage(): JwtStorage {\r\n const storedString = localStorage.getItem(this.storage_identifier);\r\n if (storedString) {\r\n const storedToken = <JwtStorage>JSON.parse(storedString);\r\n return storedToken;\r\n }\r\n return null;\r\n }\r\n\r\n refreshToken(): Observable<JwtStorage> {\r\n if (this.isRefreshing) {\r\n return this.refreshTokenSource.pipe(first());\r\n }\r\n this.isRefreshing = true;\r\n this.tokenRefreshStartedSource.next();\r\n const refreshToken = this.getTokenFromStorage().refreshToken;\r\n\r\n if (!refreshToken) {\r\n this.isRefreshing = false;\r\n return of<JwtStorage>(null);\r\n }\r\n\r\n this.danglIdentityClient\r\n .refreshToken({\r\n refreshToken: refreshToken,\r\n })\r\n .pipe(\r\n tap((r) => this.storeToken(r)),\r\n map((r) => this.transformTokenResponse(r))\r\n )\r\n .subscribe(\r\n (refreshTokenResponse) => {\r\n this.isRefreshing = false;\r\n this.tokenRefreshFinishedSource.next(true);\r\n this.refreshTokenSource.next(refreshTokenResponse);\r\n },\r\n (error) => {\r\n this.isRefreshing = false;\r\n this.tokenRefreshFinishedSource.next(false);\r\n this.refreshTokenSource.next(null);\r\n console.error(\r\n \"Internal error while refreshing Dangl.Identity token\",\r\n error\r\n );\r\n }\r\n );\r\n\r\n return this.refreshTokenSource.pipe(first());\r\n }\r\n\r\n getToken(): Observable<JwtStorage> {\r\n const token = this.getTokenFromStorage();\r\n if (!token) {\r\n return of<JwtStorage>(null);\r\n }\r\n const isValidToken = token.expiresAt > new Date().getTime() / 1000;\r\n if (isValidToken) {\r\n return of(token);\r\n }\r\n return this.refreshToken();\r\n }\r\n\r\n private transformTokenResponse(token: TokenResponseGet): JwtStorage {\r\n return {\r\n accessToken: token.accessToken,\r\n refreshToken: token.refreshToken,\r\n expiresAt: new Date().getTime() / 1000 + token.expiresIn,\r\n };\r\n }\r\n}\r\n","import {\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n} from \"@angular/common/http\";\r\n\r\nimport { Inject, Injectable, InjectionToken, Optional } from \"@angular/core\";\r\nimport { JwtTokenService } from \"../services/jwt-token.service\";\r\nimport { Observable } from \"rxjs\";\r\nimport { mergeMap } from \"rxjs/operators\";\r\nimport { IDanglIdentityRequestValidator } from \"./dangl-identity-request-validator\";\r\n\r\nexport const DANGL_IDENTITY_REQUEST_VALIDATOR =\r\n new InjectionToken<IDanglIdentityRequestValidator>(\r\n \"Validator to decide whether to include JWT tokens in requests\"\r\n );\r\n@Injectable()\r\nexport class JwtInterceptorService implements HttpInterceptor {\r\n constructor(\r\n public jwtTokenService: JwtTokenService,\r\n @Optional()\r\n @Inject(DANGL_IDENTITY_REQUEST_VALIDATOR)\r\n private requestValidator: IDanglIdentityRequestValidator\r\n ) {}\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (request.url.startsWith(\"/identity\")) {\r\n // Requests to the authentication endpoint should not be intercepted\r\n return next.handle(request.clone());\r\n }\r\n\r\n if (\r\n this.requestValidator &&\r\n !this.requestValidator.validateRequest(request)\r\n ) {\r\n // In case a request validator is provided but doesn't return true for the\r\n // current request, we're not appending a token\r\n return next.handle(request);\r\n }\r\n\r\n return this.jwtTokenService\r\n .getToken()\r\n .pipe(\r\n mergeMap((f) =>\r\n next.handle(this.getHttpRequestWithToken(request, f && f.accessToken))\r\n )\r\n );\r\n }\r\n\r\n private getHttpRequestWithToken(\r\n request: HttpRequest<any>,\r\n token?: string\r\n ): HttpRequest<any> {\r\n if (token) {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n }\r\n return request.clone();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { JwtInterceptorService } from './interceptors/jwt-interceptor.service';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpClientModule\r\n ],\r\n providers: [{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptorService, multi: true }]\r\n})\r\nexport class DanglIdentityModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { DanglIdentityClient, TokenResponseGet } from '../api-client';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { JwtTokenService } from './jwt-token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n\r\n constructor(private danglIdentityClient: DanglIdentityClient,\r\n private jwtTokenService: JwtTokenService) { }\r\n\r\n loginWithToken(identifier: string, password: string): Observable<boolean> {\r\n return this.danglIdentityClient\r\n .loginAndReturnToken({\r\n identifier: identifier,\r\n password: password\r\n })\r\n .pipe(map(r => this.storeJwtTokenIfValid(r)),\r\n catchError(e => of(false)));\r\n }\r\n\r\n private storeJwtTokenIfValid(token: TokenResponseGet): boolean {\r\n if (!token.accessToken\r\n || !token.refreshToken\r\n || !token.expiresIn) {\r\n return false;\r\n }\r\n this.jwtTokenService.storeToken(token);\r\n return true;\r\n }\r\n\r\n logout() {\r\n this.jwtTokenService.deleteToken();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { UserInfo } from '../models/user-info';\r\nimport { JwtTokenService } from '../services/jwt-token.service';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { JwtStorage } from '../models/jwt-storage';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationMessenger {\r\n\r\n private jwtHelperService = new JwtHelperService();\r\n private lastBroadcastAccessToken: string;\r\n\r\n readonly isAuthenticated = new ReplaySubject<boolean>(1);\r\n readonly username = new ReplaySubject<string>(1);\r\n readonly email = new ReplaySubject<string>(1);\r\n readonly identiconId = new ReplaySubject<string>(1);\r\n readonly userInfo = new ReplaySubject<UserInfo>(1);\r\n readonly tokenRefreshStarted = new Subject();\r\n readonly tokenRefreshFinished = new Subject<boolean>();\r\n\r\n constructor(private jwtTokenService: JwtTokenService) {\r\n jwtTokenService.tokenRefreshStarted.subscribe(() => this.tokenRefreshStarted.next());\r\n jwtTokenService.tokenRefreshFinished.subscribe(successfulRefresh => this.tokenRefreshFinished.next(successfulRefresh));\r\n jwtTokenService.tokenStored.subscribe(jwtToken => this.refreshAuthenticationStatus(jwtToken));\r\n jwtTokenService.getToken()\r\n .subscribe(token => this.refreshAuthenticationStatus(token));\r\n }\r\n\r\n private refreshAuthenticationStatus(jwtToken?: JwtStorage) {\r\n if (jwtToken) {\r\n const isValidToken = jwtToken.expiresAt > (new Date().getTime() / 1000);\r\n if (this.lastBroadcastAccessToken === jwtToken.accessToken) {\r\n return;\r\n }\r\n this.lastBroadcastAccessToken = jwtToken.accessToken;\r\n if (isValidToken) {\r\n this.isAuthenticated.next(true);\r\n const decodedToken = this.jwtHelperService.decodeToken(jwtToken.accessToken);\r\n this.username.next(decodedToken['name']);\r\n this.email.next(decodedToken['email']);\r\n this.identiconId.next(decodedToken['identicon_id']);\r\n\r\n const tokenClaims: { [claim: string]: string } = {};\r\n for (const tokenProp in decodedToken) {\r\n if (decodedToken.hasOwnProperty(tokenProp)) {\r\n const property = decodedToken[tokenProp];\r\n if (typeof property === 'string') {\r\n tokenClaims[tokenProp] = property;\r\n }\r\n }\r\n }\r\n\r\n this.userInfo.next({\r\n id: decodedToken['sub'],\r\n claims: tokenClaims,\r\n deserializedToken: decodedToken,\r\n email: decodedToken['email'],\r\n identiconId: decodedToken['identicon_id'],\r\n username: decodedToken['name'],\r\n roles: decodedToken['role']\r\n });\r\n } else {\r\n this.isAuthenticated.next(false);\r\n this.jwtTokenService\r\n .refreshToken()\r\n .subscribe(() => { });\r\n }\r\n } else {\r\n if (this.lastBroadcastAccessToken === null) {\r\n return;\r\n }\r\n this.lastBroadcastAccessToken = null;\r\n this.isAuthenticated.next(false);\r\n this.username.next(null);\r\n this.email.next(null);\r\n this.identiconId.next(null);\r\n this.userInfo.next(null);\r\n }\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of angular-dangl-identity-client\r\n */\r\n\r\nexport * from \"./dangl-identity.module\";\r\nexport * from \"./api-client\";\r\nexport * from \"./interceptors/jwt-interceptor.service\";\r\nexport * from \"./interceptors/dangl-identity-request-validator\";\r\nexport * from \"./models/jwt-storage\";\r\nexport * from \"./services/authentication.service\";\r\nexport * from \"./services/jwt-token.service\";\r\nexport * from \"./messengers/authentication.messenger\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["InjectionToken","HttpHeaders","_observableMergeMap","_observableCatch","HttpResponseBase","_observableThrow","HttpResponse","_observableOf","Injectable","HttpClient","Inject","Optional","HttpStatusCode","ResponseErrorType","Observable","Subject","ReplaySubject","first","of","tap","map","mergeMap","NgModule","HttpClientModule","HTTP_INTERCEPTORS","catchError","JwtHelperService"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"DanglIdentityModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":6,"character":4}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HTTP_INTERCEPTORS","line":8,"character":25},"useClass":{"__symbolic":"reference","name":"JwtInterceptorService"},"multi":true}]}]}],"members":{}},"DANGL_IDENTITY_CLIENT_API_BASE_URL":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":14,"character":54},"arguments":["DANGL_IDENTITY_CLIENT_API_BASE_URL"]},"DanglIdentityClient":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":24,"character":17},"arguments":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":24,"character":24}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":24,"character":55}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":24,"character":67},"arguments":[{"__symbolic":"reference","name":"DANGL_IDENTITY_CLIENT_API_BASE_URL"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":24,"character":42},{"__symbolic":"reference","name":"string"}]}],"loginWithCookie":[{"__symbolic":"method"}],"processLoginWithCookie":[{"__symbolic":"method"}],"signOutWithSignInManager":[{"__symbolic":"method"}],"processSignOutWithSignInManager":[{"__symbolic":"method"}],"loginAndReturnToken":[{"__symbolic":"method"}],"processLoginAndReturnToken":[{"__symbolic":"method"}],"refreshToken":[{"__symbolic":"method"}],"processRefreshToken":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"processRegister":[{"__symbolic":"method"}],"requestPasswordReset":[{"__symbolic":"method"}],"processRequestPasswordReset":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"LoginPost":{"__symbolic":"interface"},"TokenResponseGet":{"__symbolic":"interface"},"HttpStatusCode":{"Continue":"Continue","SwitchingProtocols":"SwitchingProtocols","Processing":"Processing","EarlyHints":"EarlyHints","OK":"OK","Created":"Created","Accepted":"Accepted","NonAuthoritativeInformation":"NonAuthoritativeInformation","NoContent":"NoContent","ResetContent":"ResetContent","PartialContent":"PartialContent","MultiStatus":"MultiStatus","AlreadyReported":"AlreadyReported","IMUsed":"IMUsed","MultipleChoices":"Ambiguous","Ambiguous":"Moved","MovedPermanently":"Redirect","Moved":"RedirectMethod","Found":"NotModified","Redirect":"UseProxy","SeeOther":"Unused","RedirectMethod":"TemporaryRedirect","NotModified":"PermanentRedirect","UseProxy":"BadRequest","Unused":"Unauthorized","TemporaryRedirect":"PaymentRequired","RedirectKeepVerb":"Forbidden","PermanentRedirect":"NotFound","BadRequest":"MethodNotAllowed","Unauthorized":"NotAcceptable","PaymentRequired":"ProxyAuthenticationRequired","Forbidden":"RequestTimeout","NotFound":"Conflict","MethodNotAllowed":"Gone","NotAcceptable":"LengthRequired","ProxyAuthenticationRequired":"PreconditionFailed","RequestTimeout":"RequestEntityTooLarge","Conflict":"RequestUriTooLong","Gone":"UnsupportedMediaType","LengthRequired":"RequestedRangeNotSatisfiable","PreconditionFailed":"ExpectationFailed","RequestEntityTooLarge":"MisdirectedRequest","RequestUriTooLong":"UnprocessableEntity","UnsupportedMediaType":"Locked","RequestedRangeNotSatisfiable":"FailedDependency","ExpectationFailed":"UpgradeRequired","MisdirectedRequest":"PreconditionRequired","UnprocessableEntity":"TooManyRequests","Locked":"RequestHeaderFieldsTooLarge","FailedDependency":"UnavailableForLegalReasons","UpgradeRequired":"InternalServerError","PreconditionRequired":"NotImplemented","TooManyRequests":"BadGateway","RequestHeaderFieldsTooLarge":"ServiceUnavailable","UnavailableForLegalReasons":"GatewayTimeout","InternalServerError":"HttpVersionNotSupported","NotImplemented":"VariantAlsoNegotiates","BadGateway":"InsufficientStorage","ServiceUnavailable":"LoopDetected","GatewayTimeout":"NotExtended","HttpVersionNotSupported":"NetworkAuthenticationRequired"},"ResponseErrorType":{"None":"None","Protocol":"Protocol","Http":"Http","Exception":"Exception","PolicyViolation":"PolicyViolation"},"TokenLoginPost":{"__symbolic":"interface"},"TokenRefreshPost":{"__symbolic":"interface"},"ApiError":{"__symbolic":"interface"},"RegisterPost":{"__symbolic":"interface"},"ForgotPasswordPost":{"__symbolic":"interface"},"SwaggerException":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Error"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":479,"character":76,"module":"./api-client"},{"__symbolic":"reference","name":"any"}]}]},"statics":{"isSwaggerException":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"isSwaggerException"},"right":true}}}},"DANGL_IDENTITY_REQUEST_VALIDATOR":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":14,"character":6},"arguments":["Validator to decide whether to include JWT tokens in requests"]},"JwtInterceptorService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":21,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":22,"character":5},"arguments":[{"__symbolic":"reference","name":"DANGL_IDENTITY_REQUEST_VALIDATOR"}]}]],"parameters":[{"__symbolic":"reference","name":"JwtTokenService"},{"__symbolic":"reference","name":"IDanglIdentityRequestValidator"}]}],"intercept":[{"__symbolic":"method"}],"getHttpRequestWithToken":[{"__symbolic":"method"}]}},"IDanglIdentityRequestValidator":{"__symbolic":"interface"},"JwtStorage":{"__symbolic":"interface"},"AuthenticationService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DanglIdentityClient"},{"__symbolic":"reference","name":"JwtTokenService"}]}],"loginWithToken":[{"__symbolic":"method"}],"storeJwtTokenIfValid":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"JwtTokenService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DanglIdentityClient"}]}],"deleteToken":[{"__symbolic":"method"}],"storeCustomToken":[{"__symbolic":"method"}],"storeToken":[{"__symbolic":"method"}],"getTokenFromStorage":[{"__symbolic":"method"}],"refreshToken":[{"__symbolic":"method"}],"getToken":[{"__symbolic":"method"}],"transformTokenResponse":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"AuthenticationMessenger":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"JwtTokenService"}]}],"refreshAuthenticationStatus":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"DanglIdentityModule":"./dangl-identity.module","DANGL_IDENTITY_CLIENT_API_BASE_URL":"./api-client","DanglIdentityClient":"./api-client","LoginPost":"./api-client","TokenResponseGet":"./api-client","HttpStatusCode":"./api-client","ResponseErrorType":"./api-client","TokenLoginPost":"./api-client","TokenRefreshPost":"./api-client","ApiError":"./api-client","RegisterPost":"./api-client","ForgotPasswordPost":"./api-client","SwaggerException":"./api-client","DANGL_IDENTITY_REQUEST_VALIDATOR":"./interceptors/jwt-interceptor.service","JwtInterceptorService":"./interceptors/jwt-interceptor.service","IDanglIdentityRequestValidator":"./interceptors/dangl-identity-request-validator","JwtStorage":"./models/jwt-storage","AuthenticationService":"./services/authentication.service","JwtTokenService":"./services/jwt-token.service","AuthenticationMessenger":"./messengers/authentication.messenger"},"importAs":"@dangl/angular-dangl-identity-client"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
3
|
-
import { JwtInterceptorService } from './interceptors/jwt-interceptor.service';
|
|
4
|
-
export class DanglIdentityModule {
|
|
5
|
-
}
|
|
6
|
-
DanglIdentityModule.decorators = [
|
|
7
|
-
{ type: NgModule, args: [{
|
|
8
|
-
imports: [
|
|
9
|
-
HttpClientModule
|
|
10
|
-
],
|
|
11
|
-
providers: [{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptorService, multi: true }]
|
|
12
|
-
},] }
|
|
13
|
-
];
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2wtaWRlbnRpdHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQvc3JjL2RhbmdsLWlkZW50aXR5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBUS9FLE1BQU0sT0FBTyxtQkFBbUI7OztZQU4vQixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLGdCQUFnQjtpQkFDakI7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUMxRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUsIEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBKd3RJbnRlcmNlcHRvclNlcnZpY2UgfSBmcm9tICcuL2ludGVyY2VwdG9ycy9qd3QtaW50ZXJjZXB0b3Iuc2VydmljZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIEh0dHBDbGllbnRNb2R1bGVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBKd3RJbnRlcmNlcHRvclNlcnZpY2UsIG11bHRpOiB0cnVlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYW5nbElkZW50aXR5TW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, InjectionToken, Optional } from "@angular/core";
|
|
2
|
-
import { JwtTokenService } from "../services/jwt-token.service";
|
|
3
|
-
import { mergeMap } from "rxjs/operators";
|
|
4
|
-
export const DANGL_IDENTITY_REQUEST_VALIDATOR = new InjectionToken("Validator to decide whether to include JWT tokens in requests");
|
|
5
|
-
export class JwtInterceptorService {
|
|
6
|
-
constructor(jwtTokenService, requestValidator) {
|
|
7
|
-
this.jwtTokenService = jwtTokenService;
|
|
8
|
-
this.requestValidator = requestValidator;
|
|
9
|
-
}
|
|
10
|
-
intercept(request, next) {
|
|
11
|
-
if (request.url.startsWith("/identity")) {
|
|
12
|
-
// Requests to the authentication endpoint should not be intercepted
|
|
13
|
-
return next.handle(request.clone());
|
|
14
|
-
}
|
|
15
|
-
if (this.requestValidator &&
|
|
16
|
-
!this.requestValidator.validateRequest(request)) {
|
|
17
|
-
// In case a request validator is provided but doesn't return true for the
|
|
18
|
-
// current request, we're not appending a token
|
|
19
|
-
return next.handle(request);
|
|
20
|
-
}
|
|
21
|
-
return this.jwtTokenService
|
|
22
|
-
.getToken()
|
|
23
|
-
.pipe(mergeMap((f) => next.handle(this.getHttpRequestWithToken(request, f && f.accessToken))));
|
|
24
|
-
}
|
|
25
|
-
getHttpRequestWithToken(request, token) {
|
|
26
|
-
if (token) {
|
|
27
|
-
return request.clone({
|
|
28
|
-
setHeaders: {
|
|
29
|
-
Authorization: `Bearer ${token}`,
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
return request.clone();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
JwtInterceptorService.decorators = [
|
|
37
|
-
{ type: Injectable }
|
|
38
|
-
];
|
|
39
|
-
JwtInterceptorService.ctorParameters = () => [
|
|
40
|
-
{ type: JwtTokenService },
|
|
41
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DANGL_IDENTITY_REQUEST_VALIDATOR,] }] }
|
|
42
|
-
];
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvaW50ZXJjZXB0b3JzL2p3dC1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FDM0MsSUFBSSxjQUFjLENBQ2hCLCtEQUErRCxDQUNoRSxDQUFDO0FBRUosTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUNTLGVBQWdDLEVBRy9CLGdCQUFnRDtRQUhqRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFHL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFnQztJQUN2RCxDQUFDO0lBQ0osU0FBUyxDQUNQLE9BQXlCLEVBQ3pCLElBQWlCO1FBRWpCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdkMsb0VBQW9FO1lBQ3BFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNyQztRQUVELElBQ0UsSUFBSSxDQUFDLGdCQUFnQjtZQUNyQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQy9DO1lBQ0EsMEVBQTBFO1lBQzFFLCtDQUErQztZQUMvQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0I7UUFFRCxPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3hCLFFBQVEsRUFBRTthQUNWLElBQUksQ0FDSCxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3ZFLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFTyx1QkFBdUIsQ0FDN0IsT0FBeUIsRUFDekIsS0FBYztRQUVkLElBQUksS0FBSyxFQUFFO1lBQ1QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNuQixVQUFVLEVBQUU7b0JBQ1YsYUFBYSxFQUFFLFVBQVUsS0FBSyxFQUFFO2lCQUNqQzthQUNGLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7O1lBL0NGLFVBQVU7OztZQVRGLGVBQWU7NENBYW5CLFFBQVEsWUFDUixNQUFNLFNBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBIdHRwRXZlbnQsXHJcbiAgSHR0cEhhbmRsZXIsXHJcbiAgSHR0cEludGVyY2VwdG9yLFxyXG4gIEh0dHBSZXF1ZXN0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBKd3RUb2tlblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvand0LXRva2VuLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IG1lcmdlTWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IElEYW5nbElkZW50aXR5UmVxdWVzdFZhbGlkYXRvciB9IGZyb20gXCIuL2RhbmdsLWlkZW50aXR5LXJlcXVlc3QtdmFsaWRhdG9yXCI7XHJcblxyXG5leHBvcnQgY29uc3QgREFOR0xfSURFTlRJVFlfUkVRVUVTVF9WQUxJREFUT1IgPVxyXG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxJRGFuZ2xJZGVudGl0eVJlcXVlc3RWYWxpZGF0b3I+KFxyXG4gICAgXCJWYWxpZGF0b3IgdG8gZGVjaWRlIHdoZXRoZXIgdG8gaW5jbHVkZSBKV1QgdG9rZW5zIGluIHJlcXVlc3RzXCJcclxuICApO1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBKd3RJbnRlcmNlcHRvclNlcnZpY2UgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGp3dFRva2VuU2VydmljZTogSnd0VG9rZW5TZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKClcclxuICAgIEBJbmplY3QoREFOR0xfSURFTlRJVFlfUkVRVUVTVF9WQUxJREFUT1IpXHJcbiAgICBwcml2YXRlIHJlcXVlc3RWYWxpZGF0b3I6IElEYW5nbElkZW50aXR5UmVxdWVzdFZhbGlkYXRvclxyXG4gICkge31cclxuICBpbnRlcmNlcHQoXHJcbiAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBpZiAocmVxdWVzdC51cmwuc3RhcnRzV2l0aChcIi9pZGVudGl0eVwiKSkge1xyXG4gICAgICAvLyBSZXF1ZXN0cyB0byB0aGUgYXV0aGVudGljYXRpb24gZW5kcG9pbnQgc2hvdWxkIG5vdCBiZSBpbnRlcmNlcHRlZFxyXG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdC5jbG9uZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVxdWVzdFZhbGlkYXRvciAmJlxyXG4gICAgICAhdGhpcy5yZXF1ZXN0VmFsaWRhdG9yLnZhbGlkYXRlUmVxdWVzdChyZXF1ZXN0KVxyXG4gICAgKSB7XHJcbiAgICAgIC8vIEluIGNhc2UgYSByZXF1ZXN0IHZhbGlkYXRvciBpcyBwcm92aWRlZCBidXQgZG9lc24ndCByZXR1cm4gdHJ1ZSBmb3IgdGhlXHJcbiAgICAgIC8vIGN1cnJlbnQgcmVxdWVzdCwgd2UncmUgbm90IGFwcGVuZGluZyBhIHRva2VuXHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5qd3RUb2tlblNlcnZpY2VcclxuICAgICAgLmdldFRva2VuKClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKGYpID0+XHJcbiAgICAgICAgICBuZXh0LmhhbmRsZSh0aGlzLmdldEh0dHBSZXF1ZXN0V2l0aFRva2VuKHJlcXVlc3QsIGYgJiYgZi5hY2Nlc3NUb2tlbikpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIdHRwUmVxdWVzdFdpdGhUb2tlbihcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXHJcbiAgICB0b2tlbj86IHN0cmluZ1xyXG4gICk6IEh0dHBSZXF1ZXN0PGFueT4ge1xyXG4gICAgaWYgKHRva2VuKSB7XHJcbiAgICAgIHJldHVybiByZXF1ZXN0LmNsb25lKHtcclxuICAgICAgICBzZXRIZWFkZXJzOiB7XHJcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXF1ZXN0LmNsb25lKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ReplaySubject, Subject } from 'rxjs';
|
|
3
|
-
import { JwtTokenService } from '../services/jwt-token.service';
|
|
4
|
-
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../services/jwt-token.service";
|
|
7
|
-
export class AuthenticationMessenger {
|
|
8
|
-
constructor(jwtTokenService) {
|
|
9
|
-
this.jwtTokenService = jwtTokenService;
|
|
10
|
-
this.jwtHelperService = new JwtHelperService();
|
|
11
|
-
this.isAuthenticated = new ReplaySubject(1);
|
|
12
|
-
this.username = new ReplaySubject(1);
|
|
13
|
-
this.email = new ReplaySubject(1);
|
|
14
|
-
this.identiconId = new ReplaySubject(1);
|
|
15
|
-
this.userInfo = new ReplaySubject(1);
|
|
16
|
-
this.tokenRefreshStarted = new Subject();
|
|
17
|
-
this.tokenRefreshFinished = new Subject();
|
|
18
|
-
jwtTokenService.tokenRefreshStarted.subscribe(() => this.tokenRefreshStarted.next());
|
|
19
|
-
jwtTokenService.tokenRefreshFinished.subscribe(successfulRefresh => this.tokenRefreshFinished.next(successfulRefresh));
|
|
20
|
-
jwtTokenService.tokenStored.subscribe(jwtToken => this.refreshAuthenticationStatus(jwtToken));
|
|
21
|
-
jwtTokenService.getToken()
|
|
22
|
-
.subscribe(token => this.refreshAuthenticationStatus(token));
|
|
23
|
-
}
|
|
24
|
-
refreshAuthenticationStatus(jwtToken) {
|
|
25
|
-
if (jwtToken) {
|
|
26
|
-
const isValidToken = jwtToken.expiresAt > (new Date().getTime() / 1000);
|
|
27
|
-
if (this.lastBroadcastAccessToken === jwtToken.accessToken) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
this.lastBroadcastAccessToken = jwtToken.accessToken;
|
|
31
|
-
if (isValidToken) {
|
|
32
|
-
this.isAuthenticated.next(true);
|
|
33
|
-
const decodedToken = this.jwtHelperService.decodeToken(jwtToken.accessToken);
|
|
34
|
-
this.username.next(decodedToken['name']);
|
|
35
|
-
this.email.next(decodedToken['email']);
|
|
36
|
-
this.identiconId.next(decodedToken['identicon_id']);
|
|
37
|
-
const tokenClaims = {};
|
|
38
|
-
for (const tokenProp in decodedToken) {
|
|
39
|
-
if (decodedToken.hasOwnProperty(tokenProp)) {
|
|
40
|
-
const property = decodedToken[tokenProp];
|
|
41
|
-
if (typeof property === 'string') {
|
|
42
|
-
tokenClaims[tokenProp] = property;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
this.userInfo.next({
|
|
47
|
-
id: decodedToken['sub'],
|
|
48
|
-
claims: tokenClaims,
|
|
49
|
-
deserializedToken: decodedToken,
|
|
50
|
-
email: decodedToken['email'],
|
|
51
|
-
identiconId: decodedToken['identicon_id'],
|
|
52
|
-
username: decodedToken['name'],
|
|
53
|
-
roles: decodedToken['role']
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.isAuthenticated.next(false);
|
|
58
|
-
this.jwtTokenService
|
|
59
|
-
.refreshToken()
|
|
60
|
-
.subscribe(() => { });
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
if (this.lastBroadcastAccessToken === null) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
this.lastBroadcastAccessToken = null;
|
|
68
|
-
this.isAuthenticated.next(false);
|
|
69
|
-
this.username.next(null);
|
|
70
|
-
this.email.next(null);
|
|
71
|
-
this.identiconId.next(null);
|
|
72
|
-
this.userInfo.next(null);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
AuthenticationMessenger.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthenticationMessenger_Factory() { return new AuthenticationMessenger(i0.ɵɵinject(i1.JwtTokenService)); }, token: AuthenticationMessenger, providedIn: "root" });
|
|
77
|
-
AuthenticationMessenger.decorators = [
|
|
78
|
-
{ type: Injectable, args: [{
|
|
79
|
-
providedIn: 'root'
|
|
80
|
-
},] }
|
|
81
|
-
];
|
|
82
|
-
AuthenticationMessenger.ctorParameters = () => [
|
|
83
|
-
{ type: JwtTokenService }
|
|
84
|
-
];
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ubWVzc2VuZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQvc3JjL21lc3NlbmdlcnMvYXV0aGVudGljYXRpb24ubWVzc2VuZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFNdEQsTUFBTSxPQUFPLHVCQUF1QjtJQWFsQyxZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFYNUMscUJBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBR3pDLG9CQUFlLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLFVBQUssR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyQyxnQkFBVyxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNDLGFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBVyxDQUFDLENBQUMsQ0FBQztRQUMxQyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFHckQsZUFBZSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRixlQUFl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QVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7O1lBMUVGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBTlEsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVc2VySW5mbyB9IGZyb20gJy4uL21vZGVscy91c2VyLWluZm8nO1xyXG5pbXBvcnQgeyBKd3RUb2tlblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9qd3QtdG9rZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xyXG5pbXBvcnQgeyBKd3RTdG9yYWdlIH0gZnJvbSAnLi4vbW9kZWxzL2p3dC1zdG9yYWdlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uTWVzc2VuZ2VyIHtcclxuXHJcbiAgcHJpdmF0ZSBqd3RIZWxwZXJTZXJ2aWNlID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICBwcml2YXRlIGxhc3RCcm9hZGNhc3RBY2Nlc3NUb2tlbjogc3RyaW5nO1xyXG5cclxuICByZWFkb25seSBpc0F1dGhlbnRpY2F0ZWQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcclxuICByZWFkb25seSB1c2VybmFtZSA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XHJcbiAgcmVhZG9ubHkgZW1haWwgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xyXG4gIHJlYWRvbmx5IGlkZW50aWNvbklkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcclxuICByZWFkb25seSB1c2VySW5mbyA9IG5ldyBSZXBsYXlTdWJqZWN0PFVzZXJJbmZvPigxKTtcclxuICByZWFkb25seSB0b2tlblJlZnJlc2hTdGFydGVkID0gbmV3IFN1YmplY3QoKTtcclxuICByZWFkb25seSB0b2tlblJlZnJlc2hGaW5pc2hlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgand0VG9rZW5TZXJ2aWNlOiBKd3RUb2tlblNlcnZpY2UpIHtcclxuICAgIGp3dFRva2VuU2VydmljZS50b2tlblJlZnJlc2hTdGFydGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRva2VuUmVmcmVzaFN0YXJ0ZWQubmV4dCgpKTtcclxuICAgIGp3dFRva2VuU2VydmljZS50b2tlblJlZnJlc2hGaW5pc2hlZC5zdWJzY3JpYmUoc3VjY2Vzc2Z1bFJlZnJlc2ggPT4gdGhpcy50b2tlblJlZnJlc2hGaW5pc2hlZC5uZXh0KHN1Y2Nlc3NmdWxSZWZyZXNoKSk7XHJcbiAgICBqd3RUb2tlblNlcnZpY2UudG9rZW5TdG9yZWQuc3Vic2NyaWJlKGp3dFRva2VuID0+IHRoaXMucmVmcmVzaEF1dGhlbnRpY2F0aW9uU3RhdHVzKGp3dFRva2VuKSk7XHJcbiAgICBqd3RUb2tlblNlcnZpY2UuZ2V0VG9rZW4oKVxyXG4gICAgICAuc3Vic2NyaWJlKHRva2VuID0+IHRoaXMucmVmcmVzaEF1dGhlbnRpY2F0aW9uU3RhdHVzKHRva2VuKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hBdXRoZW50aWNhdGlvblN0YXR1cyhqd3RUb2tlbj86IEp3dFN0b3JhZ2UpIHtcclxuICAgIGlmIChqd3RUb2tlbikge1xyXG4gICAgICBjb25zdCBpc1ZhbGlkVG9rZW4gPSBqd3RUb2tlbi5leHBpcmVzQXQgPiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKTtcclxuICAgICAgaWYgKHRoaXMubGFzdEJyb2FkY2FzdEFjY2Vzc1Rva2VuID09PSBqd3RUb2tlbi5hY2Nlc3NUb2tlbikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhc3RCcm9hZGNhc3RBY2Nlc3NUb2tlbiA9IGp3dFRva2VuLmFjY2Vzc1Rva2VuO1xyXG4gICAgICBpZiAoaXNWYWxpZFRva2VuKSB7XHJcbiAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQubmV4dCh0cnVlKTtcclxuICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSB0aGlzLmp3dEhlbHBlclNlcnZpY2UuZGVjb2RlVG9rZW4oand0VG9rZW4uYWNjZXNzVG9rZW4pO1xyXG4gICAgICAgIHRoaXMudXNlcm5hbWUubmV4dChkZWNvZGVkVG9rZW5bJ25hbWUnXSk7XHJcbiAgICAgICAgdGhpcy5lbWFpbC5uZXh0KGRlY29kZWRUb2tlblsnZW1haWwnXSk7XHJcbiAgICAgICAgdGhpcy5pZGVudGljb25JZC5uZXh0KGRlY29kZWRUb2tlblsnaWRlbnRpY29uX2lkJ10pO1xyXG5cclxuICAgICAgICBjb25zdCB0b2tlbkNsYWltczogeyBbY2xhaW06IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgICAgICAgZm9yIChjb25zdCB0b2tlblByb3AgaW4gZGVjb2RlZFRva2VuKSB7XHJcbiAgICAgICAgICBpZiAoZGVjb2RlZFRva2VuLmhhc093blByb3BlcnR5KHRva2VuUHJvcCkpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcGVydHkgPSBkZWNvZGVkVG9rZW5bdG9rZW5Qcm9wXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICB0b2tlbkNsYWltc1t0b2tlblByb3BdID0gcHJvcGVydHk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudXNlckluZm8ubmV4dCh7XHJcbiAgICAgICAgICBpZDogZGVjb2RlZFRva2VuWydzdWInXSxcclxuICAgICAgICAgIGNsYWltczogdG9rZW5DbGFpbXMsXHJcbiAgICAgICAgICBkZXNlcmlhbGl6ZWRUb2tlbjogZGVjb2RlZFRva2VuLFxyXG4gICAgICAgICAgZW1haWw6IGRlY29kZWRUb2tlblsnZW1haWwnXSxcclxuICAgICAgICAgIGlkZW50aWNvbklkOiBkZWNvZGVkVG9rZW5bJ2lkZW50aWNvbl9pZCddLFxyXG4gICAgICAgICAgdXNlcm5hbWU6IGRlY29kZWRUb2tlblsnbmFtZSddLFxyXG4gICAgICAgICAgcm9sZXM6IGRlY29kZWRUb2tlblsncm9sZSddXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5qd3RUb2tlblNlcnZpY2VcclxuICAgICAgICAgIC5yZWZyZXNoVG9rZW4oKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5sYXN0QnJvYWRjYXN0QWNjZXNzVG9rZW4gPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXN0QnJvYWRjYXN0QWNjZXNzVG9rZW4gPSBudWxsO1xyXG4gICAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KGZhbHNlKTtcclxuICAgICAgdGhpcy51c2VybmFtZS5uZXh0KG51bGwpO1xyXG4gICAgICB0aGlzLmVtYWlsLm5leHQobnVsbCk7XHJcbiAgICAgIHRoaXMuaWRlbnRpY29uSWQubmV4dChudWxsKTtcclxuICAgICAgdGhpcy51c2VySW5mby5uZXh0KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { DanglIdentityClient } from '../api-client';
|
|
3
|
-
import { of } from 'rxjs';
|
|
4
|
-
import { map, catchError } from 'rxjs/operators';
|
|
5
|
-
import { JwtTokenService } from './jwt-token.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../api-client";
|
|
8
|
-
import * as i2 from "./jwt-token.service";
|
|
9
|
-
export class AuthenticationService {
|
|
10
|
-
constructor(danglIdentityClient, jwtTokenService) {
|
|
11
|
-
this.danglIdentityClient = danglIdentityClient;
|
|
12
|
-
this.jwtTokenService = jwtTokenService;
|
|
13
|
-
}
|
|
14
|
-
loginWithToken(identifier, password) {
|
|
15
|
-
return this.danglIdentityClient
|
|
16
|
-
.loginAndReturnToken({
|
|
17
|
-
identifier: identifier,
|
|
18
|
-
password: password
|
|
19
|
-
})
|
|
20
|
-
.pipe(map(r => this.storeJwtTokenIfValid(r)), catchError(e => of(false)));
|
|
21
|
-
}
|
|
22
|
-
storeJwtTokenIfValid(token) {
|
|
23
|
-
if (!token.accessToken
|
|
24
|
-
|| !token.refreshToken
|
|
25
|
-
|| !token.expiresIn) {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
this.jwtTokenService.storeToken(token);
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
logout() {
|
|
32
|
-
this.jwtTokenService.deleteToken();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
AuthenticationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthenticationService_Factory() { return new AuthenticationService(i0.ɵɵinject(i1.DanglIdentityClient), i0.ɵɵinject(i2.JwtTokenService)); }, token: AuthenticationService, providedIn: "root" });
|
|
36
|
-
AuthenticationService.decorators = [
|
|
37
|
-
{ type: Injectable, args: [{
|
|
38
|
-
providedIn: 'root'
|
|
39
|
-
},] }
|
|
40
|
-
];
|
|
41
|
-
AuthenticationService.ctorParameters = () => [
|
|
42
|
-
{ type: DanglIdentityClient },
|
|
43
|
-
{ type: JwtTokenService }
|
|
44
|
-
];
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZGFuZ2wtaWRlbnRpdHktY2xpZW50L3NyYy9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0FBS3RELE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsWUFBb0IsbUJBQXdDLEVBQ2xELGVBQWdDO1FBRHRCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUksQ0FBQztJQUUvQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxRQUFnQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxtQkFBbUI7YUFDNUIsbUJBQW1CLENBQUM7WUFDbkIsVUFBVSxFQUFFLFVBQVU7WUFDdEIsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDMUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBdUI7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO2VBQ2pCLENBQUMsS0FBSyxDQUFDLFlBQVk7ZUFDbkIsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzs7O1lBOUJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBUFEsbUJBQW1CO1lBR25CLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhbmdsSWRlbnRpdHlDbGllbnQsIFRva2VuUmVzcG9uc2VHZXQgfSBmcm9tICcuLi9hcGktY2xpZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBKd3RUb2tlblNlcnZpY2UgfSBmcm9tICcuL2p3dC10b2tlbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGFuZ2xJZGVudGl0eUNsaWVudDogRGFuZ2xJZGVudGl0eUNsaWVudCxcclxuICAgIHByaXZhdGUgand0VG9rZW5TZXJ2aWNlOiBKd3RUb2tlblNlcnZpY2UpIHsgfVxyXG5cclxuICBsb2dpbldpdGhUb2tlbihpZGVudGlmaWVyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhbmdsSWRlbnRpdHlDbGllbnRcclxuICAgICAgLmxvZ2luQW5kUmV0dXJuVG9rZW4oe1xyXG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuc3RvcmVKd3RUb2tlbklmVmFsaWQocikpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZSA9PiBvZihmYWxzZSkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RvcmVKd3RUb2tlbklmVmFsaWQodG9rZW46IFRva2VuUmVzcG9uc2VHZXQpOiBib29sZWFuIHtcclxuICAgIGlmICghdG9rZW4uYWNjZXNzVG9rZW5cclxuICAgICAgfHwgIXRva2VuLnJlZnJlc2hUb2tlblxyXG4gICAgICB8fCAhdG9rZW4uZXhwaXJlc0luKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuand0VG9rZW5TZXJ2aWNlLnN0b3JlVG9rZW4odG9rZW4pO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICB0aGlzLmp3dFRva2VuU2VydmljZS5kZWxldGVUb2tlbigpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { DanglIdentityClient } from "../api-client";
|
|
3
|
-
import { Subject, of, ReplaySubject } from "rxjs";
|
|
4
|
-
import { map, tap, first } from "rxjs/operators";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../api-client";
|
|
7
|
-
export class JwtTokenService {
|
|
8
|
-
constructor(danglIdentityClient) {
|
|
9
|
-
this.danglIdentityClient = danglIdentityClient;
|
|
10
|
-
this.storage_identifier = "dangl_identity_integration_jwt_token";
|
|
11
|
-
this.isRefreshing = false;
|
|
12
|
-
this.refreshTokenSource = new Subject();
|
|
13
|
-
this.tokenStoredSource = new ReplaySubject(1);
|
|
14
|
-
this.tokenStored = this.tokenStoredSource.asObservable();
|
|
15
|
-
this.tokenRefreshStartedSource = new Subject();
|
|
16
|
-
this.tokenRefreshStarted = this.tokenRefreshStartedSource.asObservable();
|
|
17
|
-
this.tokenRefreshFinishedSource = new Subject();
|
|
18
|
-
this.tokenRefreshFinished = this.tokenRefreshFinishedSource.asObservable();
|
|
19
|
-
}
|
|
20
|
-
deleteToken() {
|
|
21
|
-
localStorage.removeItem(this.storage_identifier);
|
|
22
|
-
this.tokenStoredSource.next(null);
|
|
23
|
-
}
|
|
24
|
-
storeCustomToken(tokenToStore) {
|
|
25
|
-
localStorage.setItem(this.storage_identifier, JSON.stringify(tokenToStore));
|
|
26
|
-
this.tokenStoredSource.next(tokenToStore);
|
|
27
|
-
}
|
|
28
|
-
storeToken(token) {
|
|
29
|
-
const tokenToStore = this.transformTokenResponse(token);
|
|
30
|
-
localStorage.setItem(this.storage_identifier, JSON.stringify(tokenToStore));
|
|
31
|
-
this.tokenStoredSource.next(tokenToStore);
|
|
32
|
-
}
|
|
33
|
-
getTokenFromStorage() {
|
|
34
|
-
const storedString = localStorage.getItem(this.storage_identifier);
|
|
35
|
-
if (storedString) {
|
|
36
|
-
const storedToken = JSON.parse(storedString);
|
|
37
|
-
return storedToken;
|
|
38
|
-
}
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
refreshToken() {
|
|
42
|
-
if (this.isRefreshing) {
|
|
43
|
-
return this.refreshTokenSource.pipe(first());
|
|
44
|
-
}
|
|
45
|
-
this.isRefreshing = true;
|
|
46
|
-
this.tokenRefreshStartedSource.next();
|
|
47
|
-
const refreshToken = this.getTokenFromStorage().refreshToken;
|
|
48
|
-
if (!refreshToken) {
|
|
49
|
-
this.isRefreshing = false;
|
|
50
|
-
return of(null);
|
|
51
|
-
}
|
|
52
|
-
this.danglIdentityClient
|
|
53
|
-
.refreshToken({
|
|
54
|
-
refreshToken: refreshToken,
|
|
55
|
-
})
|
|
56
|
-
.pipe(tap((r) => this.storeToken(r)), map((r) => this.transformTokenResponse(r)))
|
|
57
|
-
.subscribe((refreshTokenResponse) => {
|
|
58
|
-
this.isRefreshing = false;
|
|
59
|
-
this.tokenRefreshFinishedSource.next(true);
|
|
60
|
-
this.refreshTokenSource.next(refreshTokenResponse);
|
|
61
|
-
}, (error) => {
|
|
62
|
-
this.isRefreshing = false;
|
|
63
|
-
this.tokenRefreshFinishedSource.next(false);
|
|
64
|
-
this.refreshTokenSource.next(null);
|
|
65
|
-
console.error("Internal error while refreshing Dangl.Identity token", error);
|
|
66
|
-
});
|
|
67
|
-
return this.refreshTokenSource.pipe(first());
|
|
68
|
-
}
|
|
69
|
-
getToken() {
|
|
70
|
-
const token = this.getTokenFromStorage();
|
|
71
|
-
if (!token) {
|
|
72
|
-
return of(null);
|
|
73
|
-
}
|
|
74
|
-
const isValidToken = token.expiresAt > new Date().getTime() / 1000;
|
|
75
|
-
if (isValidToken) {
|
|
76
|
-
return of(token);
|
|
77
|
-
}
|
|
78
|
-
return this.refreshToken();
|
|
79
|
-
}
|
|
80
|
-
transformTokenResponse(token) {
|
|
81
|
-
return {
|
|
82
|
-
accessToken: token.accessToken,
|
|
83
|
-
refreshToken: token.refreshToken,
|
|
84
|
-
expiresAt: new Date().getTime() / 1000 + token.expiresIn,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
JwtTokenService.ɵprov = i0.ɵɵdefineInjectable({ factory: function JwtTokenService_Factory() { return new JwtTokenService(i0.ɵɵinject(i1.DanglIdentityClient)); }, token: JwtTokenService, providedIn: "root" });
|
|
89
|
-
JwtTokenService.decorators = [
|
|
90
|
-
{ type: Injectable, args: [{
|
|
91
|
-
providedIn: "root",
|
|
92
|
-
},] }
|
|
93
|
-
];
|
|
94
|
-
JwtTokenService.ctorParameters = () => [
|
|
95
|
-
{ type: DanglIdentityClient }
|
|
96
|
-
];
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXRva2VuLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvc2VydmljZXMvand0LXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsR0FBRyxFQUFjLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTTdELE1BQU0sT0FBTyxlQUFlO0lBVzFCLFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBVjNDLHVCQUFrQixHQUFHLHNDQUFzQyxDQUFDO1FBQ3JFLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFDL0Msc0JBQWlCLEdBQUcsSUFBSSxhQUFhLENBQWEsQ0FBQyxDQUFDLENBQUM7UUFDN0QsZ0JBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUMsOEJBQXlCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNsRCx3QkFBbUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUQsK0JBQTBCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUM1RCx5QkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFUCxDQUFDO0lBRWhFLFdBQVc7UUFDVCxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FB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UUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLEVBQUUsQ0FBYSxJQUFJLENBQUMsQ0FBQztTQUM3QjtRQUNELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDbkUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEI7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8sc0JBQXNCLENBQUMsS0FBdUI7UUFDcEQsT0FBTztZQUNMLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTO1NBQ3pELENBQUM7SUFDSixDQUFDOzs7O1lBcEdGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBUlEsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERhbmdsSWRlbnRpdHlDbGllbnQsIFRva2VuUmVzcG9uc2VHZXQgfSBmcm9tIFwiLi4vYXBpLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBKd3RTdG9yYWdlIH0gZnJvbSBcIi4uL21vZGVscy9qd3Qtc3RvcmFnZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciwgdGFwLCBmaXJzdCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1lc3NlbmdlciB9IGZyb20gXCIuLi9tZXNzZW5nZXJzL2F1dGhlbnRpY2F0aW9uLm1lc3NlbmdlclwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSnd0VG9rZW5TZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VfaWRlbnRpZmllciA9IFwiZGFuZ2xfaWRlbnRpdHlfaW50ZWdyYXRpb25fand0X3Rva2VuXCI7XHJcbiAgcHJpdmF0ZSBpc1JlZnJlc2hpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIHJlZnJlc2hUb2tlblNvdXJjZSA9IG5ldyBTdWJqZWN0PEp3dFN0b3JhZ2U+KCk7XHJcbiAgcHJpdmF0ZSB0b2tlblN0b3JlZFNvdXJjZSA9IG5ldyBSZXBsYXlTdWJqZWN0PEp3dFN0b3JhZ2U+KDEpO1xyXG4gIHRva2VuU3RvcmVkID0gdGhpcy50b2tlblN0b3JlZFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICBwcml2YXRlIHRva2VuUmVmcmVzaFN0YXJ0ZWRTb3VyY2UgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHRva2VuUmVmcmVzaFN0YXJ0ZWQgPSB0aGlzLnRva2VuUmVmcmVzaFN0YXJ0ZWRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHJpdmF0ZSB0b2tlblJlZnJlc2hGaW5pc2hlZFNvdXJjZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgdG9rZW5SZWZyZXNoRmluaXNoZWQgPSB0aGlzLnRva2VuUmVmcmVzaEZpbmlzaGVkU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhbmdsSWRlbnRpdHlDbGllbnQ6IERhbmdsSWRlbnRpdHlDbGllbnQpIHt9XHJcblxyXG4gIGRlbGV0ZVRva2VuKCkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5zdG9yYWdlX2lkZW50aWZpZXIpO1xyXG4gICAgdGhpcy50b2tlblN0b3JlZFNvdXJjZS5uZXh0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgc3RvcmVDdXN0b21Ub2tlbih0b2tlblRvU3RvcmU6IEp3dFN0b3JhZ2UpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZV9pZGVudGlmaWVyLCBKU09OLnN0cmluZ2lmeSh0b2tlblRvU3RvcmUpKTtcclxuICAgIHRoaXMudG9rZW5TdG9yZWRTb3VyY2UubmV4dCh0b2tlblRvU3RvcmUpO1xyXG4gIH1cclxuXHJcbiAgc3RvcmVUb2tlbih0b2tlbjogVG9rZW5SZXNwb25zZUdldCkge1xyXG4gICAgY29uc3QgdG9rZW5Ub1N0b3JlID0gdGhpcy50cmFuc2Zvcm1Ub2tlblJlc3BvbnNlKHRva2VuKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZV9pZGVudGlmaWVyLCBKU09OLnN0cmluZ2lmeSh0b2tlblRvU3RvcmUpKTtcclxuICAgIHRoaXMudG9rZW5TdG9yZWRTb3VyY2UubmV4dCh0b2tlblRvU3RvcmUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9rZW5Gcm9tU3RvcmFnZSgpOiBKd3RTdG9yYWdlIHtcclxuICAgIGNvbnN0IHN0b3JlZFN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZV9pZGVudGlmaWVyKTtcclxuICAgIGlmIChzdG9yZWRTdHJpbmcpIHtcclxuICAgICAgY29uc3Qgc3RvcmVkVG9rZW4gPSA8Snd0U3RvcmFnZT5KU09OLnBhcnNlKHN0b3JlZFN0cmluZyk7XHJcbiAgICAgIHJldHVybiBzdG9yZWRUb2tlbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8Snd0U3RvcmFnZT4ge1xyXG4gICAgaWYgKHRoaXMuaXNSZWZyZXNoaW5nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlblNvdXJjZS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1JlZnJlc2hpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50b2tlblJlZnJlc2hTdGFydGVkU291cmNlLm5leHQoKTtcclxuICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMuZ2V0VG9rZW5Gcm9tU3RvcmFnZSgpLnJlZnJlc2hUb2tlbjtcclxuXHJcbiAgICBpZiAoIXJlZnJlc2hUb2tlbikge1xyXG4gICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gb2Y8Snd0U3RvcmFnZT4obnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYW5nbElkZW50aXR5Q2xpZW50XHJcbiAgICAgIC5yZWZyZXNoVG9rZW4oe1xyXG4gICAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaFRva2VuLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAoKHIpID0+IHRoaXMuc3RvcmVUb2tlbihyKSksXHJcbiAgICAgICAgbWFwKChyKSA9PiB0aGlzLnRyYW5zZm9ybVRva2VuUmVzcG9uc2UocikpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVmcmVzaFRva2VuUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRva2VuUmVmcmVzaEZpbmlzaGVkU291cmNlLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblNvdXJjZS5uZXh0KHJlZnJlc2hUb2tlblJlc3BvbnNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudG9rZW5SZWZyZXNoRmluaXNoZWRTb3VyY2UubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblNvdXJjZS5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgXCJJbnRlcm5hbCBlcnJvciB3aGlsZSByZWZyZXNoaW5nIERhbmdsLklkZW50aXR5IHRva2VuXCIsXHJcbiAgICAgICAgICAgIGVycm9yXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5Tb3VyY2UucGlwZShmaXJzdCgpKTtcclxuICB9XHJcblxyXG4gIGdldFRva2VuKCk6IE9ic2VydmFibGU8Snd0U3RvcmFnZT4ge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuRnJvbVN0b3JhZ2UoKTtcclxuICAgIGlmICghdG9rZW4pIHtcclxuICAgICAgcmV0dXJuIG9mPEp3dFN0b3JhZ2U+KG51bGwpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNWYWxpZFRva2VuID0gdG9rZW4uZXhwaXJlc0F0ID4gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwO1xyXG4gICAgaWYgKGlzVmFsaWRUb2tlbikge1xyXG4gICAgICByZXR1cm4gb2YodG9rZW4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zZm9ybVRva2VuUmVzcG9uc2UodG9rZW46IFRva2VuUmVzcG9uc2VHZXQpOiBKd3RTdG9yYWdlIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbi5hY2Nlc3NUb2tlbixcclxuICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbi5yZWZyZXNoVG9rZW4sXHJcbiAgICAgIGV4cGlyZXNBdDogbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwICsgdG9rZW4uZXhwaXJlc0luLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
|