diff --git a/main.js b/main.js
index 3e05735..e5b7934 100644
--- a/main.js
+++ b/main.js
@@ -381,7 +381,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 2560);
/* harmony import */ var _services_auth_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../services/auth.service */ 7556);
/* harmony import */ var _services_vault_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../services/vault.service */ 3843);
-/* harmony import */ var _services_vault_config_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/vault-config.service */ 7877);
+/* harmony import */ var _services_config_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/config.service */ 946);
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ 124);
/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/common */ 4666);
/* harmony import */ var _ng_bootstrap_ng_bootstrap__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @ng-bootstrap/ng-bootstrap */ 3191);
@@ -397,7 +397,6 @@ __webpack_require__.r(__webpack_exports__);
const _c0 = function (a0) { return { "active": a0 }; };
const _c1 = function () { return ["fas", "table-columns"]; };
const _c2 = function () { return ["fas", "code"]; };
-const _c3 = function (a0) { return { "on": a0 }; };
class HeaderComponent {
constructor(authService, connectService, vaultConfigService, router) {
this.authService = authService;
@@ -405,18 +404,7 @@ class HeaderComponent {
this.vaultConfigService = vaultConfigService;
this.router = router;
}
- ngOnInit() {
- this.vaultConfigService.ConfigSubject.subscribe((config) => {
- console.log("Configuration changed:", config);
- if (config.user && config.user.org_id && !config.org) {
- console.log("attempt to download org information, and store in config");
- this.connectService.getOrg(config.user.org_id).subscribe((org) => {
- console.log("org:", org);
- this.vaultConfigService.config = { org: org };
- });
- }
- });
- }
+ ngOnInit() { }
toggleHeaderMenu(event) {
event.preventDefault();
document.querySelector('body')?.classList.toggle('az-header-menu-show');
@@ -431,8 +419,8 @@ class HeaderComponent {
});
}
}
-HeaderComponent.ɵfac = function HeaderComponent_Factory(t) { return new (t || HeaderComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](_services_auth_service__WEBPACK_IMPORTED_MODULE_0__.AuthService), _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](_services_vault_service__WEBPACK_IMPORTED_MODULE_1__.VaultService), _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](_services_vault_config_service__WEBPACK_IMPORTED_MODULE_2__.VaultConfigService), _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](_angular_router__WEBPACK_IMPORTED_MODULE_4__.Router)); };
-HeaderComponent.ɵcmp = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdefineComponent"]({ type: HeaderComponent, selectors: [["app-header"]], decls: 71, vars: 17, consts: [[1, "bg-danger", "text-white", "pd-5", 3, "hidden"], [1, "text-white", "float-right"], [1, "az-header"], [1, "container"], [1, "az-header-left"], ["routerLink", "/"], ["src", "assets/images/banner-transparent-trim.png", "alt", "fasten", 1, "az-logo", "az-img-logo"], ["href", "#", "id", "azMenuShow", 1, "az-header-menu-icon", "d-lg-none", 3, "click"], [1, "az-header-menu"], [1, "az-header-menu-header"], ["src", "assets/images/banner-transparent-trim.png", "alt", "fasten", 1, "az-img-logo"], ["href", "#", 1, "close", 3, "click"], [1, "nav"], ["ngbDropdown", "", 1, "nav-item", 3, "ngClass"], ["routerLink", "/dashboard", "routerLinkActive", "active", 1, "nav-link"], ["dashboard", "routerLinkActive"], [3, "icon"], ["routerLink", "/developers", "routerLinkActive", "active", 1, "nav-link"], ["developers", "routerLinkActive"], [1, "pd-l-20"], [1, "mg-l-10", "az-toggle", "az-toggle-danger", 3, "ngClass", "click"], [1, "az-header-right"], ["ngbDropdown", "", 1, "dropdown", "az-header-notification"], ["id", "notificationsDropdown", "ngbDropdownToggle", "", 1, "new"], [1, "far", "fa-sm", "fa-bell"], ["ngbDropdownMenu", "", "aria-labelledby", "notificationsDropdown", 1, "dropdown-menu"], [1, "az-dropdown-header", "mg-b-20", "d-sm-none"], [1, "az-header-arrow", 3, "click"], [1, "icon", "ion-md-arrow-back"], [1, "az-notification-title"], [1, "az-notification-text"], [1, "dropdown-footer"], ["routerLink", "/background-jobs"], ["ngbDropdown", "", 1, "dropdown", "az-profile-menu"], ["id", "profileDropdown", "ngbDropdownToggle", "", 1, "az-img-user", "cursor-pointer"], ["src", "/assets/images/profile-image.svg", "alt", ""], ["ngbDropdownMenu", "", "aria-labelledby", "profileDropdown", 1, "dropdown-menu"], [1, "az-dropdown-header", "d-sm-none"], [1, "az-header-profile", "cursor-pointer", 3, "routerLink"], [1, "az-img-user"], ["alt", "", 3, "src"], ["routerLink", "account/settings", 1, "dropdown-item", "cursor-pointer"], [1, "fas", "fa-user-circle", 2, "font-size", "medium"], ["routerLink", "org/settings", 1, "dropdown-item", "cursor-pointer"], [1, "fas", "fa-hospital", 2, "font-size", "medium"], [1, "dropdown-item", "cursor-pointer"], [1, "fas", "fa-life-ring", 2, "font-size", "medium"], [1, "dropdown-item", "cursor-pointer", 3, "click"], [1, "fas", "fa-power-off", 2, "font-size", "medium"]], template: function HeaderComponent_Template(rf, ctx) { if (rf & 1) {
+HeaderComponent.ɵfac = function HeaderComponent_Factory(t) { return new (t || HeaderComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](_services_auth_service__WEBPACK_IMPORTED_MODULE_0__.AuthService), _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](_services_vault_service__WEBPACK_IMPORTED_MODULE_1__.VaultService), _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](_services_config_service__WEBPACK_IMPORTED_MODULE_2__.ConfigService), _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](_angular_router__WEBPACK_IMPORTED_MODULE_4__.Router)); };
+HeaderComponent.ɵcmp = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdefineComponent"]({ type: HeaderComponent, selectors: [["app-header"]], decls: 66, vars: 13, consts: [[1, "bg-danger", "text-white", "pd-5", 3, "hidden"], [1, "text-white", "float-right"], [1, "az-header"], [1, "container"], [1, "az-header-left"], ["routerLink", "/"], ["src", "assets/images/banner-transparent-trim.png", "alt", "fasten", 1, "az-logo", "az-img-logo"], ["href", "#", "id", "azMenuShow", 1, "az-header-menu-icon", "d-lg-none", 3, "click"], [1, "az-header-menu"], [1, "az-header-menu-header"], ["src", "assets/images/banner-transparent-trim.png", "alt", "fasten", 1, "az-img-logo"], ["href", "#", 1, "close", 3, "click"], [1, "nav"], ["ngbDropdown", "", 1, "nav-item", 3, "ngClass"], ["routerLink", "/dashboard", "routerLinkActive", "active", 1, "nav-link"], ["dashboard", "routerLinkActive"], [3, "icon"], ["routerLink", "/developers", "routerLinkActive", "active", 1, "nav-link"], ["developers", "routerLinkActive"], [1, "az-header-right"], ["ngbDropdown", "", 1, "dropdown", "az-header-notification"], ["id", "notificationsDropdown", "ngbDropdownToggle", "", 1, "new"], [1, "far", "fa-sm", "fa-bell"], ["ngbDropdownMenu", "", "aria-labelledby", "notificationsDropdown", 1, "dropdown-menu"], [1, "az-dropdown-header", "mg-b-20", "d-sm-none"], [1, "az-header-arrow", 3, "click"], [1, "icon", "ion-md-arrow-back"], [1, "az-notification-title"], [1, "az-notification-text"], [1, "dropdown-footer"], ["routerLink", "/background-jobs"], ["ngbDropdown", "", 1, "dropdown", "az-profile-menu"], ["id", "profileDropdown", "ngbDropdownToggle", "", 1, "az-img-user", "cursor-pointer"], ["src", "/assets/images/profile-image.svg", "alt", ""], ["ngbDropdownMenu", "", "aria-labelledby", "profileDropdown", 1, "dropdown-menu"], [1, "az-dropdown-header", "d-sm-none"], [1, "az-header-profile", "cursor-pointer", 3, "routerLink"], [1, "az-img-user"], ["alt", "", 3, "src"], ["routerLink", "account/settings", 1, "dropdown-item", "cursor-pointer"], [1, "fas", "fa-user-circle", 2, "font-size", "medium"], ["routerLink", "org/settings", 1, "dropdown-item", "cursor-pointer"], [1, "fas", "fa-hospital", 2, "font-size", "medium"], [1, "dropdown-item", "cursor-pointer"], [1, "fas", "fa-life-ring", 2, "font-size", "medium"], [1, "dropdown-item", "cursor-pointer", 3, "click"], [1, "fas", "fa-power-off", 2, "font-size", "medium"]], template: function HeaderComponent_Template(rf, ctx) { if (rf & 1) {
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](0, "div", 0)(1, "strong");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](2, "Test Mode Enabled");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]();
@@ -460,77 +448,66 @@ HeaderComponent.ɵcmp = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTED_MODULE_3__
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](24, "li", 13)(25, "a", 17, 18);
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](27, "fa-icon", 16);
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](28, "\u00A0 Developer");
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]()();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](29, "li", 19)(30, "div", 20);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵlistener"]("click", function HeaderComponent_Template_div_click_30_listener() { return ctx.vaultConfigService.toggleApiMode(); });
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](31, "span");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]()()()();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](32, "div", 21)(33, "div", 22)(34, "a", 23);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](35, "i", 24);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](29, "div", 19)(30, "div", 20)(31, "a", 21);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](32, "i", 22);
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](36, "div", 25)(37, "div", 26)(38, "a", 27);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵlistener"]("click", function HeaderComponent_Template_a_click_38_listener($event) { return ctx.closeMenu($event); });
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](39, "i", 28);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](33, "div", 23)(34, "div", 24)(35, "a", 25);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵlistener"]("click", function HeaderComponent_Template_a_click_35_listener($event) { return ctx.closeMenu($event); });
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](36, "i", 26);
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]()();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](40, "h6", 29);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](41, "Notifications");
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](37, "h6", 27);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](38, "Notifications");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](42, "p", 30);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](43, "Background Jobs & Updates");
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](39, "p", 28);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](40, "Background Jobs & Updates");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](44, "div", 31)(45, "a", 32);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](46, "View History");
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](41, "div", 29)(42, "a", 30);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](43, "View History");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]()()()();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](47, "div", 33)(48, "a", 34);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](49, "img", 35);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](44, "div", 31)(45, "a", 32);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](46, "img", 33);
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](50, "div", 36)(51, "div", 37)(52, "a", 27);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵlistener"]("click", function HeaderComponent_Template_a_click_52_listener($event) { return ctx.closeMenu($event); });
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](53, "i", 28);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](47, "div", 34)(48, "div", 35)(49, "a", 25);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵlistener"]("click", function HeaderComponent_Template_a_click_49_listener($event) { return ctx.closeMenu($event); });
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](50, "i", 26);
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]()();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](54, "div", 38)(55, "div", 39);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](56, "img", 40);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](57, "h6");
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](58);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](51, "div", 36)(52, "div", 37);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](53, "img", 38);
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]()();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](59, "a", 41);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](60, "i", 42);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](61, " Profile Settings");
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](54, "a", 39);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](55, "i", 40);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](56, " Profile Settings");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](62, "a", 43);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](63, "i", 44);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](64, " Org Settings");
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](57, "a", 41);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](58, "i", 42);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](59, " Org Settings");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](65, "a", 45);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](66, "i", 46);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](67, " Get Support");
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](60, "a", 43);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](61, "i", 44);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](62, " Get Support");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]();
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](68, "a", 47);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵlistener"]("click", function HeaderComponent_Template_a_click_68_listener($event) { return ctx.signOut($event); });
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](69, "i", 48);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](70, " Sign Out");
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementStart"](63, "a", 45);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵlistener"]("click", function HeaderComponent_Template_a_click_63_listener($event) { return ctx.signOut($event); });
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelement"](64, "i", 46);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtext"](65, " Sign Out");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵelementEnd"]()()()()()();
} if (rf & 2) {
const _r0 = _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵreference"](21);
const _r1 = _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵreference"](26);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("hidden", ctx.vaultConfigService.config$.apiMode == "live");
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("hidden", ctx.vaultConfigService.systemConfig$.apiMode == "live");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵadvance"](19);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("ngClass", _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpureFunction1"](9, _c0, _r0 == null ? null : _r0.isActive));
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("ngClass", _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpureFunction1"](7, _c0, _r0 == null ? null : _r0.isActive));
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵadvance"](3);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("icon", _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpureFunction0"](11, _c1));
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("icon", _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpureFunction0"](9, _c1));
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵadvance"](2);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("ngClass", _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpureFunction1"](12, _c0, _r1 == null ? null : _r1.isActive));
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("ngClass", _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpureFunction1"](10, _c0, _r1 == null ? null : _r1.isActive));
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵadvance"](3);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("icon", _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpureFunction0"](14, _c2));
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵadvance"](3);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("ngClass", _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpureFunction1"](15, _c3, ctx.vaultConfigService.config$.apiMode == "test"));
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("icon", _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpureFunction0"](12, _c2));
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵadvance"](24);
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵproperty"]("routerLink", "/patient-profile");
_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵadvance"](2);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpropertyInterpolate"]("src", ctx.vaultConfigService.config$.org == null ? null : ctx.vaultConfigService.config$.org.logo_uri, _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵsanitizeUrl"]);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵadvance"](2);
- _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵtextInterpolate"](ctx.vaultConfigService.config$.user == null ? null : ctx.vaultConfigService.config$.user.name);
+ _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵpropertyInterpolate"]("src", ctx.vaultConfigService.systemConfig$.org == null ? null : ctx.vaultConfigService.systemConfig$.org.logo_uri, _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵsanitizeUrl"]);
} }, dependencies: [_angular_common__WEBPACK_IMPORTED_MODULE_5__.NgClass, _angular_router__WEBPACK_IMPORTED_MODULE_4__.RouterLink, _angular_router__WEBPACK_IMPORTED_MODULE_4__.RouterLinkWithHref, _angular_router__WEBPACK_IMPORTED_MODULE_4__.RouterLinkActive, _ng_bootstrap_ng_bootstrap__WEBPACK_IMPORTED_MODULE_6__.NgbDropdown, _ng_bootstrap_ng_bootstrap__WEBPACK_IMPORTED_MODULE_6__.NgbDropdownToggle, _ng_bootstrap_ng_bootstrap__WEBPACK_IMPORTED_MODULE_6__.NgbDropdownMenu, _fortawesome_angular_fontawesome__WEBPACK_IMPORTED_MODULE_7__.FaIconComponent], styles: [".az-toggle-danger.on[_ngcontent-%COMP%] {\n background-color: #dc3545 !important;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlYWRlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG9DQUFBO0FBQ0YiLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmF6LXRvZ2dsZS1kYW5nZXIub24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7XG59XG4iXX0= */"] });
@@ -603,6 +580,10 @@ __webpack_require__.r(__webpack_exports__);
* object.
*/
+// - apiMode
+// - organization information
+// - org credential information
+// - reconnect id.
/**
* Default configuration for the entire application. This object is used by
* "PortalConfigService" to set the default configuration.
@@ -977,12 +958,13 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ });
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs */ 745);
/* harmony import */ var _models_search_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../models/search-filter */ 6035);
-/* harmony import */ var _app_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../app.constants */ 2976);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 2560);
-/* harmony import */ var _services_vault_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/vault.service */ 3843);
-/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/forms */ 2508);
-/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/common */ 4666);
-/* harmony import */ var ngx_infinite_scroll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ngx-infinite-scroll */ 7364);
+/* harmony import */ var _services_vault_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../services/vault.service */ 3843);
+/* harmony import */ var _services_config_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/config.service */ 946);
+/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/router */ 124);
+/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/forms */ 2508);
+/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/common */ 4666);
+/* harmony import */ var ngx_infinite_scroll__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ngx-infinite-scroll */ 7364);
/* harmony import */ var _pipes_safe_html_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../pipes/safe-html.pipe */ 1656);
@@ -993,6 +975,7 @@ __webpack_require__.r(__webpack_exports__);
+
function HealthSystemSearchComponent_button_47_p_5_span_2_Template(rf, ctx) { if (rf & 1) {
_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelement"](0, "span", 41);
_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵpipe"](1, "safeHtml");
@@ -1056,9 +1039,10 @@ function HealthSystemSearchComponent_div_48_Template(rf, ctx) { if (rf & 1) {
_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementEnd"]()();
} }
class HealthSystemSearchComponent {
- constructor(vaultServiceApi) {
+ constructor(vaultServiceApi, configService, router) {
this.vaultServiceApi = vaultServiceApi;
- this.apiMode = _app_constants__WEBPACK_IMPORTED_MODULE_1__.ApiMode.Test;
+ this.configService = configService;
+ this.router = router;
this.loading = false;
this.lighthouseBrandList = [];
this.filter = new _models_search_filter__WEBPACK_IMPORTED_MODULE_0__.SearchFilter();
@@ -1090,7 +1074,7 @@ class HealthSystemSearchComponent {
}
this.filter.fields = ["*"];
this.loading = true;
- var searchObservable = this.vaultServiceApi.searchCatalogBrands(this.apiMode, this.filter);
+ var searchObservable = this.vaultServiceApi.searchCatalogBrands(this.configService.systemConfig$.apiMode, this.filter);
searchObservable.subscribe(wrapper => {
console.log("search sources", wrapper);
// this.searchResults = wrapper.hits.hits;
@@ -1138,6 +1122,8 @@ class HealthSystemSearchComponent {
};
}
selectBrand(brandItem) {
+ this.configService.searchConfig$.selectedBrand = brandItem;
+ this.router.navigate(['/brand-details']);
// this.messageBus.componentNavigationSubject.next({
// page: ComponentNavPage.PortalConnect,
// title: brandItem.name,
@@ -1145,8 +1131,8 @@ class HealthSystemSearchComponent {
// } as ComponentNavigationEvent)
}
}
-HealthSystemSearchComponent.ɵfac = function HealthSystemSearchComponent_Factory(t) { return new (t || HealthSystemSearchComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_services_vault_service__WEBPACK_IMPORTED_MODULE_2__.VaultService)); };
-HealthSystemSearchComponent.ɵcmp = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineComponent"]({ type: HealthSystemSearchComponent, selectors: [["app-health-system-search"]], inputs: { apiMode: "apiMode" }, decls: 49, vars: 6, consts: [["id", "step-search", 1, "space-y-6"], [1, "relative", "flex", "justify-center", "items-center"], ["type", "button", "id", "search-back", 1, "absolute", "left-0", "top-1/2", "-translate-y-1/2", "text-gray-700", "p-2", "hover:bg-gray-100", "rounded-md"], ["fill", "none", "stroke", "currentColor", "stroke-width", "2", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "d", "M15 19l-7-7 7-7"], [1, "az-logo"], [1, "flex", "gap-2"], [1, "flex-1"], ["id", "search-input", "type", "text", "placeholder", "Search for your health system...", 1, "w-full", "block", "px-3", "py-2", "text-base", "rounded-md", "border", "border-gray-300", "focus:outline-none", "focus:ring-2", "focus:ring-[#5B47FB]", "focus:ring-opacity-20", 3, "ngModel", "ngModelChange", "keyup"], ["id", "search-filters", 1, "border", "border-gray-200", "rounded-lg", "w-10", "h-10", "flex", "items-center", "justify-center", "hover:border-[#5B47FB]", "hover:bg-[#5B47FB]/5", "transition-all"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "lucide", "lucide-filter", "w-5", "h-5"], ["points", "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"], ["id", "filters-container", 1, "hidden", "space-y-4", "p-4", "border", "rounded-lg"], [1, "font-semibold", "text-lg"], [1, "relative"], [1, "block", "text-sm", "font-medium", "mb-1"], ["type", "button", "id", "state-filter-btn", 1, "w-full", "flex", "items-center", "justify-between", "px-3", "py-2", "text-sm", "border", "rounded-md", "bg-white", "hover:bg-gray-50"], ["id", "state-filter-value"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "h-4", "w-4", "opacity-50"], ["points", "6 9 12 15 18 9"], ["id", "state-filter-menu", 1, "absolute", "z-10", "w-full", "mt-1", "rounded-md", "border", "bg-white", "shadow-lg", "hidden"], [1, "py-1"], [1, "w-full", "text-left", "px-3", "py-2", "text-sm", "hover:bg-gray-100", "flex", "items-center", "justify-between"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "w-4", "h-4", "text-[#5B47FB]"], ["points", "20 6 9 17 4 12"], ["type", "button", "id", "type-filter-btn", 1, "w-full", "flex", "items-center", "justify-between", "px-3", "py-2", "text-sm", "border", "rounded-md", "bg-white", "hover:bg-gray-50"], ["id", "type-filter-value"], ["id", "type-filter-menu", 1, "absolute", "z-10", "w-full", "mt-1", "rounded-md", "border", "bg-white", "shadow-lg", "hidden"], ["id", "search-results", "infiniteScroll", "", 1, "space-y-2", 3, "infiniteScrollDistance", "infiniteScrollThrottle", "scrollWindow", "scrolled"], ["type", "button", "class", "w-full flex items-center gap-3 p-3 border rounded-lg hover:border-[#5B47FB]/30 hover:shadow-sm transition-all text-left focus:outline-none focus:ring-2 focus:ring-[#5B47FB] focus:ring-opacity-20", 3, "click", 4, "ngFor", "ngForOf"], ["class", "text-center py-8 space-y-4", 4, "ngIf"], ["type", "button", 1, "w-full", "flex", "items-center", "gap-3", "p-3", "border", "rounded-lg", "hover:border-[#5B47FB]/30", "hover:shadow-sm", "transition-all", "text-left", "focus:outline-none", "focus:ring-2", "focus:ring-[#5B47FB]", "focus:ring-opacity-20", 3, "click"], ["imageFallback", "", 1, "w-8", "h-8", "rounded", 3, "src", "alt"], [1, "flex-1", "min-w-0"], [1, "font-semibold"], ["class", "text-sm text-gray-600", 4, "ngIf"], [1, "text-sm", "text-gray-600"], [1, "flex", "items-center"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "w-5", "h-5", "text-gray-400"], ["points", "9 6 15 12 9 18"], [3, "innerHTML", 4, "ngFor", "ngForOf"], [3, "innerHTML"], [1, "text-center", "py-8", "space-y-4"], [1, "w-16", "h-16", "mx-auto", "bg-gray-100", "rounded-full", "flex", "items-center", "justify-center"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "w-8", "h-8", "text-gray-400"], ["cx", "11", "cy", "11", "r", "8"], ["d", "m21 21-4.3-4.3"], [1, "text-lg", "font-semibold"], [1, "text-gray-600"], ["id", "request-health-system", 1, "text-[#5B47FB]", "hover:text-[#4936E8]", "hover:bg-[#5B47FB]/5", "rounded-md", "px-4", "py-2", "transition-colors", "mt-2"]], template: function HealthSystemSearchComponent_Template(rf, ctx) { if (rf & 1) {
+HealthSystemSearchComponent.ɵfac = function HealthSystemSearchComponent_Factory(t) { return new (t || HealthSystemSearchComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_services_vault_service__WEBPACK_IMPORTED_MODULE_1__.VaultService), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_services_config_service__WEBPACK_IMPORTED_MODULE_2__.ConfigService), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_router__WEBPACK_IMPORTED_MODULE_6__.Router)); };
+HealthSystemSearchComponent.ɵcmp = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineComponent"]({ type: HealthSystemSearchComponent, selectors: [["app-health-system-search"]], decls: 49, vars: 6, consts: [["id", "step-search", 1, "space-y-6"], [1, "relative", "flex", "justify-center", "items-center"], ["type", "button", "id", "search-back", 1, "absolute", "left-0", "top-1/2", "-translate-y-1/2", "text-gray-700", "p-2", "hover:bg-gray-100", "rounded-md"], ["fill", "none", "stroke", "currentColor", "stroke-width", "2", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "d", "M15 19l-7-7 7-7"], [1, "az-logo"], [1, "flex", "gap-2"], [1, "flex-1"], ["id", "search-input", "type", "text", "placeholder", "Search for your health system...", 1, "w-full", "block", "px-3", "py-2", "text-base", "rounded-md", "border", "border-gray-300", "focus:outline-none", "focus:ring-2", "focus:ring-[#5B47FB]", "focus:ring-opacity-20", 3, "ngModel", "ngModelChange", "keyup"], ["id", "search-filters", 1, "border", "border-gray-200", "rounded-lg", "w-10", "h-10", "flex", "items-center", "justify-center", "hover:border-[#5B47FB]", "hover:bg-[#5B47FB]/5", "transition-all"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "lucide", "lucide-filter", "w-5", "h-5"], ["points", "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"], ["id", "filters-container", 1, "hidden", "space-y-4", "p-4", "border", "rounded-lg"], [1, "font-semibold", "text-lg"], [1, "relative"], [1, "block", "text-sm", "font-medium", "mb-1"], ["type", "button", "id", "state-filter-btn", 1, "w-full", "flex", "items-center", "justify-between", "px-3", "py-2", "text-sm", "border", "rounded-md", "bg-white", "hover:bg-gray-50"], ["id", "state-filter-value"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "h-4", "w-4", "opacity-50"], ["points", "6 9 12 15 18 9"], ["id", "state-filter-menu", 1, "absolute", "z-10", "w-full", "mt-1", "rounded-md", "border", "bg-white", "shadow-lg", "hidden"], [1, "py-1"], [1, "w-full", "text-left", "px-3", "py-2", "text-sm", "hover:bg-gray-100", "flex", "items-center", "justify-between"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "w-4", "h-4", "text-[#5B47FB]"], ["points", "20 6 9 17 4 12"], ["type", "button", "id", "type-filter-btn", 1, "w-full", "flex", "items-center", "justify-between", "px-3", "py-2", "text-sm", "border", "rounded-md", "bg-white", "hover:bg-gray-50"], ["id", "type-filter-value"], ["id", "type-filter-menu", 1, "absolute", "z-10", "w-full", "mt-1", "rounded-md", "border", "bg-white", "shadow-lg", "hidden"], ["id", "search-results", "infiniteScroll", "", 1, "space-y-2", 3, "infiniteScrollDistance", "infiniteScrollThrottle", "scrollWindow", "scrolled"], ["type", "button", "class", "w-full flex items-center gap-3 p-3 border rounded-lg hover:border-[#5B47FB]/30 hover:shadow-sm transition-all text-left focus:outline-none focus:ring-2 focus:ring-[#5B47FB] focus:ring-opacity-20", 3, "click", 4, "ngFor", "ngForOf"], ["class", "text-center py-8 space-y-4", 4, "ngIf"], ["type", "button", 1, "w-full", "flex", "items-center", "gap-3", "p-3", "border", "rounded-lg", "hover:border-[#5B47FB]/30", "hover:shadow-sm", "transition-all", "text-left", "focus:outline-none", "focus:ring-2", "focus:ring-[#5B47FB]", "focus:ring-opacity-20", 3, "click"], ["imageFallback", "", 1, "w-8", "h-8", "rounded", 3, "src", "alt"], [1, "flex-1", "min-w-0"], [1, "font-semibold"], ["class", "text-sm text-gray-600", 4, "ngIf"], [1, "text-sm", "text-gray-600"], [1, "flex", "items-center"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "w-5", "h-5", "text-gray-400"], ["points", "9 6 15 12 9 18"], [3, "innerHTML", 4, "ngFor", "ngForOf"], [3, "innerHTML"], [1, "text-center", "py-8", "space-y-4"], [1, "w-16", "h-16", "mx-auto", "bg-gray-100", "rounded-full", "flex", "items-center", "justify-center"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "w-8", "h-8", "text-gray-400"], ["cx", "11", "cy", "11", "r", "8"], ["d", "m21 21-4.3-4.3"], [1, "text-lg", "font-semibold"], [1, "text-gray-600"], ["id", "request-health-system", 1, "text-[#5B47FB]", "hover:text-[#4936E8]", "hover:bg-[#5B47FB]/5", "rounded-md", "px-4", "py-2", "transition-colors", "mt-2"]], template: function HealthSystemSearchComponent_Template(rf, ctx) { if (rf & 1) {
_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementStart"](0, "div", 0)(1, "div", 1)(2, "button", 2);
_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵnamespaceSVG"]();
_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementStart"](3, "svg", 3);
@@ -1221,7 +1207,7 @@ HealthSystemSearchComponent.ɵcmp = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTE
_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵproperty"]("ngForOf", ctx.lighthouseBrandList);
_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵadvance"](1);
_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵproperty"]("ngIf", !ctx.loading && ctx.lighthouseBrandList.length == 0);
- } }, dependencies: [_angular_forms__WEBPACK_IMPORTED_MODULE_6__.DefaultValueAccessor, _angular_forms__WEBPACK_IMPORTED_MODULE_6__.NgControlStatus, _angular_forms__WEBPACK_IMPORTED_MODULE_6__.NgModel, _angular_common__WEBPACK_IMPORTED_MODULE_7__.NgForOf, _angular_common__WEBPACK_IMPORTED_MODULE_7__.NgIf, ngx_infinite_scroll__WEBPACK_IMPORTED_MODULE_8__.InfiniteScrollDirective, _pipes_safe_html_pipe__WEBPACK_IMPORTED_MODULE_3__.SafeHtmlPipe], styles: ["\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJoZWFsdGgtc3lzdGVtLXNlYXJjaC5jb21wb25lbnQuc2NzcyJ9 */"] });
+ } }, dependencies: [_angular_forms__WEBPACK_IMPORTED_MODULE_7__.DefaultValueAccessor, _angular_forms__WEBPACK_IMPORTED_MODULE_7__.NgControlStatus, _angular_forms__WEBPACK_IMPORTED_MODULE_7__.NgModel, _angular_common__WEBPACK_IMPORTED_MODULE_8__.NgForOf, _angular_common__WEBPACK_IMPORTED_MODULE_8__.NgIf, ngx_infinite_scroll__WEBPACK_IMPORTED_MODULE_9__.InfiniteScrollDirective, _pipes_safe_html_pipe__WEBPACK_IMPORTED_MODULE_3__.SafeHtmlPipe], styles: ["\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJoZWFsdGgtc3lzdGVtLXNlYXJjaC5jb21wb25lbnQuc2NzcyJ9 */"] });
/***/ }),
@@ -1687,7 +1673,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app.constants */ 2976);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/core */ 2560);
/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/common/http */ 8987);
-/* harmony import */ var _vault_config_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./vault-config.service */ 7877);
+/* harmony import */ var _config_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config.service */ 946);
@@ -1763,7 +1749,7 @@ class AuthService {
audience: issuerHost
});
// @ts-ignore
- _this4.vaultConfigService.config = {
+ _this4.vaultConfigService.systemConfig = {
user: payload
};
return payload;
@@ -1813,7 +1799,7 @@ class AuthService {
}
}
AuthService.ɵfac = function AuthService_Factory(t) {
- return new (t || AuthService)(_angular_core__WEBPACK_IMPORTED_MODULE_6__["ɵɵinject"](_angular_common_http__WEBPACK_IMPORTED_MODULE_7__.HttpClient), _angular_core__WEBPACK_IMPORTED_MODULE_6__["ɵɵinject"](_vault_config_service__WEBPACK_IMPORTED_MODULE_4__.VaultConfigService));
+ return new (t || AuthService)(_angular_core__WEBPACK_IMPORTED_MODULE_6__["ɵɵinject"](_angular_common_http__WEBPACK_IMPORTED_MODULE_7__.HttpClient), _angular_core__WEBPACK_IMPORTED_MODULE_6__["ɵɵinject"](_config_service__WEBPACK_IMPORTED_MODULE_4__.ConfigService));
};
AuthService.ɵprov = /*@__PURE__*/_angular_core__WEBPACK_IMPORTED_MODULE_6__["ɵɵdefineInjectable"]({
token: AuthService,
@@ -1823,32 +1809,45 @@ AuthService.ɵprov = /*@__PURE__*/_angular_core__WEBPACK_IMPORTED_MODULE_6__["ɵ
/***/ }),
-/***/ 7877:
-/*!**************************************************!*\
- !*** ./src/app/services/vault-config.service.ts ***!
- \**************************************************/
+/***/ 946:
+/*!********************************************!*\
+ !*** ./src/app/services/config.service.ts ***!
+ \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "VaultConfigService": () => (/* binding */ VaultConfigService)
+/* harmony export */ "ConfigService": () => (/* binding */ ConfigService)
/* harmony export */ });
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs */ 6317);
/* harmony import */ var _models_vault_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/vault-config */ 5567);
/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash */ 2938);
/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _app_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../app.constants */ 2976);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 2560);
+/* harmony import */ var _vault_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vault.service */ 3843);
-class VaultConfigService {
- constructor() {
- this._defaultConfig = _models_vault_config__WEBPACK_IMPORTED_MODULE_0__.vaultConfigDefaults;
- this.ConfigSubject = new rxjs__WEBPACK_IMPORTED_MODULE_3__.BehaviorSubject(this._defaultConfig);
+class ConfigService {
+ constructor(vaultApi) {
+ this._defaultSystemConfig = _models_vault_config__WEBPACK_IMPORTED_MODULE_0__.vaultConfigDefaults;
+ this.systemConfigSubject = new rxjs__WEBPACK_IMPORTED_MODULE_3__.BehaviorSubject(this._defaultSystemConfig);
+ this.vaultProfileConfigSubject = new rxjs__WEBPACK_IMPORTED_MODULE_3__.BehaviorSubject({});
+ this.searchConfigSubject = new rxjs__WEBPACK_IMPORTED_MODULE_3__.BehaviorSubject({});
+ //always watch for changes to the vault
+ this.subscribeSystemConfig((systemConfig) => {
+ console.log("System configuration changed:", systemConfig, this.systemConfig$);
+ if (systemConfig.org_id && !systemConfig.org) {
+ console.log("attempt to download org information, and store in config");
+ vaultApi.getOrg(systemConfig.org_id).subscribe((org) => {
+ console.log("org:", org);
+ this.systemConfig = { org: org };
+ });
+ }
+ });
}
// -----------------------------------------------------------------------------------------------------
// @ Accessors
@@ -1856,37 +1855,63 @@ class VaultConfigService {
/**
* Setter & getter for config
*/
- set config(value) {
+ subscribeSystemConfig(callback) {
+ this.systemConfigSubject.subscribe(callback);
+ }
+ //Setter
+ set systemConfig(value) {
// get the current config, merge the new values, and then submit.
- const mergedSettings = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.merge)({}, this.ConfigSubject.getValue(), value);
+ const mergedSettings = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.merge)({}, this.systemConfigSubject.getValue(), value);
// Store the value
- if (JSON.stringify(mergedSettings) !== JSON.stringify(this.ConfigSubject.getValue())) {
- console.log('updating settings:', mergedSettings);
- this.ConfigSubject.next(mergedSettings);
+ if (JSON.stringify(mergedSettings) !== JSON.stringify(this.systemConfigSubject.getValue())) {
+ console.log('updating system settings:', mergedSettings);
+ this.systemConfigSubject.next(mergedSettings);
}
}
- get config$() {
- console.log('using cached settings:', this.ConfigSubject.getValue());
- return this.ConfigSubject.getValue();
+ //Getter
+ get systemConfig$() {
+ console.log('getting cached system settings:', this.systemConfigSubject.getValue());
+ return this.systemConfigSubject.getValue();
}
- // -----------------------------------------------------------------------------------------------------
- // @ Public methods
- // -----------------------------------------------------------------------------------------------------
- /**
- * Resets the config to the default
- */
- reset() {
- // Set the config
- this.config = this._defaultConfig;
+ subscribeVaultProfileConfig(callback) {
+ this.vaultProfileConfigSubject.subscribe(callback);
}
- toggleApiMode() {
- this.config = {
- apiMode: this.config$.apiMode === 'live' ? _app_constants__WEBPACK_IMPORTED_MODULE_2__.ApiMode.Test : _app_constants__WEBPACK_IMPORTED_MODULE_2__.ApiMode.Live
- };
+ //Setter
+ set vaultProfileConfig(value) {
+ // get the current config, merge the new values, and then submit.
+ const mergedSettings = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.merge)({}, this.vaultProfileConfigSubject.getValue(), value);
+ // Store the value
+ if (JSON.stringify(mergedSettings) !== JSON.stringify(this.vaultProfileConfigSubject.getValue())) {
+ console.log('updating vault profile settings:', mergedSettings);
+ this.vaultProfileConfigSubject.next(mergedSettings);
+ }
+ }
+ //Getter
+ get vaultProfileConfig$() {
+ console.log('getting vault profile settings:', this.vaultProfileConfigSubject.getValue());
+ return this.vaultProfileConfigSubject.getValue();
+ }
+ subscribeSearchConfig(callback) {
+ this.searchConfigSubject.subscribe(callback);
+ }
+ //Setter
+ set searchConfig(value) {
+ // get the current config, merge the new values, and then submit.
+ const mergedSettings = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.merge)({}, this.searchConfigSubject.getValue(), value);
+ // Store the value
+ if (JSON.stringify(mergedSettings) !== JSON.stringify(this.searchConfigSubject.getValue())) {
+ console.log('updating search settings:', mergedSettings);
+ this.searchConfigSubject.next(mergedSettings);
+ }
+ }
+ //Getter
+ get searchConfig$() {
+ console.log('getting search settings:', this.searchConfigSubject.getValue());
+ return this.searchConfigSubject.getValue();
}
}
-VaultConfigService.ɵfac = function VaultConfigService_Factory(t) { return new (t || VaultConfigService)(); };
-VaultConfigService.ɵprov = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineInjectable"]({ token: VaultConfigService, factory: VaultConfigService.ɵfac, providedIn: 'root' });
+ConfigService.ɵfac = function ConfigService_Factory(t) { return new (t || ConfigService)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵinject"](_vault_service__WEBPACK_IMPORTED_MODULE_2__.VaultService)); };
+ConfigService.ɵprov = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineInjectable"]({ token: ConfigService, factory: ConfigService.ɵfac, providedIn: 'root' });
/***/ }),
@@ -1988,6 +2013,13 @@ class VaultService {
return response.data;
}));
}
+ getOrg(orgId) {
+ return this._httpClient.get(`${_environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.connect_api_endpoint_base}/org/${orgId}`)
+ .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_6__.map)((response) => {
+ console.log("Organization", response);
+ return response.data;
+ }));
+ }
//OLD code
updateUser(oldPass, oldEmail, newEmail, newPass = "") {
const userUpdateJson = JSON.stringify({
@@ -2038,13 +2070,6 @@ class VaultService {
return response.data;
}));
}
- getOrg(orgId) {
- return this._httpClient.get(`${_environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.connect_api_endpoint_base}/org/${orgId}`)
- .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_6__.map)((response) => {
- console.log("Organization", response);
- return response.data;
- }));
- }
sendOrgInvite(orgId, recipientEmail) {
return this._httpClient.post(`${_environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.connect_api_endpoint_base}/org/${orgId}/invite`, {
recipient_email_address: recipientEmail,
diff --git a/main.js.map b/main.js.map
index 8732c5a..16c0d57 100644
--- a/main.js.map
+++ b/main.js.map
@@ -1 +1 @@
-{"version":3,"file":"main.js","mappings":"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;;;;;;;;;;ACH6C;AAGF;AACY;AAEzD,IAAI,uEAAgB,IAAI,OAAO,EAAE;IAC/B,6DAAc,EAAE,CAAC;CAClB;AAED,wEAAwB,CAAC,eAAe,CAAC,sDAAS,CAAC;KAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;;;;;;;;;;ACXpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.constants.ts","./src/app/app.module.ts","./src/app/auth-guards/is-authenticated-auth-guard.ts","./src/app/components/footer/footer.component.ts","./src/app/components/footer/footer.component.html","./src/app/components/header/header.component.ts","./src/app/components/header/header.component.html","./src/app/models/fasten/vaultProfile.ts","./src/app/models/search-filter.ts","./src/app/models/vault-config.ts","./src/app/pages/complete/complete.component.ts","./src/app/pages/complete/complete.component.html","./src/app/pages/dashboard/dashboard.component.ts","./src/app/pages/dashboard/dashboard.component.html","./src/app/pages/form-request-health-system/form-request-health-system.component.ts","./src/app/pages/form-request-health-system/form-request-health-system.component.html","./src/app/pages/form-support-request/form-support-request.component.ts","./src/app/pages/form-support-request/form-support-request.component.html","./src/app/pages/health-system-brand-details/health-system-brand-details.component.ts","./src/app/pages/health-system-brand-details/health-system-brand-details.component.html","./src/app/pages/health-system-connecting/health-system-connecting.component.ts","./src/app/pages/health-system-connecting/health-system-connecting.component.html","./src/app/pages/health-system-search/health-system-search.component.ts","./src/app/pages/health-system-search/health-system-search.component.html","./src/app/pages/identity-verification/identity-verification.component.ts","./src/app/pages/identity-verification/identity-verification.component.html","./src/app/pages/vault-profile-signin-code/vault-profile-signin-code.component.ts","./src/app/pages/vault-profile-signin-code/vault-profile-signin-code.component.html","./src/app/pages/vault-profile-signin/vault-profile-signin.component.ts","./src/app/pages/vault-profile-signin/vault-profile-signin.component.html","./src/app/pipes/safe-html.pipe.ts","./src/app/services/auth-interceptor.service.ts","./src/app/services/auth.service.ts","./src/app/services/vault-config.service.ts","./src/app/services/vault.service.ts","./src/environments/environment.dev.ts","./src/environments/versions.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport {DashboardComponent} from './pages/dashboard/dashboard.component';\nimport {VaultProfileSigninComponent} from './pages/vault-profile-signin/vault-profile-signin.component';\nimport {IsAuthenticatedAuthGuard} from './auth-guards/is-authenticated-auth-guard';\nimport {VaultProfileSigninCodeComponent} from './pages/vault-profile-signin-code/vault-profile-signin-code.component';\nimport {IdentityVerificationComponent} from './pages/identity-verification/identity-verification.component';\nimport {HealthSystemSearchComponent} from './pages/health-system-search/health-system-search.component';\nimport {\n HealthSystemBrandDetailsComponent\n} from './pages/health-system-brand-details/health-system-brand-details.component';\nimport {\n FormRequestHealthSystemComponent\n} from './pages/form-request-health-system/form-request-health-system.component';\nimport {FormSupportRequestComponent} from './pages/form-support-request/form-support-request.component';\nimport {HealthSystemConnectingComponent} from './pages/health-system-connecting/health-system-connecting.component';\nimport {CompleteComponent} from './pages/complete/complete.component';\n\nconst routes: Routes = [\n\n { path: 'auth/signin', component: VaultProfileSigninComponent },\n { path: 'auth/signin/code', component: VaultProfileSigninCodeComponent },\n { path: 'auth/identity-verification', component: IdentityVerificationComponent },\n\n { path: '', redirectTo: '/auth/signin', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent, canActivate: [ IsAuthenticatedAuthGuard] },\n { path: 'search', component: HealthSystemSearchComponent },\n { path: 'brand-details', component: HealthSystemBrandDetailsComponent },\n { path: 'form-request', component: FormRequestHealthSystemComponent },\n { path: 'form-support', component: FormSupportRequestComponent },\n { path: 'portal-connecting', component: HealthSystemConnectingComponent },\n { path: 'complete', component: CompleteComponent },\n\n //must be at bottom of list\n { path: '**', redirectTo: 'auth/signin' },\n\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component } from '@angular/core';\nimport {NavigationEnd, Router, RouterEvent} from '@angular/router';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n title = 'fastenhealth';\n\n showHeader:boolean = false;\n showFooter:boolean = true;\n\n constructor(\n private router: Router,\n // private toastService: ToastService,\n private modalService: NgbModal\n ) {}\n\n ngOnInit() {\n\n // navbar backdrop for mobile only\n const navbarBackdrop = document.createElement('div');\n navbarBackdrop.classList.add('az-navbar-backdrop');\n document.querySelector('body')?.appendChild(navbarBackdrop);\n\n //determine if we should show the header\n this.router.events.subscribe(event => this.routerEvent(event));\n }\n\n routerEvent(event: any) {\n if (event instanceof NavigationEnd) {\n //modify header\n if (event.url?.startsWith('/auth') || event.url?.startsWith('/desktop')) {\n this.showHeader = false;\n } else {\n // console.log(\"NU\")\n this.showHeader = true;\n }\n\n // close all open modals when route change\n this.modalService.dismissAll();\n }\n }\n}\n","
\n
\n You are using Fasten in test mode\n
\n\n \n
\n","export enum ApiMode {\n Live = 'live',\n Test = 'test',\n}\n\nexport const ORG_CREDENTIAL_PUBLIC_ID = 'public_test_rei2un7aagh5pquwikxh2dsyq23bsdyu4l8vm9eq29ftu'\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n\nimport { fas } from '@fortawesome/free-solid-svg-icons';\nimport { far } from '@fortawesome/free-regular-svg-icons';\nimport {InfiniteScrollModule} from 'ngx-infinite-scroll';\n\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport {FontAwesomeModule, FaIconLibrary} from '@fortawesome/angular-fontawesome';\nimport {HeaderComponent} from './components/header/header.component';\nimport {FooterComponent} from './components/footer/footer.component';\nimport { DashboardComponent } from './pages/dashboard/dashboard.component';\nimport { VaultProfileSigninComponent } from './pages/vault-profile-signin/vault-profile-signin.component';\nimport {IsAuthenticatedAuthGuard} from './auth-guards/is-authenticated-auth-guard';\nimport {Router} from '@angular/router';\nimport {AuthService} from './services/auth.service';\nimport {AuthInterceptorService} from './services/auth-interceptor.service';\nimport {MomentModule} from 'ngx-moment';\nimport { VaultProfileSigninCodeComponent } from './pages/vault-profile-signin-code/vault-profile-signin-code.component';\nimport { CodeInputModule } from 'angular-code-input';\nimport { IdentityVerificationComponent } from './pages/identity-verification/identity-verification.component';\nimport { HealthSystemSearchComponent } from './pages/health-system-search/health-system-search.component';\nimport { HealthSystemBrandDetailsComponent } from './pages/health-system-brand-details/health-system-brand-details.component';\nimport { FormRequestHealthSystemComponent } from './pages/form-request-health-system/form-request-health-system.component';\nimport { FormSupportRequestComponent } from './pages/form-support-request/form-support-request.component';\nimport { HealthSystemConnectingComponent } from './pages/health-system-connecting/health-system-connecting.component';\nimport { CompleteComponent } from './pages/complete/complete.component';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\n\n@NgModule({\n declarations: [\n AppComponent,\n HeaderComponent,\n FooterComponent,\n DashboardComponent,\n VaultProfileSigninComponent,\n VaultProfileSigninCodeComponent,\n IdentityVerificationComponent,\n HealthSystemSearchComponent,\n HealthSystemBrandDetailsComponent,\n FormRequestHealthSystemComponent,\n FormSupportRequestComponent,\n HealthSystemConnectingComponent,\n CompleteComponent,\n SafeHtmlPipe,\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n BrowserModule,\n HttpClientModule,\n AppRoutingModule,\n\n NgbModule,\n FontAwesomeModule,\n MomentModule,\n CodeInputModule,\n InfiniteScrollModule,\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptorService,\n multi: true,\n deps: [AuthService, Router]\n },\n IsAuthenticatedAuthGuard,\n ],\n bootstrap: [AppComponent],\n schemas: [ CUSTOM_ELEMENTS_SCHEMA ]\n})\nexport class AppModule {\n constructor(library: FaIconLibrary) {\n library.addIconPacks(fas, far);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router} from '@angular/router';\nimport {AuthService} from '../services/auth.service';\n\n@Injectable()\nexport class IsAuthenticatedAuthGuard implements CanActivate {\n constructor(private authService: AuthService, private router: Router) {\n\n }\n\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\n let jwtPayload = await this.authService.GetJWTPayload()\n\n //check if the user is authenticated, if not, redirect to login\n if (!jwtPayload) {\n return await this.router.navigate(['/auth/signin']);\n } else if(!jwtPayload.has_verified_identity){\n console.log(\"Profile does not have a verified identity, redirecting to id verification step\", jwtPayload)\n return await this.router.navigate(['/auth/identity-verification']);\n }\n\n\n // continue as normal\n return true\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport {versionInfo} from '../../../environments/versions';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n appVersion: string;\n\n constructor() {\n this.appVersion = versionInfo.version\n }\n\n ngOnInit() {\n }\n\n}\n","\n","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\nimport {Router} from '@angular/router';\nimport {VaultService} from '../../services/vault.service';\nimport {VaultConfig} from '../../models/vault-config';\nimport {VaultConfigService} from '../../services/vault-config.service';\nimport {Organization} from '../../models/fasten/organization';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n constructor(\n private authService: AuthService,\n private connectService: VaultService,\n public vaultConfigService: VaultConfigService,\n private router: Router,\n ) { }\n\n ngOnInit() {\n\n this.vaultConfigService.ConfigSubject.subscribe((config: VaultConfig) => {\n console.log(\"Configuration changed:\", config)\n if(config.user && config.user.org_id && !config.org){\n console.log(\"attempt to download org information, and store in config\")\n this.connectService.getOrg(config.user.org_id).subscribe((org: Organization )=>{\n console.log(\"org:\", org)\n this.vaultConfigService.config = {org: org}\n })\n }\n });\n\n }\n\n toggleHeaderMenu(event: Event) {\n event.preventDefault();\n document.querySelector('body')?.classList.toggle('az-header-menu-show');\n }\n closeMenu(e: Event) {\n (e.target as HTMLElement).closest('.dropdown')?.classList.remove('show');\n (e.target as HTMLElement).closest('.dropdown .dropdown-menu')?.classList.remove('show');\n }\n\n signOut(event: Event) {\n this.authService.Signout().then(r => {\n return this.router.navigate(['/auth/signin'])\n })\n }\n}\n","\n Test Mode Enabled \n You're using test data. You will only be able to access sandbox accounts. \n
\n\n\n\n","export class VaultProfile {\n id?: string\n name?: string\n email?: string\n password?: string\n org_id?: string\n\n //not sent to the server\n password_confirm?: string = \"\"\n agree_terms?: boolean = false\n}\n","\nexport class SearchFilter {\n //primary search terms (changes here should restart the search completely)\n query: string = \"\"\n\n //secondary search terms/facets (changes here should restart pagination)\n platformTypes: string[] = [];\n categories: string[] = [];\n showHidden: boolean = false;\n\n //pagination - this is the current page (changes here should be ignored)\n searchAfter: string | string[] = '';\n\n fields: string[] = []; //specify the fields to return. if null or empty list, return all.\n}\n","/**\n * AppConfig interface. Update this interface to strictly type your config\n * object.\n */\nimport {ApiMode} from '../app.constants';\nimport {Organization} from './fasten/organization';\nimport {VaultProfile} from './fasten/vaultProfile';\n\nexport interface VaultConfig {\n apiMode?: ApiMode;\n org?: Organization;\n user?: VaultProfile\n}\n\n/**\n * Default configuration for the entire application. This object is used by\n * \"PortalConfigService\" to set the default configuration.\n */\nexport const vaultConfigDefaults: VaultConfig = {\n apiMode: ApiMode.Test\n};\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-complete',\n templateUrl: './complete.component.html',\n styleUrls: ['./complete.component.scss']\n})\nexport class CompleteComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n
\n
fasten \n \n\n
\n\n
\n
Success! \n
\n Your health records have been successfully linked with Acme Labs.\n You can now close this window.\n
\n
\n\n
\n Close\n \n
\n\n","import {Component, OnInit} from '@angular/core';\nimport {VaultService} from '../../services/vault.service';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss']\n})\nexport class DashboardComponent implements OnInit {\n\n\n constructor(\n private vaultService: VaultService,\n ) { }\n\n ngOnInit(): void {\n this.vaultService.getRecordLocator().subscribe((result)=>{\n console.log(\"record locator\", result)\n })\n }\n}\n","\n
\n
fasten \n \n\n
\n
Select Health Systems \n
\n Choose the health systems you'd like to connect\n
\n
\n\n \n
\n\n
\n\n \n
\n \n
\n \n \n
Connect a new health system \n
\n \n \n \n \n\n
\n
\n
\n
Your medical records are secure \n
\n
\n Continue\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-form-request-health-system',\n templateUrl: './form-request-health-system.component.html',\n styleUrls: ['./form-request-health-system.component.scss']\n})\nexport class FormRequestHealthSystemComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-form-support-request',\n templateUrl: './form-support-request.component.html',\n styleUrls: ['./form-support-request.component.scss']\n})\nexport class FormSupportRequestComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-health-system-brand-details',\n templateUrl: './health-system-brand-details.component.html',\n styleUrls: ['./health-system-brand-details.component.scss']\n})\nexport class HealthSystemBrandDetailsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n
\n
\n \n \n \n \n
fasten \n
\n\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n\n
\n
\n\n \n
\n
\n
\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-health-system-connecting',\n templateUrl: './health-system-connecting.component.html',\n styleUrls: ['./health-system-connecting.component.scss']\n})\nexport class HealthSystemConnectingComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n
\n\n\n
\n
\n
\n
\n
\n\n
\n
\n
\n\n
\n
\n
Redirecting to sign in...
\n
\n
\n
\n
\n","import {Component, Input, OnInit} from '@angular/core';\nimport {SourceListItem} from '../../models/source-list-item';\nimport {\n LighthouseBrandListDisplayItem,\n LighthouseSourceSearch,\n LighthouseSourceSearchAggregation\n} from '../../models/lighthouse/lighthouse-source-search';\nimport {Observable, of} from 'rxjs';\nimport {SearchFilter} from '../../models/search-filter';\nimport {VaultService} from '../../services/vault.service';\nimport {ApiMode} from '../../app.constants';\n\n@Component({\n selector: 'app-health-system-search',\n templateUrl: './health-system-search.component.html',\n styleUrls: ['./health-system-search.component.scss']\n})\nexport class HealthSystemSearchComponent implements OnInit {\n @Input() apiMode: ApiMode = ApiMode.Test;\n\n loading = false;\n lighthouseBrandList: SourceListItem[] = []\n\n filter: SearchFilter = new SearchFilter()\n\n //limits that are tied to the current result set.\n resultLimits: {\n totalItems: number,\n scrollComplete: boolean,\n platformTypesBuckets: LighthouseSourceSearchAggregation | undefined,\n categoryBuckets: LighthouseSourceSearchAggregation | undefined,\n } = {\n totalItems: 0,\n scrollComplete: false,\n platformTypesBuckets: undefined,\n categoryBuckets: undefined\n }\n\n constructor(\n public vaultServiceApi: VaultService,\n ) { }\n\n ngOnInit(): void {\n this.querySources(true)\n }\n\n public querySources(reset: boolean): Observable {\n if(reset){\n this.resetSearch()\n }\n\n console.log(\"querySources()\", this.filter)\n if(this.loading){\n console.log(\"already loading, ignoring querySources()\")\n return of(null)\n }\n //TODO: pass filter to function.\n // this.location.replaceState('/dashboard','', this.filter)\n\n if(!this.filter){\n this.filter = new SearchFilter()\n console.log(\"querySources() - no filter provided, using current form value\", this.filter)\n }\n\n\n this.filter.fields = [\"*\"];\n this.loading = true\n var searchObservable = this.vaultServiceApi.searchCatalogBrands(this.apiMode, this.filter);\n searchObservable.subscribe(wrapper => {\n console.log(\"search sources\", wrapper);\n // this.searchResults = wrapper.hits.hits;\n this.resultLimits.totalItems = wrapper?.hits?.total.value || 0;\n\n this.lighthouseBrandList = this.lighthouseBrandList.concat((wrapper?.hits?.hits || []).map((result) => {\n return {\n brand: result._source,\n searchHighlights: result?.highlight?.aliases || []\n }\n }))\n\n //check if scroll is complete.\n if(!wrapper?.hits || !wrapper?.hits?.hits || wrapper?.hits?.hits?.length == 0 || wrapper?.hits?.total?.value == wrapper?.hits?.hits?.length){\n console.log(\"SCROLL_COMPLETE!@@@@@@@@\")\n this.resultLimits.scrollComplete = true;\n } else {\n //change the current Page (but don't cause a new query)\n console.log(\"SETTING NEXT SORT KEY:\", wrapper.hits.hits[wrapper.hits.hits.length - 1].sort.join(','))\n this.filter.searchAfter = wrapper.hits.hits[wrapper.hits.hits.length - 1].sort.join(\",\")\n }\n this.loading = false\n },\n error => {\n this.loading = false\n console.error(\"sources FAILED\", error)\n },\n () => {\n this.loading = false\n console.log(\"sources finished\")\n }\n );\n return searchObservable;\n }\n\n onScroll() {\n if(!this.resultLimits.scrollComplete) {\n this.querySources(false)\n }\n }\n\n private resetSearch(){\n console.log(\"reset search...\")\n this.lighthouseBrandList = []\n this.filter.searchAfter = []\n this.resultLimits = {\n totalItems: 0,\n scrollComplete: false,\n platformTypesBuckets: undefined,\n categoryBuckets: undefined\n }\n }\n\n public selectBrand(brandItem?: LighthouseBrandListDisplayItem){\n // this.messageBus.componentNavigationSubject.next({\n // page: ComponentNavPage.PortalConnect,\n // title: brandItem.name,\n // data: brandItem,\n // } as ComponentNavigationEvent)\n }\n}\n","\n\n
\n
\n \n \n \n \n
fasten \n
\n\n
\n
\n \n
\n
\n \n \n \n \n
\n\n \n
\n
Filters \n\n \n
\n
State \n
\n All States \n \n \n \n \n \n
\n\n \n
\n
Institution Type \n
\n All Types \n \n \n \n \n \n
\n
\n\n \n
\n\n
\n \n \n
{{brand?.brand?.name}}
\n
0\" class=\"text-sm text-gray-600\">Found match(es):\n \n
\n
New Jersey, New York, California
\n \n \n\n
\n\n
\n
\n
No results found \n
We couldn't find any health systems matching your search.
\n
Request this health system \n
\n\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\nimport {VaultService} from '../../services/vault.service';\n\n@Component({\n selector: 'app-identity-verification',\n templateUrl: './identity-verification.component.html',\n styleUrls: ['./identity-verification.component.scss']\n})\nexport class IdentityVerificationComponent implements OnInit {\n\n constructor(\n private vaultService: VaultService,\n\n ) { }\n\n ngOnInit(): void {\n }\n\n verifyIdentity(){\n this.vaultService.verificationWithPopup().subscribe((result)=>{\n console.log(\"verification result\", result)\n })\n }\n}\n","\n\n
\n
fasten \n \n\n
\n
\n Verify your identity just once\n \n
\n Your leaving Acme Labs to verify your identity with our partner, Clear.\n This one-time step will bring you right back after your ID has been verified.\n
\n
\n\n\n
\n \n Continue\n \n
\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport {Router} from '@angular/router';\nimport {AuthService} from '../../services/auth.service';\n\n@Component({\n selector: 'app-vault-profile-signin-code',\n templateUrl: './vault-profile-signin-code.component.html',\n styleUrls: ['./vault-profile-signin-code.component.scss']\n})\nexport class VaultProfileSigninCodeComponent implements OnInit {\n loading: boolean = false\n errorMsg: string = \"\"\n\n currentEmail = \"\"\n\n constructor(\n private router: Router,\n private authService: AuthService,\n ) {\n // @ts-ignore\n this.currentEmail = this.router.getCurrentNavigation().extras?.state?.[\"email\"] || 'test@example.com'\n }\n\n ngOnInit(): void {\n }\n\n onCodeCompleted(code: string){\n this.loading = true\n\n console.log(\"submit finish\", this.currentEmail, code)\n this.authService.VaultAuthFinish(this.currentEmail, code)\n .then(() => {\n this.loading = false\n this.router.navigateByUrl('/dashboard', {state: { } })\n })\n .catch((err)=>{\n this.loading = false\n if(err?.name){\n this.errorMsg = \"code is incorrect\"\n } else{\n this.errorMsg = \"an unknown error occurred during sign-in\"\n }\n // const toastNotification = new ToastNotification()\n // toastNotification.type = ToastType.Error\n // toastNotification.message = this.errorMsg\n // this.toastService.show(toastNotification)\n })\n }\n\n}\n","\n\n
\n
fasten \n \n\n
\n
\n Enter authentication code from your email\n \n
\n A code was sent to {{currentEmail}} \n
\n
\n\n
\n \n \n
\n\n
\n\n
\n Code expires in\n 4:59 \n
\n\n
\n \n Re-send code\n \n \n Use another verification method\n \n
\n
\n\n","import {Component, OnInit} from '@angular/core';\nimport {VaultProfile} from '../../models/fasten/vaultProfile';\nimport {Router} from '@angular/router';\nimport {AuthService} from '../../services/auth.service';\n\n@Component({\n selector: 'app-auth-signin',\n templateUrl: './vault-profile-signin.component.html',\n styleUrls: ['./vault-profile-signin.component.scss']\n})\nexport class VaultProfileSigninComponent implements OnInit {\n loading: boolean = false\n showMessage: boolean = false\n\n submitted: boolean = false\n existingVaultProfile: VaultProfile = new VaultProfile()\n errorMsg: string = \"\"\n message: string = \"\"\n\n constructor(\n private authService: AuthService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n const urlParams = new URLSearchParams(window.location.search);\n this.setMessage(urlParams.get('action') || \"\")\n\n }\n\n signinSubmit(){\n this.submitted = true;\n this.loading = true\n\n console.log(\"Signin\", this.existingVaultProfile.email)\n this.authService.VaultAuthBegin(this.existingVaultProfile.email!)\n .then(() => {\n this.loading = false\n this.router.navigateByUrl('/auth/signin/code', {state: { email: this.existingVaultProfile.email } })\n })\n .catch((err)=>{\n this.loading = false\n if(err?.name){\n this.errorMsg = \"email or password is incorrect\"\n } else{\n this.errorMsg = \"an unknown error occurred during sign-in\"\n }\n // const toastNotification = new ToastNotification()\n // toastNotification.type = ToastType.Error\n // toastNotification.message = this.errorMsg\n // this.toastService.show(toastNotification)\n })\n }\n\n setMessage(action: string) {\n if (action === \"email-changed\"){\n this.showMessage = true;\n this.message = \"Email successfully changed! Please sign in with your new email.\";\n } else if (action === \"password-changed\"){\n this.showMessage = true;\n this.message = \"Password successfully changed! Please sign in with your new password.\";\n }\n }\n}\n","\n\n
\n
fasten \n \n\n
\n
\n\n
\n\n
'\" />\n
\n\n
\n
Connect Your Health Records \n
\n Acme Labs uses Fasten to securely link your health systems\n
\n
\n\n
\n \n
\n
\n
\n
Safe \n
\n Securely connect your medical records with bank-level encryption\n
\n
\n
\n\n \n
\n
\n
\n
Private \n
\n We never sell your personal info and only use it with your\n permission\n
\n
\n
\n
\n\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer:DomSanitizer){}\n\n transform(value: any, args?: any): any {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n // return this.sanitizer.bypassSecurityTrustStyle(style);\n // return this.sanitizer.bypassSecurityTrustXxx(style); - see docs\n }\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Router} from '@angular/router';\nimport {Observable, of, throwError} from 'rxjs';\nimport {catchError} from 'rxjs/operators';\nimport {AuthService} from './auth.service';\nimport {environment} from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\n\n// based on https://stackoverflow.com/questions/46017245/how-to-handle-unauthorized-requestsstatus-with-401-or-403-with-new-httpclient\nexport class AuthInterceptorService implements HttpInterceptor {\n\n constructor(private authService: AuthService, private router: Router) { }\n\n private handleAuthError(err: HttpErrorResponse): Observable {\n //handle your auth error or rethrow\n if (err.status === 401 || err.status === 403) {\n //navigate /delete cookies or whatever\n this.authService.Signout()\n this.router.navigateByUrl(`/auth/signin`);\n // if you've caught / handled the error, you don't want to rethrow it unless you also want downstream consumers to have to handle it as well.\n return of(err.message); // or EMPTY may be appropriate here\n }\n return throwError(err);\n }\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n\n console.log(\"Intercepting Request\", req)\n\n //only intercept requests to the fasten API & lighthouse, all other requests should be sent as-is\n let reqUrl = new URL(req.url)\n let lighthouseUrl = new URL(environment.lighthouse_api_endpoint_base)\n let apiUrl = new URL(environment.connect_api_endpoint_base)\n\n if(\n !((reqUrl.origin == apiUrl.origin && reqUrl.pathname.startsWith(apiUrl.pathname)) ||\n (reqUrl.origin == lighthouseUrl.origin && reqUrl.pathname.startsWith(lighthouseUrl.pathname)))\n ){\n return next.handle(req)\n }\n\n // Clone the request and ensure that cookies are sent\n const authReq = req.clone({withCredentials: true});\n // catch the error, make specific functions for catching specific errors and you can chain through them with more catch operators\n return next.handle(authReq).pipe(catchError(x=> this.handleAuthError(x))); //here use an arrow function, otherwise you may get \"Cannot read property 'navigate' of undefined\" on angular 4.4.2/net core 2/webpack 2.70\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {VaultProfile} from '../models/fasten/vaultProfile';\nimport {environment} from '../../environments/environment';\nimport {HttpClient} from '@angular/common/http';\nimport {ResponseWrapper} from '../models/response-wrapper';\nimport {BehaviorSubject} from 'rxjs';\nimport * as jose from 'jose'\nimport {VaultConfigService} from './vault-config.service';\nimport {ORG_CREDENTIAL_PUBLIC_ID} from '../app.constants';\n\nexport const FASTEN_AUTH_VAULT_COOKIE_NAME = 'fasten_connect_auth_vault'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n\n public IsAuthenticatedSubject = new BehaviorSubject(false)\n\n constructor(private _httpClient: HttpClient, private vaultConfigService: VaultConfigService) {}\n\n\n\n\n public async VaultAuthBegin(email: string): Promise {\n let resp = await this._httpClient.post(`${environment.connect_api_endpoint_base}/bridge/vault_auth_begin`, {\n \"email\": email,\n }, { withCredentials: true, params: {\"public_id\": ORG_CREDENTIAL_PUBLIC_ID} }).toPromise()\n return resp\n }\n\n public async VaultAuthFinish(email: string, code: string): Promise {\n let resp = await this._httpClient.post(`${environment.connect_api_endpoint_base}/bridge/vault_auth_finish`, {\n \"email\": email,\n \"code\": code\n }, { withCredentials: true, params: {\"public_id\": ORG_CREDENTIAL_PUBLIC_ID} }).toPromise()\n return resp\n }\n\n public async Signout(): Promise {\n this.publishAuthenticationState(false)\n return this.deleteCookie(FASTEN_AUTH_VAULT_COOKIE_NAME)\n // // let remotePouchDb = new PouchDB(this.getRemoteUserDb(localStorage.getItem(\"current_user\")), {skip_setup: true});\n // if(this.pouchDb){\n // await this.pouchDb.logOut()\n // }\n // await this.Close()\n }\n\n\n public async GetJWTPayload(): Promise {\n let authToken = this.getCookie(FASTEN_AUTH_VAULT_COOKIE_NAME)\n if (!authToken) {\n return null\n }\n let jwks = jose.createRemoteJWKSet(new URL(environment.jwks_uri))\n let issuerHost = environment.connect_api_jwt_issuer_host\n\n try {\n //audience and issuer must be the same. This token is only valid on the fasten connect api\n const {payload, protectedHeader} = await jose.jwtVerify(authToken, jwks, {\n issuer: issuerHost,\n audience: issuerHost,\n })\n // @ts-ignore\n this.vaultConfigService.config = {user: payload}\n return payload\n } catch (e) {\n console.error(\"failed to verify jwt:\", e, issuerHost)\n return null\n }\n }\n\n public async IsAuthenticated(): Promise {\n let payload = await this.GetJWTPayload()\n let isAuthenticated = payload != null\n this.publishAuthenticationState(isAuthenticated)\n return isAuthenticated\n }\n\n //https://stackoverflow.com/questions/34298133/angular-cookies\n private getCookie(name: string): string {\n const ca: Array = decodeURIComponent(document.cookie).split(';');\n const caLen: number = ca.length;\n const cookieName = `${name}=`;\n let c: string;\n\n for (let i = 0; i < caLen; i += 1) {\n c = ca[i].replace(/^\\s+/g, '');\n if (c.indexOf(cookieName) === 0) {\n return c.substring(cookieName.length, c.length);\n }\n }\n return '';\n }\n\n private deleteCookie(name: string) {\n this.setCookie(name, '', -99999); // - 1 was not far back enough to actually remove the cookie, this sets the time before the epoch and will cause the cookie to be deleted.\n }\n private setCookie(name: string, value: string, expireDays: number, path: string = '') {\n const d: Date = new Date();\n d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000);\n const expires = `expires=${d.toUTCString()}`;\n const cpath = path ? `; path=${path}` : '';\n document.cookie = `${name}=${value}; ${expires}${cpath}; SameSite=Lax`;\n }\n\n private publishAuthenticationState(authenticated: boolean){\n if(this.IsAuthenticatedSubject.value != authenticated){\n this.IsAuthenticatedSubject.next(authenticated)\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {VaultConfig, vaultConfigDefaults} from '../models/vault-config';\nimport {merge} from 'lodash';\nimport {ApiMode} from '../app.constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VaultConfigService {\n //TODO: there should be 3 types of \"config\" settings:\n // 1. Service settings\n // - apiMode\n // - organization information\n // - org credential information\n // - reconnect id.\n // 2. User settings\n // - user token/cookie data\n // - vault profile\n // - current connected patient auth's\n // - (FUTURE) potential patient auths?\n // 3. Search settings\n // - search filters\n // - selected brand\n // -\n\n\n\n\n // Private\n public ConfigSubject: BehaviorSubject;\n private _defaultConfig: VaultConfig;\n constructor() {\n this._defaultConfig = vaultConfigDefaults\n this.ConfigSubject = new BehaviorSubject(this._defaultConfig);\n }\n\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Setter & getter for config\n */\n set config(value: VaultConfig) {\n // get the current config, merge the new values, and then submit.\n const mergedSettings = merge({}, this.ConfigSubject.getValue(), value);\n\n // Store the value\n if(JSON.stringify(mergedSettings) !== JSON.stringify(this.ConfigSubject.getValue())){\n console.log('updating settings:', mergedSettings)\n this.ConfigSubject.next(mergedSettings);\n }\n }\n\n get config$(): VaultConfig {\n console.log('using cached settings:', this.ConfigSubject.getValue())\n return this.ConfigSubject.getValue()\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Resets the config to the default\n */\n reset(): void {\n // Set the config\n this.config = this._defaultConfig\n }\n\n toggleApiMode(): void {\n this.config = {\n apiMode: this.config$.apiMode === 'live' ? ApiMode.Test : ApiMode.Live\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ResponseWrapper } from '../models/response-wrapper';\nimport { environment } from '../../environments/environment';\nimport { Organization } from '../models/fasten/organization';\nimport { ApiMode } from '../app.constants';\nimport { OrganizationCredential } from '../models/fasten/organization-credential';\nimport { VaultProfile } from \"../models/fasten/vaultProfile\";\nimport {catchError, concatMap, filter, first, fromEvent, map, Observable, of, throwError, timeout} from 'rxjs';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport {ORG_CREDENTIAL_PUBLIC_ID} from '../app.constants';\nimport {SearchFilter} from '../models/search-filter';\nimport {LighthouseSourceSearch} from '../models/lighthouse/lighthouse-source-search';\n\nexport const ConnectWindowTimeout = 2*60*1000 //wait 2 minutes (in milliseconds)\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VaultService {\n\n constructor(\n private _httpClient: HttpClient,\n private deviceService: DeviceDetectorService\n ) { }\n\n\n\n\n // public verificationWithPopup(publicId: string, brandId: string, portalId: string, endpointId: string, reconnectOrgConnectionId?: string, connectMode?: ConnectMode, externalId?: string, externalState?: string): Observable {\n public verificationWithPopup(): Observable {\n //todo, this should use a bridge/connect or vault endpoint\n\n const redirectUrl = new URL(`${environment.connect_api_endpoint_base}/bridge/identity_verification/connect`);\n redirectUrl.searchParams.set(\"public_id\", ORG_CREDENTIAL_PUBLIC_ID);\n\n\n const isDesktop = this.deviceService.isDesktop();\n var features = \"\"\n if(isDesktop){\n //add optons for window.open, popup only for desktop (mobile and table will open a new tab)\n features = \"popup=true,width=700,height=600\"\n }\n\n //open a external url in a new window\n let openedWindow = window.open(redirectUrl.toString(), \"_blank\");\n\n return this.waitForOrgConnectionOrTimeout(openedWindow!)\n }\n\n\n\n //This function must be \".subscribed()\" to work. If not, the handler will not be registered and messages will be ignored.\n private waitForOrgConnectionOrTimeout(openedWindow: Window): Observable {\n console.log(`waiting for postMessage notification from popup window`)\n\n //new code to listen to post message\n return fromEvent(window, 'message')\n .pipe(\n //throw an error if we wait more than 2 minutes (this will close the window)\n timeout(ConnectWindowTimeout) as any,\n //make sure we're only listening to events from the \"opened\" window.\n filter((event: MessageEvent) => event.source == openedWindow),\n //after filtering, we should only have one event to handle.\n first(),\n map((event: any) => {\n console.log(`received postMessage notification from popup window & sending acknowledgment`)\n // @ts-ignore\n event.source.postMessage(JSON.stringify({close:true}), event.origin);\n console.log(\"postmessage data\", event.data)\n return JSON.parse(event.data)\n }),\n catchError((err) => {\n console.warn(`timed out waiting for notification from popup (${ConnectWindowTimeout/1000}s), closing window`)\n openedWindow.self.close()\n return throwError(err)\n })\n )\n }\n\n public getRecordLocator(): Observable {\n return this._httpClient.get(`${environment.connect_api_endpoint_base}/bridge/record_locator`, {params: {\"public_id\": ORG_CREDENTIAL_PUBLIC_ID}})\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Record Locator Response\", response)\n return response.data as Organization;\n })\n );\n }\n\n public searchCatalogBrands(apiMode: ApiMode, filter: SearchFilter): Observable {\n if((typeof filter.searchAfter === 'string' || filter.searchAfter instanceof String) && (filter.searchAfter as string).length > 0){\n filter.searchAfter = (filter.searchAfter as string).split(',')\n } else {\n filter.searchAfter = []\n }\n const endpointUrl = new URL(`${environment.connect_api_endpoint_base}/bridge/catalog/search`);\n\n return this._httpClient.post(endpointUrl.toString(), filter, {params: {\n 'api_mode': apiMode\n }})\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Metadata RESPONSE\", response)\n return response.data as LighthouseSourceSearch\n })\n );\n }\n\n\n //OLD code\n\n\n public updateUser(oldPass: string, oldEmail: string, newEmail: string, newPass: string = \"\"): Observable {\n const userUpdateJson = JSON.stringify({\n email: oldEmail,\n password: oldPass,\n newEmail: newEmail,\n newPassword: newPass\n });\n return this._httpClient.put(`${environment.connect_api_endpoint_base}/user`, userUpdateJson)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Updated User\", response)\n\n return response.data as VaultProfile;\n })\n );\n }\n\n /**\n * Create a new organization and associate it with the current User\n * @param newOrg\n * @param logoBlob\n * @constructor\n */\n public createOrg(newOrg: Organization, logoBlob: Blob): Observable {\n const formData = new FormData();\n\n //add the org data to the form data\n const orgJson = JSON.stringify(newOrg);\n const orgJsonBlob = new Blob([orgJson], {\n type: 'application/json'\n });\n formData.append(\"org\", orgJsonBlob);\n formData.append(\"logo\", logoBlob);\n\n let resp = this._httpClient.post(`${environment.connect_api_endpoint_base}/org`, formData)\n console.log(resp)\n return resp\n }\n\n\n public updateOrg(orgId: string, updateOrg: Organization, logoBlob?: Blob | null): Observable {\n const formData = new FormData();\n\n //add the org data to the form data\n const orgJson = JSON.stringify(updateOrg);\n const orgJsonBlob = new Blob([orgJson], {\n type: 'application/json'\n });\n formData.append(\"org\", orgJsonBlob);\n if (logoBlob) {\n formData.append(\"logo\", logoBlob);\n }\n return this._httpClient.put(`${environment.connect_api_endpoint_base}/org/${orgId}`, formData)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Updated Organization\", response)\n return response.data as Organization;\n })\n );\n }\n\n public getOrg(orgId: String): Observable {\n return this._httpClient.get(`${environment.connect_api_endpoint_base}/org/${orgId}`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization\", response)\n return response.data as Organization;\n })\n );\n }\n\n public sendOrgInvite(orgId: string, recipientEmail: string): Observable {\n return this._httpClient.post(`${environment.connect_api_endpoint_base}/org/${orgId}/invite`, {\n recipient_email_address: recipientEmail,\n org_id: orgId\n })\n }\n\n // public createOrgCredentials(orgId: string, apiMode: ApiMode, redirectUrl: string, note: string): Observable<{ action: CRUDMode, org_credential: OrganizationCredential, private_key: string }> {\n // return this._httpClient.post(`${environment.connect_api_endpoint_base}/org/${orgId}/credentials`, {\n // api_mode: apiMode,\n // redirect_uri: redirectUrl,\n // note: note\n // })\n // .pipe(\n // map((response: ResponseWrapper) => {\n // console.log(\"Organization Credential\", response)\n // response.data.action = CRUDMode.Create\n // return response.data as { action: CRUDMode, org_credential: OrganizationCredential, private_key: string };\n // })\n // );\n // }\n\n public getOrgCredentials(orgId: string): Observable {\n return this._httpClient.get(`${environment.connect_api_endpoint_base}/org/${orgId}/credentials`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization Credentials\", response)\n return response.data as OrganizationCredential[];\n })\n );\n }\n\n\n\n\n\n\n\n\n\n}\n","export const environment = {\n name: \"development\",\n\n //specify the lighthouse base that we're going to use to authenticate against all our source/providers. Must not have trailing slash\n lighthouse_api_endpoint_base: 'https://lighthouse.fastenhealth.com',\n\n //used to specify the api server that we're going to use (can be relative or absolute). Must not have trailing slash\n // connect_api_endpoint_base: 'https://api.connect-dev.fastenhealth.com/v1',\n // if relative, must start with /\n connect_api_endpoint_base: 'https://api.connect-dev.fastenhealth.com/v1',\n connect_api_jwt_issuer_host: 'https://api.connect-dev.fastenhealth.com/v1',\n\n jwks_uri: 'https://cdn.fastenhealth.com/jwks/fasten-connect/dev.json',\n\n //Stripe pricing table (Test mode in Dev)\n stripe_customer_portal: 'https://billing.stripe.com/p/login/test_bIY7thbZL5g6gXC000'\n // stripe_customer_portal: 'https://billing.stripe.com/p/login/dR6aEYe5h4AYe2I144'\n};\n","// this file is automatically generated by git.version.ts script\nexport const versionInfo = {\n version: 'dev',\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.name != \"local\") {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","var map = {\n\t\"./af\": 8685,\n\t\"./af.js\": 8685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 2614,\n\t\"./ar-kw.js\": 2614,\n\t\"./ar-ly\": 8630,\n\t\"./ar-ly.js\": 8630,\n\t\"./ar-ma\": 8674,\n\t\"./ar-ma.js\": 8674,\n\t\"./ar-ps\": 6235,\n\t\"./ar-ps.js\": 6235,\n\t\"./ar-sa\": 9032,\n\t\"./ar-sa.js\": 9032,\n\t\"./ar-tn\": 4730,\n\t\"./ar-tn.js\": 4730,\n\t\"./ar.js\": 254,\n\t\"./az\": 3052,\n\t\"./az.js\": 3052,\n\t\"./be\": 150,\n\t\"./be.js\": 150,\n\t\"./bg\": 3069,\n\t\"./bg.js\": 3069,\n\t\"./bm\": 3466,\n\t\"./bm.js\": 3466,\n\t\"./bn\": 8516,\n\t\"./bn-bd\": 557,\n\t\"./bn-bd.js\": 557,\n\t\"./bn.js\": 8516,\n\t\"./bo\": 6273,\n\t\"./bo.js\": 6273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 9815,\n\t\"./bs.js\": 9815,\n\t\"./ca\": 3331,\n\t\"./ca.js\": 3331,\n\t\"./cs\": 1320,\n\t\"./cs.js\": 1320,\n\t\"./cv\": 2219,\n\t\"./cv.js\": 2219,\n\t\"./cy\": 8266,\n\t\"./cy.js\": 8266,\n\t\"./da\": 6427,\n\t\"./da.js\": 6427,\n\t\"./de\": 7435,\n\t\"./de-at\": 2871,\n\t\"./de-at.js\": 2871,\n\t\"./de-ch\": 2994,\n\t\"./de-ch.js\": 2994,\n\t\"./de.js\": 7435,\n\t\"./dv\": 2357,\n\t\"./dv.js\": 2357,\n\t\"./el\": 5649,\n\t\"./el.js\": 5649,\n\t\"./en-au\": 9961,\n\t\"./en-au.js\": 9961,\n\t\"./en-ca\": 9878,\n\t\"./en-ca.js\": 9878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 864,\n\t\"./en-ie.js\": 864,\n\t\"./en-il\": 1579,\n\t\"./en-il.js\": 1579,\n\t\"./en-in\": 940,\n\t\"./en-in.js\": 940,\n\t\"./en-nz\": 6181,\n\t\"./en-nz.js\": 6181,\n\t\"./en-sg\": 4301,\n\t\"./en-sg.js\": 4301,\n\t\"./eo\": 5291,\n\t\"./eo.js\": 5291,\n\t\"./es\": 4529,\n\t\"./es-do\": 3764,\n\t\"./es-do.js\": 3764,\n\t\"./es-mx\": 2584,\n\t\"./es-mx.js\": 2584,\n\t\"./es-us\": 3425,\n\t\"./es-us.js\": 3425,\n\t\"./es.js\": 4529,\n\t\"./et\": 5203,\n\t\"./et.js\": 5203,\n\t\"./eu\": 678,\n\t\"./eu.js\": 678,\n\t\"./fa\": 3483,\n\t\"./fa.js\": 3483,\n\t\"./fi\": 6262,\n\t\"./fi.js\": 6262,\n\t\"./fil\": 2521,\n\t\"./fil.js\": 2521,\n\t\"./fo\": 4555,\n\t\"./fo.js\": 4555,\n\t\"./fr\": 3131,\n\t\"./fr-ca\": 8239,\n\t\"./fr-ca.js\": 8239,\n\t\"./fr-ch\": 1702,\n\t\"./fr-ch.js\": 1702,\n\t\"./fr.js\": 3131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 3821,\n\t\"./ga.js\": 3821,\n\t\"./gd\": 1753,\n\t\"./gd.js\": 1753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 2762,\n\t\"./gom-deva.js\": 2762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 2809,\n\t\"./gu.js\": 2809,\n\t\"./he\": 5402,\n\t\"./he.js\": 5402,\n\t\"./hi\": 3435,\n\t\"./hi.js\": 3435,\n\t\"./hr\": 410,\n\t\"./hr.js\": 410,\n\t\"./hu\": 8288,\n\t\"./hu.js\": 8288,\n\t\"./hy-am\": 7928,\n\t\"./hy-am.js\": 7928,\n\t\"./id\": 1334,\n\t\"./id.js\": 1334,\n\t\"./is\": 6959,\n\t\"./is.js\": 6959,\n\t\"./it\": 4864,\n\t\"./it-ch\": 1124,\n\t\"./it-ch.js\": 1124,\n\t\"./it.js\": 4864,\n\t\"./ja\": 6141,\n\t\"./ja.js\": 6141,\n\t\"./jv\": 9187,\n\t\"./jv.js\": 9187,\n\t\"./ka\": 2136,\n\t\"./ka.js\": 2136,\n\t\"./kk\": 4332,\n\t\"./kk.js\": 4332,\n\t\"./km\": 8607,\n\t\"./km.js\": 8607,\n\t\"./kn\": 4305,\n\t\"./kn.js\": 4305,\n\t\"./ko\": 234,\n\t\"./ko.js\": 234,\n\t\"./ku\": 6003,\n\t\"./ku-kmr\": 9619,\n\t\"./ku-kmr.js\": 9619,\n\t\"./ku.js\": 6003,\n\t\"./ky\": 5061,\n\t\"./ky.js\": 5061,\n\t\"./lb\": 2786,\n\t\"./lb.js\": 2786,\n\t\"./lo\": 6183,\n\t\"./lo.js\": 6183,\n\t\"./lt\": 29,\n\t\"./lt.js\": 29,\n\t\"./lv\": 4169,\n\t\"./lv.js\": 4169,\n\t\"./me\": 8577,\n\t\"./me.js\": 8577,\n\t\"./mi\": 8177,\n\t\"./mi.js\": 8177,\n\t\"./mk\": 337,\n\t\"./mk.js\": 337,\n\t\"./ml\": 5260,\n\t\"./ml.js\": 5260,\n\t\"./mn\": 2325,\n\t\"./mn.js\": 2325,\n\t\"./mr\": 4695,\n\t\"./mr.js\": 4695,\n\t\"./ms\": 5334,\n\t\"./ms-my\": 7151,\n\t\"./ms-my.js\": 7151,\n\t\"./ms.js\": 5334,\n\t\"./mt\": 3570,\n\t\"./mt.js\": 3570,\n\t\"./my\": 7963,\n\t\"./my.js\": 7963,\n\t\"./nb\": 8028,\n\t\"./nb.js\": 8028,\n\t\"./ne\": 6638,\n\t\"./ne.js\": 6638,\n\t\"./nl\": 302,\n\t\"./nl-be\": 5569,\n\t\"./nl-be.js\": 5569,\n\t\"./nl.js\": 302,\n\t\"./nn\": 3501,\n\t\"./nn.js\": 3501,\n\t\"./oc-lnc\": 563,\n\t\"./oc-lnc.js\": 563,\n\t\"./pa-in\": 869,\n\t\"./pa-in.js\": 869,\n\t\"./pl\": 5302,\n\t\"./pl.js\": 5302,\n\t\"./pt\": 9687,\n\t\"./pt-br\": 4884,\n\t\"./pt-br.js\": 4884,\n\t\"./pt.js\": 9687,\n\t\"./ro\": 9107,\n\t\"./ro.js\": 9107,\n\t\"./ru\": 3627,\n\t\"./ru.js\": 3627,\n\t\"./sd\": 355,\n\t\"./sd.js\": 355,\n\t\"./se\": 3427,\n\t\"./se.js\": 3427,\n\t\"./si\": 1848,\n\t\"./si.js\": 1848,\n\t\"./sk\": 4590,\n\t\"./sk.js\": 4590,\n\t\"./sl\": 184,\n\t\"./sl.js\": 184,\n\t\"./sq\": 6361,\n\t\"./sq.js\": 6361,\n\t\"./sr\": 8965,\n\t\"./sr-cyrl\": 1287,\n\t\"./sr-cyrl.js\": 1287,\n\t\"./sr.js\": 8965,\n\t\"./ss\": 5456,\n\t\"./ss.js\": 5456,\n\t\"./sv\": 451,\n\t\"./sv.js\": 451,\n\t\"./sw\": 7558,\n\t\"./sw.js\": 7558,\n\t\"./ta\": 1356,\n\t\"./ta.js\": 1356,\n\t\"./te\": 3693,\n\t\"./te.js\": 3693,\n\t\"./tet\": 1243,\n\t\"./tet.js\": 1243,\n\t\"./tg\": 2500,\n\t\"./tg.js\": 2500,\n\t\"./th\": 5768,\n\t\"./th.js\": 5768,\n\t\"./tk\": 7761,\n\t\"./tk.js\": 7761,\n\t\"./tl-ph\": 5780,\n\t\"./tl-ph.js\": 5780,\n\t\"./tlh\": 9590,\n\t\"./tlh.js\": 9590,\n\t\"./tr\": 3807,\n\t\"./tr.js\": 3807,\n\t\"./tzl\": 3857,\n\t\"./tzl.js\": 3857,\n\t\"./tzm\": 654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 654,\n\t\"./ug-cn\": 845,\n\t\"./ug-cn.js\": 845,\n\t\"./uk\": 9232,\n\t\"./uk.js\": 9232,\n\t\"./ur\": 7052,\n\t\"./ur.js\": 7052,\n\t\"./uz\": 7967,\n\t\"./uz-latn\": 2233,\n\t\"./uz-latn.js\": 2233,\n\t\"./uz.js\": 7967,\n\t\"./vi\": 8615,\n\t\"./vi.js\": 8615,\n\t\"./x-pseudo\": 2320,\n\t\"./x-pseudo.js\": 2320,\n\t\"./yo\": 1313,\n\t\"./yo.js\": 1313,\n\t\"./zh-cn\": 4490,\n\t\"./zh-cn.js\": 4490,\n\t\"./zh-hk\": 5910,\n\t\"./zh-hk.js\": 5910,\n\t\"./zh-mo\": 8262,\n\t\"./zh-mo.js\": 8262,\n\t\"./zh-tw\": 4223,\n\t\"./zh-tw.js\": 4223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6700;"],"names":["ActivatedRouteSnapshot","RouterStateSnapshot","Router","IsAuthenticatedAuthGuard","constructor","authService","router","canActivate","route","state","_this","_asyncToGenerator","jwtPayload","GetJWTPayload","navigate","has_verified_identity","console","log","i0","ɵɵinject","i1","AuthService","i2","factory","ɵfac","environment","BehaviorSubject","jose","ORG_CREDENTIAL_PUBLIC_ID","FASTEN_AUTH_VAULT_COOKIE_NAME","_httpClient","vaultConfigService","IsAuthenticatedSubject","VaultAuthBegin","email","resp","post","connect_api_endpoint_base","withCredentials","params","toPromise","VaultAuthFinish","code","_this2","Signout","_this3","publishAuthenticationState","deleteCookie","_this4","authToken","getCookie","jwks","createRemoteJWKSet","URL","jwks_uri","issuerHost","connect_api_jwt_issuer_host","payload","protectedHeader","jwtVerify","issuer","audience","config","user","e","error","IsAuthenticated","_this5","isAuthenticated","name","ca","decodeURIComponent","document","cookie","split","caLen","length","cookieName","c","i","replace","indexOf","substring","setCookie","value","expireDays","path","d","Date","setTime","getTime","expires","toUTCString","cpath","authenticated","next","HttpClient","VaultConfigService","providedIn"],"sourceRoot":"webpack:///","x_google_ignoreList":[41]}
\ No newline at end of file
+{"version":3,"file":"main.js","mappings":"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WAAW,GAAG;IACzB,OAAO,EAAE,KAAK;CACf,CAAC;;;;;;;;;;;;;;;;;;ACH6C;AAGF;AACY;AAEzD,IAAI,uEAAgB,IAAI,OAAO,EAAE;IAC/B,6DAAc,EAAE,CAAC;CAClB;AAED,wEAAwB,CAAC,eAAe,CAAC,sDAAS,CAAC;KAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;;;;;;;;;;ACXpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.constants.ts","./src/app/app.module.ts","./src/app/auth-guards/is-authenticated-auth-guard.ts","./src/app/components/footer/footer.component.ts","./src/app/components/footer/footer.component.html","./src/app/components/header/header.component.ts","./src/app/components/header/header.component.html","./src/app/models/fasten/vaultProfile.ts","./src/app/models/search-filter.ts","./src/app/models/vault-config.ts","./src/app/pages/complete/complete.component.ts","./src/app/pages/complete/complete.component.html","./src/app/pages/dashboard/dashboard.component.ts","./src/app/pages/dashboard/dashboard.component.html","./src/app/pages/form-request-health-system/form-request-health-system.component.ts","./src/app/pages/form-request-health-system/form-request-health-system.component.html","./src/app/pages/form-support-request/form-support-request.component.ts","./src/app/pages/form-support-request/form-support-request.component.html","./src/app/pages/health-system-brand-details/health-system-brand-details.component.ts","./src/app/pages/health-system-brand-details/health-system-brand-details.component.html","./src/app/pages/health-system-connecting/health-system-connecting.component.ts","./src/app/pages/health-system-connecting/health-system-connecting.component.html","./src/app/pages/health-system-search/health-system-search.component.ts","./src/app/pages/health-system-search/health-system-search.component.html","./src/app/pages/identity-verification/identity-verification.component.ts","./src/app/pages/identity-verification/identity-verification.component.html","./src/app/pages/vault-profile-signin-code/vault-profile-signin-code.component.ts","./src/app/pages/vault-profile-signin-code/vault-profile-signin-code.component.html","./src/app/pages/vault-profile-signin/vault-profile-signin.component.ts","./src/app/pages/vault-profile-signin/vault-profile-signin.component.html","./src/app/pipes/safe-html.pipe.ts","./src/app/services/auth-interceptor.service.ts","./src/app/services/auth.service.ts","./src/app/services/config.service.ts","./src/app/services/vault.service.ts","./src/environments/environment.dev.ts","./src/environments/versions.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport {DashboardComponent} from './pages/dashboard/dashboard.component';\nimport {VaultProfileSigninComponent} from './pages/vault-profile-signin/vault-profile-signin.component';\nimport {IsAuthenticatedAuthGuard} from './auth-guards/is-authenticated-auth-guard';\nimport {VaultProfileSigninCodeComponent} from './pages/vault-profile-signin-code/vault-profile-signin-code.component';\nimport {IdentityVerificationComponent} from './pages/identity-verification/identity-verification.component';\nimport {HealthSystemSearchComponent} from './pages/health-system-search/health-system-search.component';\nimport {\n HealthSystemBrandDetailsComponent\n} from './pages/health-system-brand-details/health-system-brand-details.component';\nimport {\n FormRequestHealthSystemComponent\n} from './pages/form-request-health-system/form-request-health-system.component';\nimport {FormSupportRequestComponent} from './pages/form-support-request/form-support-request.component';\nimport {HealthSystemConnectingComponent} from './pages/health-system-connecting/health-system-connecting.component';\nimport {CompleteComponent} from './pages/complete/complete.component';\n\nconst routes: Routes = [\n\n { path: 'auth/signin', component: VaultProfileSigninComponent },\n { path: 'auth/signin/code', component: VaultProfileSigninCodeComponent },\n { path: 'auth/identity-verification', component: IdentityVerificationComponent },\n\n { path: '', redirectTo: '/auth/signin', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent, canActivate: [ IsAuthenticatedAuthGuard] },\n { path: 'search', component: HealthSystemSearchComponent },\n { path: 'brand-details', component: HealthSystemBrandDetailsComponent },\n { path: 'form-request', component: FormRequestHealthSystemComponent },\n { path: 'form-support', component: FormSupportRequestComponent },\n { path: 'portal-connecting', component: HealthSystemConnectingComponent },\n { path: 'complete', component: CompleteComponent },\n\n //must be at bottom of list\n { path: '**', redirectTo: 'auth/signin' },\n\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component } from '@angular/core';\nimport {NavigationEnd, Router, RouterEvent} from '@angular/router';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n title = 'fastenhealth';\n\n showHeader:boolean = false;\n showFooter:boolean = true;\n\n constructor(\n private router: Router,\n // private toastService: ToastService,\n private modalService: NgbModal\n ) {}\n\n ngOnInit() {\n\n // navbar backdrop for mobile only\n const navbarBackdrop = document.createElement('div');\n navbarBackdrop.classList.add('az-navbar-backdrop');\n document.querySelector('body')?.appendChild(navbarBackdrop);\n\n //determine if we should show the header\n this.router.events.subscribe(event => this.routerEvent(event));\n }\n\n routerEvent(event: any) {\n if (event instanceof NavigationEnd) {\n //modify header\n if (event.url?.startsWith('/auth') || event.url?.startsWith('/desktop')) {\n this.showHeader = false;\n } else {\n // console.log(\"NU\")\n this.showHeader = true;\n }\n\n // close all open modals when route change\n this.modalService.dismissAll();\n }\n }\n}\n","\n
\n You are using Fasten in test mode\n
\n\n \n
\n","export enum ApiMode {\n Live = 'live',\n Test = 'test',\n}\n\nexport const ORG_CREDENTIAL_PUBLIC_ID = 'public_test_rei2un7aagh5pquwikxh2dsyq23bsdyu4l8vm9eq29ftu'\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n\nimport { fas } from '@fortawesome/free-solid-svg-icons';\nimport { far } from '@fortawesome/free-regular-svg-icons';\nimport {InfiniteScrollModule} from 'ngx-infinite-scroll';\n\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport {FontAwesomeModule, FaIconLibrary} from '@fortawesome/angular-fontawesome';\nimport {HeaderComponent} from './components/header/header.component';\nimport {FooterComponent} from './components/footer/footer.component';\nimport { DashboardComponent } from './pages/dashboard/dashboard.component';\nimport { VaultProfileSigninComponent } from './pages/vault-profile-signin/vault-profile-signin.component';\nimport {IsAuthenticatedAuthGuard} from './auth-guards/is-authenticated-auth-guard';\nimport {Router} from '@angular/router';\nimport {AuthService} from './services/auth.service';\nimport {AuthInterceptorService} from './services/auth-interceptor.service';\nimport {MomentModule} from 'ngx-moment';\nimport { VaultProfileSigninCodeComponent } from './pages/vault-profile-signin-code/vault-profile-signin-code.component';\nimport { CodeInputModule } from 'angular-code-input';\nimport { IdentityVerificationComponent } from './pages/identity-verification/identity-verification.component';\nimport { HealthSystemSearchComponent } from './pages/health-system-search/health-system-search.component';\nimport { HealthSystemBrandDetailsComponent } from './pages/health-system-brand-details/health-system-brand-details.component';\nimport { FormRequestHealthSystemComponent } from './pages/form-request-health-system/form-request-health-system.component';\nimport { FormSupportRequestComponent } from './pages/form-support-request/form-support-request.component';\nimport { HealthSystemConnectingComponent } from './pages/health-system-connecting/health-system-connecting.component';\nimport { CompleteComponent } from './pages/complete/complete.component';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\n\n@NgModule({\n declarations: [\n AppComponent,\n HeaderComponent,\n FooterComponent,\n DashboardComponent,\n VaultProfileSigninComponent,\n VaultProfileSigninCodeComponent,\n IdentityVerificationComponent,\n HealthSystemSearchComponent,\n HealthSystemBrandDetailsComponent,\n FormRequestHealthSystemComponent,\n FormSupportRequestComponent,\n HealthSystemConnectingComponent,\n CompleteComponent,\n SafeHtmlPipe,\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n BrowserModule,\n HttpClientModule,\n AppRoutingModule,\n\n NgbModule,\n FontAwesomeModule,\n MomentModule,\n CodeInputModule,\n InfiniteScrollModule,\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptorService,\n multi: true,\n deps: [AuthService, Router]\n },\n IsAuthenticatedAuthGuard,\n ],\n bootstrap: [AppComponent],\n schemas: [ CUSTOM_ELEMENTS_SCHEMA ]\n})\nexport class AppModule {\n constructor(library: FaIconLibrary) {\n library.addIconPacks(fas, far);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router} from '@angular/router';\nimport {AuthService} from '../services/auth.service';\n\n@Injectable()\nexport class IsAuthenticatedAuthGuard implements CanActivate {\n constructor(private authService: AuthService, private router: Router) {\n\n }\n\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\n let jwtPayload = await this.authService.GetJWTPayload()\n\n //check if the user is authenticated, if not, redirect to login\n if (!jwtPayload) {\n return await this.router.navigate(['/auth/signin']);\n } else if(!jwtPayload.has_verified_identity){\n console.log(\"Profile does not have a verified identity, redirecting to id verification step\", jwtPayload)\n return await this.router.navigate(['/auth/identity-verification']);\n }\n\n\n // continue as normal\n return true\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport {versionInfo} from '../../../environments/versions';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n appVersion: string;\n\n constructor() {\n this.appVersion = versionInfo.version\n }\n\n ngOnInit() {\n }\n\n}\n","\n","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\nimport {Router} from '@angular/router';\nimport {VaultService} from '../../services/vault.service';\nimport {VaultSystemConfig} from '../../models/vault-config';\nimport {ConfigService} from '../../services/config.service';\nimport {Organization} from '../../models/fasten/organization';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n constructor(\n private authService: AuthService,\n private connectService: VaultService,\n public vaultConfigService: ConfigService,\n private router: Router,\n ) { }\n\n ngOnInit() {}\n\n toggleHeaderMenu(event: Event) {\n event.preventDefault();\n document.querySelector('body')?.classList.toggle('az-header-menu-show');\n }\n closeMenu(e: Event) {\n (e.target as HTMLElement).closest('.dropdown')?.classList.remove('show');\n (e.target as HTMLElement).closest('.dropdown .dropdown-menu')?.classList.remove('show');\n }\n\n signOut(event: Event) {\n this.authService.Signout().then(r => {\n return this.router.navigate(['/auth/signin'])\n })\n }\n}\n","\n Test Mode Enabled \n You're using test data. You will only be able to access sandbox accounts. \n
\n\n\n\n","export class VaultProfile {\n id?: string\n name?: string\n email?: string\n password?: string\n org_id?: string\n\n //not sent to the server\n password_confirm?: string = \"\"\n agree_terms?: boolean = false\n}\n","\nexport class SearchFilter {\n //primary search terms (changes here should restart the search completely)\n query: string = \"\"\n\n //secondary search terms/facets (changes here should restart pagination)\n platformTypes: string[] = [];\n categories: string[] = [];\n showHidden: boolean = false;\n\n //pagination - this is the current page (changes here should be ignored)\n searchAfter: string | string[] = '';\n\n fields: string[] = []; //specify the fields to return. if null or empty list, return all.\n}\n","/**\n * AppConfig interface. Update this interface to strictly type your config\n * object.\n */\nimport {ApiMode} from '../app.constants';\nimport {Organization} from './fasten/organization';\nimport {VaultProfile} from './fasten/vaultProfile';\nimport {SearchFilter} from './search-filter';\nimport {LighthouseBrandListDisplayItem} from './lighthouse/lighthouse-source-search';\n\nexport interface VaultSystemConfig {\n apiMode?: ApiMode;\n org?: Organization;\n org_id?: string\n reconnectOrgConnectionId?: string;\n}\n\nexport interface VaultProfileConfig {\n vaultProfile?: VaultProfile;\n // current connected patient auth's\n // (FUTURE) potential patient auths?\n}\n\nexport interface VaultSearchConfig {\n searchFilter?: SearchFilter\n selectedBrand?: LighthouseBrandListDisplayItem\n}\n\n// - apiMode\n// - organization information\n// - org credential information\n// - reconnect id.\n\n/**\n * Default configuration for the entire application. This object is used by\n * \"PortalConfigService\" to set the default configuration.\n */\nexport const vaultConfigDefaults: VaultSystemConfig = {\n apiMode: ApiMode.Test\n};\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-complete',\n templateUrl: './complete.component.html',\n styleUrls: ['./complete.component.scss']\n})\nexport class CompleteComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n
\n
fasten \n \n\n
\n\n
\n
Success! \n
\n Your health records have been successfully linked with Acme Labs.\n You can now close this window.\n
\n
\n\n
\n Close\n \n
\n\n","import {Component, OnInit} from '@angular/core';\nimport {VaultService} from '../../services/vault.service';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss']\n})\nexport class DashboardComponent implements OnInit {\n\n\n constructor(\n private vaultService: VaultService,\n ) { }\n\n ngOnInit(): void {\n this.vaultService.getRecordLocator().subscribe((result)=>{\n console.log(\"record locator\", result)\n })\n }\n}\n","\n
\n
fasten \n \n\n
\n
Select Health Systems \n
\n Choose the health systems you'd like to connect\n
\n
\n\n \n
\n\n
\n\n \n
\n \n
\n \n \n
Connect a new health system \n
\n \n \n \n \n\n
\n
\n
\n
Your medical records are secure \n
\n
\n Continue\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-form-request-health-system',\n templateUrl: './form-request-health-system.component.html',\n styleUrls: ['./form-request-health-system.component.scss']\n})\nexport class FormRequestHealthSystemComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-form-support-request',\n templateUrl: './form-support-request.component.html',\n styleUrls: ['./form-support-request.component.scss']\n})\nexport class FormSupportRequestComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-health-system-brand-details',\n templateUrl: './health-system-brand-details.component.html',\n styleUrls: ['./health-system-brand-details.component.scss']\n})\nexport class HealthSystemBrandDetailsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n
\n
\n \n \n \n \n
fasten \n
\n\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n\n
\n
\n\n \n
\n
\n
\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-health-system-connecting',\n templateUrl: './health-system-connecting.component.html',\n styleUrls: ['./health-system-connecting.component.scss']\n})\nexport class HealthSystemConnectingComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n
\n\n\n
\n
\n
\n
\n
\n\n
\n
\n
\n\n
\n
\n
Redirecting to sign in...
\n
\n
\n
\n
\n","import {Component, Input, OnInit} from '@angular/core';\nimport {SourceListItem} from '../../models/source-list-item';\nimport {\n LighthouseBrandListDisplayItem,\n LighthouseSourceSearch,\n LighthouseSourceSearchAggregation\n} from '../../models/lighthouse/lighthouse-source-search';\nimport {Observable, of} from 'rxjs';\nimport {SearchFilter} from '../../models/search-filter';\nimport {VaultService} from '../../services/vault.service';\nimport {ApiMode} from '../../app.constants';\nimport {ConfigService} from '../../services/config.service';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'app-health-system-search',\n templateUrl: './health-system-search.component.html',\n styleUrls: ['./health-system-search.component.scss']\n})\nexport class HealthSystemSearchComponent implements OnInit {\n loading = false;\n lighthouseBrandList: SourceListItem[] = []\n\n filter: SearchFilter = new SearchFilter()\n\n //limits that are tied to the current result set.\n resultLimits: {\n totalItems: number,\n scrollComplete: boolean,\n platformTypesBuckets: LighthouseSourceSearchAggregation | undefined,\n categoryBuckets: LighthouseSourceSearchAggregation | undefined,\n } = {\n totalItems: 0,\n scrollComplete: false,\n platformTypesBuckets: undefined,\n categoryBuckets: undefined\n }\n\n constructor(\n public vaultServiceApi: VaultService,\n public configService: ConfigService,\n public router: Router\n ) { }\n\n ngOnInit(): void {\n this.querySources(true)\n }\n\n public querySources(reset: boolean): Observable {\n if(reset){\n this.resetSearch()\n }\n\n console.log(\"querySources()\", this.filter)\n if(this.loading){\n console.log(\"already loading, ignoring querySources()\")\n return of(null)\n }\n //TODO: pass filter to function.\n // this.location.replaceState('/dashboard','', this.filter)\n\n if(!this.filter){\n this.filter = new SearchFilter()\n console.log(\"querySources() - no filter provided, using current form value\", this.filter)\n }\n\n\n this.filter.fields = [\"*\"];\n this.loading = true\n var searchObservable = this.vaultServiceApi.searchCatalogBrands(this.configService.systemConfig$.apiMode!, this.filter);\n searchObservable.subscribe(wrapper => {\n console.log(\"search sources\", wrapper);\n // this.searchResults = wrapper.hits.hits;\n this.resultLimits.totalItems = wrapper?.hits?.total.value || 0;\n\n this.lighthouseBrandList = this.lighthouseBrandList.concat((wrapper?.hits?.hits || []).map((result) => {\n return {\n brand: result._source,\n searchHighlights: result?.highlight?.aliases || []\n }\n }))\n\n //check if scroll is complete.\n if(!wrapper?.hits || !wrapper?.hits?.hits || wrapper?.hits?.hits?.length == 0 || wrapper?.hits?.total?.value == wrapper?.hits?.hits?.length){\n console.log(\"SCROLL_COMPLETE!@@@@@@@@\")\n this.resultLimits.scrollComplete = true;\n } else {\n //change the current Page (but don't cause a new query)\n console.log(\"SETTING NEXT SORT KEY:\", wrapper.hits.hits[wrapper.hits.hits.length - 1].sort.join(','))\n this.filter.searchAfter = wrapper.hits.hits[wrapper.hits.hits.length - 1].sort.join(\",\")\n }\n this.loading = false\n },\n error => {\n this.loading = false\n console.error(\"sources FAILED\", error)\n },\n () => {\n this.loading = false\n console.log(\"sources finished\")\n }\n );\n return searchObservable;\n }\n\n onScroll() {\n if(!this.resultLimits.scrollComplete) {\n this.querySources(false)\n }\n }\n\n private resetSearch(){\n console.log(\"reset search...\")\n this.lighthouseBrandList = []\n this.filter.searchAfter = []\n this.resultLimits = {\n totalItems: 0,\n scrollComplete: false,\n platformTypesBuckets: undefined,\n categoryBuckets: undefined\n }\n }\n\n public selectBrand(brandItem?: LighthouseBrandListDisplayItem){\n\n this.configService.searchConfig$.selectedBrand = brandItem\n this.router.navigate(['/brand-details'])\n // this.messageBus.componentNavigationSubject.next({\n // page: ComponentNavPage.PortalConnect,\n // title: brandItem.name,\n // data: brandItem,\n // } as ComponentNavigationEvent)\n }\n}\n","\n\n
\n
\n \n \n \n \n
fasten \n
\n\n
\n
\n \n
\n
\n \n \n \n \n
\n\n \n
\n
Filters \n\n \n
\n
State \n
\n All States \n \n \n \n \n \n
\n\n \n
\n
Institution Type \n
\n All Types \n \n \n \n \n \n
\n
\n\n \n
\n\n
\n \n \n
{{brand?.brand?.name}}
\n
0\" class=\"text-sm text-gray-600\">Found match(es):\n \n
\n
New Jersey, New York, California
\n \n \n\n
\n\n
\n
\n
No results found \n
We couldn't find any health systems matching your search.
\n
Request this health system \n
\n\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\nimport {VaultService} from '../../services/vault.service';\n\n@Component({\n selector: 'app-identity-verification',\n templateUrl: './identity-verification.component.html',\n styleUrls: ['./identity-verification.component.scss']\n})\nexport class IdentityVerificationComponent implements OnInit {\n\n constructor(\n private vaultService: VaultService,\n\n ) { }\n\n ngOnInit(): void {\n }\n\n verifyIdentity(){\n this.vaultService.verificationWithPopup().subscribe((result)=>{\n console.log(\"verification result\", result)\n })\n }\n}\n","\n\n
\n
fasten \n \n\n
\n
\n Verify your identity just once\n \n
\n Your leaving Acme Labs to verify your identity with our partner, Clear.\n This one-time step will bring you right back after your ID has been verified.\n
\n
\n\n\n
\n \n Continue\n \n
\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport {Router} from '@angular/router';\nimport {AuthService} from '../../services/auth.service';\n\n@Component({\n selector: 'app-vault-profile-signin-code',\n templateUrl: './vault-profile-signin-code.component.html',\n styleUrls: ['./vault-profile-signin-code.component.scss']\n})\nexport class VaultProfileSigninCodeComponent implements OnInit {\n loading: boolean = false\n errorMsg: string = \"\"\n\n currentEmail = \"\"\n\n constructor(\n private router: Router,\n private authService: AuthService,\n ) {\n // @ts-ignore\n this.currentEmail = this.router.getCurrentNavigation().extras?.state?.[\"email\"] || 'test@example.com'\n }\n\n ngOnInit(): void {\n }\n\n onCodeCompleted(code: string){\n this.loading = true\n\n console.log(\"submit finish\", this.currentEmail, code)\n this.authService.VaultAuthFinish(this.currentEmail, code)\n .then(() => {\n this.loading = false\n this.router.navigateByUrl('/dashboard', {state: { } })\n })\n .catch((err)=>{\n this.loading = false\n if(err?.name){\n this.errorMsg = \"code is incorrect\"\n } else{\n this.errorMsg = \"an unknown error occurred during sign-in\"\n }\n // const toastNotification = new ToastNotification()\n // toastNotification.type = ToastType.Error\n // toastNotification.message = this.errorMsg\n // this.toastService.show(toastNotification)\n })\n }\n\n}\n","\n\n
\n
fasten \n \n\n
\n
\n Enter authentication code from your email\n \n
\n A code was sent to {{currentEmail}} \n
\n
\n\n
\n \n \n
\n\n
\n\n
\n Code expires in\n 4:59 \n
\n\n
\n \n Re-send code\n \n \n Use another verification method\n \n
\n
\n\n","import {Component, OnInit} from '@angular/core';\nimport {VaultProfile} from '../../models/fasten/vaultProfile';\nimport {Router} from '@angular/router';\nimport {AuthService} from '../../services/auth.service';\n\n@Component({\n selector: 'app-auth-signin',\n templateUrl: './vault-profile-signin.component.html',\n styleUrls: ['./vault-profile-signin.component.scss']\n})\nexport class VaultProfileSigninComponent implements OnInit {\n loading: boolean = false\n showMessage: boolean = false\n\n submitted: boolean = false\n existingVaultProfile: VaultProfile = new VaultProfile()\n errorMsg: string = \"\"\n message: string = \"\"\n\n constructor(\n private authService: AuthService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n const urlParams = new URLSearchParams(window.location.search);\n this.setMessage(urlParams.get('action') || \"\")\n\n }\n\n signinSubmit(){\n this.submitted = true;\n this.loading = true\n\n console.log(\"Signin\", this.existingVaultProfile.email)\n this.authService.VaultAuthBegin(this.existingVaultProfile.email!)\n .then(() => {\n this.loading = false\n this.router.navigateByUrl('/auth/signin/code', {state: { email: this.existingVaultProfile.email } })\n })\n .catch((err)=>{\n this.loading = false\n if(err?.name){\n this.errorMsg = \"email or password is incorrect\"\n } else{\n this.errorMsg = \"an unknown error occurred during sign-in\"\n }\n // const toastNotification = new ToastNotification()\n // toastNotification.type = ToastType.Error\n // toastNotification.message = this.errorMsg\n // this.toastService.show(toastNotification)\n })\n }\n\n setMessage(action: string) {\n if (action === \"email-changed\"){\n this.showMessage = true;\n this.message = \"Email successfully changed! Please sign in with your new email.\";\n } else if (action === \"password-changed\"){\n this.showMessage = true;\n this.message = \"Password successfully changed! Please sign in with your new password.\";\n }\n }\n}\n","\n\n
\n
fasten \n \n\n
\n
\n\n
\n\n
'\" />\n
\n\n
\n
Connect Your Health Records \n
\n Acme Labs uses Fasten to securely link your health systems\n
\n
\n\n
\n \n
\n
\n
\n
Safe \n
\n Securely connect your medical records with bank-level encryption\n
\n
\n
\n\n \n
\n
\n
\n
Private \n
\n We never sell your personal info and only use it with your\n permission\n
\n
\n
\n
\n\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer:DomSanitizer){}\n\n transform(value: any, args?: any): any {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n // return this.sanitizer.bypassSecurityTrustStyle(style);\n // return this.sanitizer.bypassSecurityTrustXxx(style); - see docs\n }\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Router} from '@angular/router';\nimport {Observable, of, throwError} from 'rxjs';\nimport {catchError} from 'rxjs/operators';\nimport {AuthService} from './auth.service';\nimport {environment} from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\n\n// based on https://stackoverflow.com/questions/46017245/how-to-handle-unauthorized-requestsstatus-with-401-or-403-with-new-httpclient\nexport class AuthInterceptorService implements HttpInterceptor {\n\n constructor(private authService: AuthService, private router: Router) { }\n\n private handleAuthError(err: HttpErrorResponse): Observable {\n //handle your auth error or rethrow\n if (err.status === 401 || err.status === 403) {\n //navigate /delete cookies or whatever\n this.authService.Signout()\n this.router.navigateByUrl(`/auth/signin`);\n // if you've caught / handled the error, you don't want to rethrow it unless you also want downstream consumers to have to handle it as well.\n return of(err.message); // or EMPTY may be appropriate here\n }\n return throwError(err);\n }\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n\n console.log(\"Intercepting Request\", req)\n\n //only intercept requests to the fasten API & lighthouse, all other requests should be sent as-is\n let reqUrl = new URL(req.url)\n let lighthouseUrl = new URL(environment.lighthouse_api_endpoint_base)\n let apiUrl = new URL(environment.connect_api_endpoint_base)\n\n if(\n !((reqUrl.origin == apiUrl.origin && reqUrl.pathname.startsWith(apiUrl.pathname)) ||\n (reqUrl.origin == lighthouseUrl.origin && reqUrl.pathname.startsWith(lighthouseUrl.pathname)))\n ){\n return next.handle(req)\n }\n\n // Clone the request and ensure that cookies are sent\n const authReq = req.clone({withCredentials: true});\n // catch the error, make specific functions for catching specific errors and you can chain through them with more catch operators\n return next.handle(authReq).pipe(catchError(x=> this.handleAuthError(x))); //here use an arrow function, otherwise you may get \"Cannot read property 'navigate' of undefined\" on angular 4.4.2/net core 2/webpack 2.70\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {VaultProfile} from '../models/fasten/vaultProfile';\nimport {environment} from '../../environments/environment';\nimport {HttpClient} from '@angular/common/http';\nimport {ResponseWrapper} from '../models/response-wrapper';\nimport {BehaviorSubject} from 'rxjs';\nimport * as jose from 'jose'\nimport {ConfigService} from './config.service';\nimport {ORG_CREDENTIAL_PUBLIC_ID} from '../app.constants';\n\nexport const FASTEN_AUTH_VAULT_COOKIE_NAME = 'fasten_connect_auth_vault'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n\n public IsAuthenticatedSubject = new BehaviorSubject(false)\n\n constructor(private _httpClient: HttpClient, private vaultConfigService: ConfigService) {}\n\n\n\n\n public async VaultAuthBegin(email: string): Promise {\n let resp = await this._httpClient.post(`${environment.connect_api_endpoint_base}/bridge/vault_auth_begin`, {\n \"email\": email,\n }, { withCredentials: true, params: {\"public_id\": ORG_CREDENTIAL_PUBLIC_ID} }).toPromise()\n return resp\n }\n\n public async VaultAuthFinish(email: string, code: string): Promise {\n let resp = await this._httpClient.post(`${environment.connect_api_endpoint_base}/bridge/vault_auth_finish`, {\n \"email\": email,\n \"code\": code\n }, { withCredentials: true, params: {\"public_id\": ORG_CREDENTIAL_PUBLIC_ID} }).toPromise()\n return resp\n }\n\n public async Signout(): Promise {\n this.publishAuthenticationState(false)\n return this.deleteCookie(FASTEN_AUTH_VAULT_COOKIE_NAME)\n // // let remotePouchDb = new PouchDB(this.getRemoteUserDb(localStorage.getItem(\"current_user\")), {skip_setup: true});\n // if(this.pouchDb){\n // await this.pouchDb.logOut()\n // }\n // await this.Close()\n }\n\n\n public async GetJWTPayload(): Promise {\n let authToken = this.getCookie(FASTEN_AUTH_VAULT_COOKIE_NAME)\n if (!authToken) {\n return null\n }\n let jwks = jose.createRemoteJWKSet(new URL(environment.jwks_uri))\n let issuerHost = environment.connect_api_jwt_issuer_host\n\n try {\n //audience and issuer must be the same. This token is only valid on the fasten connect api\n const {payload, protectedHeader} = await jose.jwtVerify(authToken, jwks, {\n issuer: issuerHost,\n audience: issuerHost,\n })\n // @ts-ignore\n this.vaultConfigService.systemConfig = {user: payload}\n return payload\n } catch (e) {\n console.error(\"failed to verify jwt:\", e, issuerHost)\n return null\n }\n }\n\n public async IsAuthenticated(): Promise {\n let payload = await this.GetJWTPayload()\n let isAuthenticated = payload != null\n this.publishAuthenticationState(isAuthenticated)\n return isAuthenticated\n }\n\n //https://stackoverflow.com/questions/34298133/angular-cookies\n private getCookie(name: string): string {\n const ca: Array = decodeURIComponent(document.cookie).split(';');\n const caLen: number = ca.length;\n const cookieName = `${name}=`;\n let c: string;\n\n for (let i = 0; i < caLen; i += 1) {\n c = ca[i].replace(/^\\s+/g, '');\n if (c.indexOf(cookieName) === 0) {\n return c.substring(cookieName.length, c.length);\n }\n }\n return '';\n }\n\n private deleteCookie(name: string) {\n this.setCookie(name, '', -99999); // - 1 was not far back enough to actually remove the cookie, this sets the time before the epoch and will cause the cookie to be deleted.\n }\n private setCookie(name: string, value: string, expireDays: number, path: string = '') {\n const d: Date = new Date();\n d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000);\n const expires = `expires=${d.toUTCString()}`;\n const cpath = path ? `; path=${path}` : '';\n document.cookie = `${name}=${value}; ${expires}${cpath}; SameSite=Lax`;\n }\n\n private publishAuthenticationState(authenticated: boolean){\n if(this.IsAuthenticatedSubject.value != authenticated){\n this.IsAuthenticatedSubject.next(authenticated)\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {VaultSystemConfig, vaultConfigDefaults, VaultSearchConfig, VaultProfileConfig} from '../models/vault-config';\nimport {merge} from 'lodash';\nimport {ApiMode} from '../app.constants';\nimport {VaultProfile} from '../models/fasten/vaultProfile';\nimport {Organization} from '../models/fasten/organization';\nimport {VaultService} from './vault.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService {\n //TODO: there should be 3 types of \"config\" settings:\n // 1. Service settings\n // - apiMode\n // - organization information\n // - org credential information\n // - reconnect id.\n // 2. User settings\n // - user token/cookie data\n // - vault profile\n // - current connected patient auth's\n // - (FUTURE) potential patient auths?\n // 3. Search settings\n // - search filters\n // - selected brand\n // -\n\n\n\n\n // Private\n private systemConfigSubject: BehaviorSubject;\n private vaultProfileConfigSubject: BehaviorSubject;\n private searchConfigSubject: BehaviorSubject;\n\n\n private _defaultSystemConfig: VaultSystemConfig;\n\n\n constructor(\n vaultApi: VaultService\n ) {\n this._defaultSystemConfig = vaultConfigDefaults\n this.systemConfigSubject = new BehaviorSubject(this._defaultSystemConfig);\n this.vaultProfileConfigSubject = new BehaviorSubject({} as VaultProfileConfig);\n this.searchConfigSubject = new BehaviorSubject({} as VaultSearchConfig);\n\n\n //always watch for changes to the vault\n this.subscribeSystemConfig((systemConfig: VaultSystemConfig) => {\n console.log(\"System configuration changed:\", systemConfig, this.systemConfig$)\n if(systemConfig.org_id && !systemConfig.org){\n console.log(\"attempt to download org information, and store in config\")\n vaultApi.getOrg(systemConfig.org_id).subscribe((org: Organization )=>{\n console.log(\"org:\", org)\n this.systemConfig = {org: org}\n })\n }\n });\n }\n\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Setter & getter for config\n */\n public subscribeSystemConfig(callback: (config: VaultSystemConfig) => void) {\n this.systemConfigSubject.subscribe(callback);\n }\n //Setter\n set systemConfig(value: VaultSystemConfig) {\n // get the current config, merge the new values, and then submit.\n const mergedSettings = merge({}, this.systemConfigSubject.getValue(), value);\n\n // Store the value\n if(JSON.stringify(mergedSettings) !== JSON.stringify(this.systemConfigSubject.getValue())){\n console.log('updating system settings:', mergedSettings)\n this.systemConfigSubject.next(mergedSettings);\n }\n }\n\n //Getter\n get systemConfig$(): VaultSystemConfig {\n console.log('getting cached system settings:', this.systemConfigSubject.getValue())\n return this.systemConfigSubject.getValue()\n }\n\n public subscribeVaultProfileConfig(callback: (config: VaultProfileConfig) => void) {\n this.vaultProfileConfigSubject.subscribe(callback);\n }\n //Setter\n set vaultProfileConfig(value: VaultProfileConfig) {\n // get the current config, merge the new values, and then submit.\n const mergedSettings = merge({}, this.vaultProfileConfigSubject.getValue(), value);\n\n // Store the value\n if(JSON.stringify(mergedSettings) !== JSON.stringify(this.vaultProfileConfigSubject.getValue())){\n console.log('updating vault profile settings:', mergedSettings)\n this.vaultProfileConfigSubject.next(mergedSettings);\n }\n }\n //Getter\n get vaultProfileConfig$(): VaultProfileConfig {\n console.log('getting vault profile settings:', this.vaultProfileConfigSubject.getValue())\n return this.vaultProfileConfigSubject.getValue()\n }\n\n public subscribeSearchConfig(callback: (config: VaultSearchConfig) => void) {\n this.searchConfigSubject.subscribe(callback);\n }\n //Setter\n set searchConfig(value: VaultSearchConfig) {\n // get the current config, merge the new values, and then submit.\n const mergedSettings = merge({}, this.searchConfigSubject.getValue(), value);\n\n // Store the value\n if(JSON.stringify(mergedSettings) !== JSON.stringify(this.searchConfigSubject.getValue())){\n console.log('updating search settings:', mergedSettings)\n this.searchConfigSubject.next(mergedSettings);\n }\n }\n //Getter\n get searchConfig$(): VaultSearchConfig {\n console.log('getting search settings:', this.searchConfigSubject.getValue())\n return this.searchConfigSubject.getValue()\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ResponseWrapper } from '../models/response-wrapper';\nimport { environment } from '../../environments/environment';\nimport { Organization } from '../models/fasten/organization';\nimport { ApiMode } from '../app.constants';\nimport { OrganizationCredential } from '../models/fasten/organization-credential';\nimport { VaultProfile } from \"../models/fasten/vaultProfile\";\nimport {catchError, concatMap, filter, first, fromEvent, map, Observable, of, throwError, timeout} from 'rxjs';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport {ORG_CREDENTIAL_PUBLIC_ID} from '../app.constants';\nimport {SearchFilter} from '../models/search-filter';\nimport {LighthouseSourceSearch} from '../models/lighthouse/lighthouse-source-search';\n\nexport const ConnectWindowTimeout = 2*60*1000 //wait 2 minutes (in milliseconds)\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VaultService {\n\n constructor(\n private _httpClient: HttpClient,\n private deviceService: DeviceDetectorService\n ) { }\n\n\n\n\n // public verificationWithPopup(publicId: string, brandId: string, portalId: string, endpointId: string, reconnectOrgConnectionId?: string, connectMode?: ConnectMode, externalId?: string, externalState?: string): Observable {\n public verificationWithPopup(): Observable {\n //todo, this should use a bridge/connect or vault endpoint\n\n const redirectUrl = new URL(`${environment.connect_api_endpoint_base}/bridge/identity_verification/connect`);\n redirectUrl.searchParams.set(\"public_id\", ORG_CREDENTIAL_PUBLIC_ID);\n\n\n const isDesktop = this.deviceService.isDesktop();\n var features = \"\"\n if(isDesktop){\n //add optons for window.open, popup only for desktop (mobile and table will open a new tab)\n features = \"popup=true,width=700,height=600\"\n }\n\n //open a external url in a new window\n let openedWindow = window.open(redirectUrl.toString(), \"_blank\");\n\n return this.waitForOrgConnectionOrTimeout(openedWindow!)\n }\n\n\n\n //This function must be \".subscribed()\" to work. If not, the handler will not be registered and messages will be ignored.\n private waitForOrgConnectionOrTimeout(openedWindow: Window): Observable {\n console.log(`waiting for postMessage notification from popup window`)\n\n //new code to listen to post message\n return fromEvent(window, 'message')\n .pipe(\n //throw an error if we wait more than 2 minutes (this will close the window)\n timeout(ConnectWindowTimeout) as any,\n //make sure we're only listening to events from the \"opened\" window.\n filter((event: MessageEvent) => event.source == openedWindow),\n //after filtering, we should only have one event to handle.\n first(),\n map((event: any) => {\n console.log(`received postMessage notification from popup window & sending acknowledgment`)\n // @ts-ignore\n event.source.postMessage(JSON.stringify({close:true}), event.origin);\n console.log(\"postmessage data\", event.data)\n return JSON.parse(event.data)\n }),\n catchError((err) => {\n console.warn(`timed out waiting for notification from popup (${ConnectWindowTimeout/1000}s), closing window`)\n openedWindow.self.close()\n return throwError(err)\n })\n )\n }\n\n public getRecordLocator(): Observable {\n return this._httpClient.get(`${environment.connect_api_endpoint_base}/bridge/record_locator`, {params: {\"public_id\": ORG_CREDENTIAL_PUBLIC_ID}})\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Record Locator Response\", response)\n return response.data as Organization;\n })\n );\n }\n\n public searchCatalogBrands(apiMode: ApiMode, filter: SearchFilter): Observable {\n if((typeof filter.searchAfter === 'string' || filter.searchAfter instanceof String) && (filter.searchAfter as string).length > 0){\n filter.searchAfter = (filter.searchAfter as string).split(',')\n } else {\n filter.searchAfter = []\n }\n const endpointUrl = new URL(`${environment.connect_api_endpoint_base}/bridge/catalog/search`);\n\n return this._httpClient.post(endpointUrl.toString(), filter, {params: {\n 'api_mode': apiMode\n }})\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Metadata RESPONSE\", response)\n return response.data as LighthouseSourceSearch\n })\n );\n }\n\n public getOrg(orgId: String): Observable {\n return this._httpClient.get(`${environment.connect_api_endpoint_base}/org/${orgId}`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization\", response)\n return response.data as Organization;\n })\n );\n }\n\n //OLD code\n\n\n public updateUser(oldPass: string, oldEmail: string, newEmail: string, newPass: string = \"\"): Observable {\n const userUpdateJson = JSON.stringify({\n email: oldEmail,\n password: oldPass,\n newEmail: newEmail,\n newPassword: newPass\n });\n return this._httpClient.put(`${environment.connect_api_endpoint_base}/user`, userUpdateJson)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Updated User\", response)\n\n return response.data as VaultProfile;\n })\n );\n }\n\n /**\n * Create a new organization and associate it with the current User\n * @param newOrg\n * @param logoBlob\n * @constructor\n */\n public createOrg(newOrg: Organization, logoBlob: Blob): Observable {\n const formData = new FormData();\n\n //add the org data to the form data\n const orgJson = JSON.stringify(newOrg);\n const orgJsonBlob = new Blob([orgJson], {\n type: 'application/json'\n });\n formData.append(\"org\", orgJsonBlob);\n formData.append(\"logo\", logoBlob);\n\n let resp = this._httpClient.post(`${environment.connect_api_endpoint_base}/org`, formData)\n console.log(resp)\n return resp\n }\n\n\n public updateOrg(orgId: string, updateOrg: Organization, logoBlob?: Blob | null): Observable {\n const formData = new FormData();\n\n //add the org data to the form data\n const orgJson = JSON.stringify(updateOrg);\n const orgJsonBlob = new Blob([orgJson], {\n type: 'application/json'\n });\n formData.append(\"org\", orgJsonBlob);\n if (logoBlob) {\n formData.append(\"logo\", logoBlob);\n }\n return this._httpClient.put(`${environment.connect_api_endpoint_base}/org/${orgId}`, formData)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Updated Organization\", response)\n return response.data as Organization;\n })\n );\n }\n\n public sendOrgInvite(orgId: string, recipientEmail: string): Observable {\n return this._httpClient.post(`${environment.connect_api_endpoint_base}/org/${orgId}/invite`, {\n recipient_email_address: recipientEmail,\n org_id: orgId\n })\n }\n\n // public createOrgCredentials(orgId: string, apiMode: ApiMode, redirectUrl: string, note: string): Observable<{ action: CRUDMode, org_credential: OrganizationCredential, private_key: string }> {\n // return this._httpClient.post(`${environment.connect_api_endpoint_base}/org/${orgId}/credentials`, {\n // api_mode: apiMode,\n // redirect_uri: redirectUrl,\n // note: note\n // })\n // .pipe(\n // map((response: ResponseWrapper) => {\n // console.log(\"Organization Credential\", response)\n // response.data.action = CRUDMode.Create\n // return response.data as { action: CRUDMode, org_credential: OrganizationCredential, private_key: string };\n // })\n // );\n // }\n\n public getOrgCredentials(orgId: string): Observable {\n return this._httpClient.get(`${environment.connect_api_endpoint_base}/org/${orgId}/credentials`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization Credentials\", response)\n return response.data as OrganizationCredential[];\n })\n );\n }\n\n\n\n\n\n\n\n\n\n}\n","export const environment = {\n name: \"development\",\n\n //specify the lighthouse base that we're going to use to authenticate against all our source/providers. Must not have trailing slash\n lighthouse_api_endpoint_base: 'https://lighthouse.fastenhealth.com',\n\n //used to specify the api server that we're going to use (can be relative or absolute). Must not have trailing slash\n // connect_api_endpoint_base: 'https://api.connect-dev.fastenhealth.com/v1',\n // if relative, must start with /\n connect_api_endpoint_base: 'https://api.connect-dev.fastenhealth.com/v1',\n connect_api_jwt_issuer_host: 'https://api.connect-dev.fastenhealth.com/v1',\n\n jwks_uri: 'https://cdn.fastenhealth.com/jwks/fasten-connect/dev.json',\n\n //Stripe pricing table (Test mode in Dev)\n stripe_customer_portal: 'https://billing.stripe.com/p/login/test_bIY7thbZL5g6gXC000'\n // stripe_customer_portal: 'https://billing.stripe.com/p/login/dR6aEYe5h4AYe2I144'\n};\n","// this file is automatically generated by git.version.ts script\nexport const versionInfo = {\n version: 'dev',\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.name != \"local\") {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","var map = {\n\t\"./af\": 8685,\n\t\"./af.js\": 8685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 2614,\n\t\"./ar-kw.js\": 2614,\n\t\"./ar-ly\": 8630,\n\t\"./ar-ly.js\": 8630,\n\t\"./ar-ma\": 8674,\n\t\"./ar-ma.js\": 8674,\n\t\"./ar-ps\": 6235,\n\t\"./ar-ps.js\": 6235,\n\t\"./ar-sa\": 9032,\n\t\"./ar-sa.js\": 9032,\n\t\"./ar-tn\": 4730,\n\t\"./ar-tn.js\": 4730,\n\t\"./ar.js\": 254,\n\t\"./az\": 3052,\n\t\"./az.js\": 3052,\n\t\"./be\": 150,\n\t\"./be.js\": 150,\n\t\"./bg\": 3069,\n\t\"./bg.js\": 3069,\n\t\"./bm\": 3466,\n\t\"./bm.js\": 3466,\n\t\"./bn\": 8516,\n\t\"./bn-bd\": 557,\n\t\"./bn-bd.js\": 557,\n\t\"./bn.js\": 8516,\n\t\"./bo\": 6273,\n\t\"./bo.js\": 6273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 9815,\n\t\"./bs.js\": 9815,\n\t\"./ca\": 3331,\n\t\"./ca.js\": 3331,\n\t\"./cs\": 1320,\n\t\"./cs.js\": 1320,\n\t\"./cv\": 2219,\n\t\"./cv.js\": 2219,\n\t\"./cy\": 8266,\n\t\"./cy.js\": 8266,\n\t\"./da\": 6427,\n\t\"./da.js\": 6427,\n\t\"./de\": 7435,\n\t\"./de-at\": 2871,\n\t\"./de-at.js\": 2871,\n\t\"./de-ch\": 2994,\n\t\"./de-ch.js\": 2994,\n\t\"./de.js\": 7435,\n\t\"./dv\": 2357,\n\t\"./dv.js\": 2357,\n\t\"./el\": 5649,\n\t\"./el.js\": 5649,\n\t\"./en-au\": 9961,\n\t\"./en-au.js\": 9961,\n\t\"./en-ca\": 9878,\n\t\"./en-ca.js\": 9878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 864,\n\t\"./en-ie.js\": 864,\n\t\"./en-il\": 1579,\n\t\"./en-il.js\": 1579,\n\t\"./en-in\": 940,\n\t\"./en-in.js\": 940,\n\t\"./en-nz\": 6181,\n\t\"./en-nz.js\": 6181,\n\t\"./en-sg\": 4301,\n\t\"./en-sg.js\": 4301,\n\t\"./eo\": 5291,\n\t\"./eo.js\": 5291,\n\t\"./es\": 4529,\n\t\"./es-do\": 3764,\n\t\"./es-do.js\": 3764,\n\t\"./es-mx\": 2584,\n\t\"./es-mx.js\": 2584,\n\t\"./es-us\": 3425,\n\t\"./es-us.js\": 3425,\n\t\"./es.js\": 4529,\n\t\"./et\": 5203,\n\t\"./et.js\": 5203,\n\t\"./eu\": 678,\n\t\"./eu.js\": 678,\n\t\"./fa\": 3483,\n\t\"./fa.js\": 3483,\n\t\"./fi\": 6262,\n\t\"./fi.js\": 6262,\n\t\"./fil\": 2521,\n\t\"./fil.js\": 2521,\n\t\"./fo\": 4555,\n\t\"./fo.js\": 4555,\n\t\"./fr\": 3131,\n\t\"./fr-ca\": 8239,\n\t\"./fr-ca.js\": 8239,\n\t\"./fr-ch\": 1702,\n\t\"./fr-ch.js\": 1702,\n\t\"./fr.js\": 3131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 3821,\n\t\"./ga.js\": 3821,\n\t\"./gd\": 1753,\n\t\"./gd.js\": 1753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 2762,\n\t\"./gom-deva.js\": 2762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 2809,\n\t\"./gu.js\": 2809,\n\t\"./he\": 5402,\n\t\"./he.js\": 5402,\n\t\"./hi\": 3435,\n\t\"./hi.js\": 3435,\n\t\"./hr\": 410,\n\t\"./hr.js\": 410,\n\t\"./hu\": 8288,\n\t\"./hu.js\": 8288,\n\t\"./hy-am\": 7928,\n\t\"./hy-am.js\": 7928,\n\t\"./id\": 1334,\n\t\"./id.js\": 1334,\n\t\"./is\": 6959,\n\t\"./is.js\": 6959,\n\t\"./it\": 4864,\n\t\"./it-ch\": 1124,\n\t\"./it-ch.js\": 1124,\n\t\"./it.js\": 4864,\n\t\"./ja\": 6141,\n\t\"./ja.js\": 6141,\n\t\"./jv\": 9187,\n\t\"./jv.js\": 9187,\n\t\"./ka\": 2136,\n\t\"./ka.js\": 2136,\n\t\"./kk\": 4332,\n\t\"./kk.js\": 4332,\n\t\"./km\": 8607,\n\t\"./km.js\": 8607,\n\t\"./kn\": 4305,\n\t\"./kn.js\": 4305,\n\t\"./ko\": 234,\n\t\"./ko.js\": 234,\n\t\"./ku\": 6003,\n\t\"./ku-kmr\": 9619,\n\t\"./ku-kmr.js\": 9619,\n\t\"./ku.js\": 6003,\n\t\"./ky\": 5061,\n\t\"./ky.js\": 5061,\n\t\"./lb\": 2786,\n\t\"./lb.js\": 2786,\n\t\"./lo\": 6183,\n\t\"./lo.js\": 6183,\n\t\"./lt\": 29,\n\t\"./lt.js\": 29,\n\t\"./lv\": 4169,\n\t\"./lv.js\": 4169,\n\t\"./me\": 8577,\n\t\"./me.js\": 8577,\n\t\"./mi\": 8177,\n\t\"./mi.js\": 8177,\n\t\"./mk\": 337,\n\t\"./mk.js\": 337,\n\t\"./ml\": 5260,\n\t\"./ml.js\": 5260,\n\t\"./mn\": 2325,\n\t\"./mn.js\": 2325,\n\t\"./mr\": 4695,\n\t\"./mr.js\": 4695,\n\t\"./ms\": 5334,\n\t\"./ms-my\": 7151,\n\t\"./ms-my.js\": 7151,\n\t\"./ms.js\": 5334,\n\t\"./mt\": 3570,\n\t\"./mt.js\": 3570,\n\t\"./my\": 7963,\n\t\"./my.js\": 7963,\n\t\"./nb\": 8028,\n\t\"./nb.js\": 8028,\n\t\"./ne\": 6638,\n\t\"./ne.js\": 6638,\n\t\"./nl\": 302,\n\t\"./nl-be\": 5569,\n\t\"./nl-be.js\": 5569,\n\t\"./nl.js\": 302,\n\t\"./nn\": 3501,\n\t\"./nn.js\": 3501,\n\t\"./oc-lnc\": 563,\n\t\"./oc-lnc.js\": 563,\n\t\"./pa-in\": 869,\n\t\"./pa-in.js\": 869,\n\t\"./pl\": 5302,\n\t\"./pl.js\": 5302,\n\t\"./pt\": 9687,\n\t\"./pt-br\": 4884,\n\t\"./pt-br.js\": 4884,\n\t\"./pt.js\": 9687,\n\t\"./ro\": 9107,\n\t\"./ro.js\": 9107,\n\t\"./ru\": 3627,\n\t\"./ru.js\": 3627,\n\t\"./sd\": 355,\n\t\"./sd.js\": 355,\n\t\"./se\": 3427,\n\t\"./se.js\": 3427,\n\t\"./si\": 1848,\n\t\"./si.js\": 1848,\n\t\"./sk\": 4590,\n\t\"./sk.js\": 4590,\n\t\"./sl\": 184,\n\t\"./sl.js\": 184,\n\t\"./sq\": 6361,\n\t\"./sq.js\": 6361,\n\t\"./sr\": 8965,\n\t\"./sr-cyrl\": 1287,\n\t\"./sr-cyrl.js\": 1287,\n\t\"./sr.js\": 8965,\n\t\"./ss\": 5456,\n\t\"./ss.js\": 5456,\n\t\"./sv\": 451,\n\t\"./sv.js\": 451,\n\t\"./sw\": 7558,\n\t\"./sw.js\": 7558,\n\t\"./ta\": 1356,\n\t\"./ta.js\": 1356,\n\t\"./te\": 3693,\n\t\"./te.js\": 3693,\n\t\"./tet\": 1243,\n\t\"./tet.js\": 1243,\n\t\"./tg\": 2500,\n\t\"./tg.js\": 2500,\n\t\"./th\": 5768,\n\t\"./th.js\": 5768,\n\t\"./tk\": 7761,\n\t\"./tk.js\": 7761,\n\t\"./tl-ph\": 5780,\n\t\"./tl-ph.js\": 5780,\n\t\"./tlh\": 9590,\n\t\"./tlh.js\": 9590,\n\t\"./tr\": 3807,\n\t\"./tr.js\": 3807,\n\t\"./tzl\": 3857,\n\t\"./tzl.js\": 3857,\n\t\"./tzm\": 654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 654,\n\t\"./ug-cn\": 845,\n\t\"./ug-cn.js\": 845,\n\t\"./uk\": 9232,\n\t\"./uk.js\": 9232,\n\t\"./ur\": 7052,\n\t\"./ur.js\": 7052,\n\t\"./uz\": 7967,\n\t\"./uz-latn\": 2233,\n\t\"./uz-latn.js\": 2233,\n\t\"./uz.js\": 7967,\n\t\"./vi\": 8615,\n\t\"./vi.js\": 8615,\n\t\"./x-pseudo\": 2320,\n\t\"./x-pseudo.js\": 2320,\n\t\"./yo\": 1313,\n\t\"./yo.js\": 1313,\n\t\"./zh-cn\": 4490,\n\t\"./zh-cn.js\": 4490,\n\t\"./zh-hk\": 5910,\n\t\"./zh-hk.js\": 5910,\n\t\"./zh-mo\": 8262,\n\t\"./zh-mo.js\": 8262,\n\t\"./zh-tw\": 4223,\n\t\"./zh-tw.js\": 4223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6700;"],"names":["ActivatedRouteSnapshot","RouterStateSnapshot","Router","IsAuthenticatedAuthGuard","constructor","authService","router","canActivate","route","state","_this","_asyncToGenerator","jwtPayload","GetJWTPayload","navigate","has_verified_identity","console","log","i0","ɵɵinject","i1","AuthService","i2","factory","ɵfac","environment","BehaviorSubject","jose","ORG_CREDENTIAL_PUBLIC_ID","FASTEN_AUTH_VAULT_COOKIE_NAME","_httpClient","vaultConfigService","IsAuthenticatedSubject","VaultAuthBegin","email","resp","post","connect_api_endpoint_base","withCredentials","params","toPromise","VaultAuthFinish","code","_this2","Signout","_this3","publishAuthenticationState","deleteCookie","_this4","authToken","getCookie","jwks","createRemoteJWKSet","URL","jwks_uri","issuerHost","connect_api_jwt_issuer_host","payload","protectedHeader","jwtVerify","issuer","audience","systemConfig","user","e","error","IsAuthenticated","_this5","isAuthenticated","name","ca","decodeURIComponent","document","cookie","split","caLen","length","cookieName","c","i","replace","indexOf","substring","setCookie","value","expireDays","path","d","Date","setTime","getTime","expires","toUTCString","cpath","authenticated","next","HttpClient","ConfigService","providedIn"],"sourceRoot":"webpack:///","x_google_ignoreList":[41]}
\ No newline at end of file