@huntsman-cancer-institute/authentication 16.0.1 → 17.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/authentication.component.d.ts +27 -27
- package/authentication.module.d.ts +24 -24
- package/authentication.provider.d.ts +16 -16
- package/authentication.service.d.ts +123 -123
- package/authorization.interceptor.d.ts +11 -11
- package/directlogin.component.d.ts +21 -21
- package/esm2022/authentication.component.mjs +112 -112
- package/esm2022/authentication.module.mjs +103 -103
- package/esm2022/authentication.provider.mjs +36 -36
- package/esm2022/authentication.service.mjs +393 -393
- package/esm2022/authorization.interceptor.mjs +79 -79
- package/esm2022/directlogin.component.mjs +47 -47
- package/esm2022/huntsman-cancer-institute-authentication.mjs +4 -4
- package/esm2022/index.mjs +12 -12
- package/esm2022/route-guard.service.mjs +22 -22
- package/esm2022/timeout-notification.component.mjs +117 -117
- package/fesm2022/huntsman-cancer-institute-authentication.mjs +831 -831
- package/fesm2022/huntsman-cancer-institute-authentication.mjs.map +1 -1
- package/index.d.ts +12 -12
- package/package.json +4 -4
- package/route-guard.service.d.ts +1 -1
- package/timeout-notification.component.d.ts +14 -14
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary
|
|
3
|
-
*/
|
|
4
|
-
import { Component, ElementRef, ViewChild, Inject, Renderer2 } from "@angular/core";
|
|
5
|
-
import { Location } from "@angular/common";
|
|
6
|
-
import { Router } from "@angular/router";
|
|
7
|
-
import { DomSanitizer } from "@angular/platform-browser";
|
|
8
|
-
import { interval } from "rxjs";
|
|
9
|
-
import { first } from "rxjs/operators";
|
|
10
|
-
import { AuthenticationService, AUTHENTICATION_ROUTE } from "./authentication.service";
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "./authentication.service";
|
|
13
|
-
import * as i2 from "@angular/platform-browser";
|
|
14
|
-
import * as i3 from "@angular/router";
|
|
15
|
-
import * as i4 from "@angular/common";
|
|
16
|
-
export class AuthenticationComponent {
|
|
17
|
-
constructor(authenticationService, domSanitizer, router, location, renderer, authenticationRoute) {
|
|
18
|
-
this.authenticationService = authenticationService;
|
|
19
|
-
this.domSanitizer = domSanitizer;
|
|
20
|
-
this.router = router;
|
|
21
|
-
this.location = location;
|
|
22
|
-
this.renderer = renderer;
|
|
23
|
-
this.authenticationRoute = authenticationRoute;
|
|
24
|
-
}
|
|
25
|
-
ngOnInit() {
|
|
26
|
-
/*
|
|
27
|
-
* Fix back bug
|
|
28
|
-
* Issue is that the browser will go back to the previous route. If it's guarded, the route guard will just load the login again
|
|
29
|
-
* Eventually the browser gets to the /authenticate route and going back from there loads the iframe history and Shibboleth displays
|
|
30
|
-
* an error relating to navigating back.
|
|
31
|
-
*/
|
|
32
|
-
history.pushState(null, null, this.location.prepareExternalUrl(this.authenticationRoute));
|
|
33
|
-
this.popstateSubscription = this.location.subscribe((value) => {
|
|
34
|
-
//This is going to prevent back from working from the login component
|
|
35
|
-
history.go(1);
|
|
36
|
-
});
|
|
37
|
-
this.beginAuthenticationProcess();
|
|
38
|
-
}
|
|
39
|
-
handleChanges() {
|
|
40
|
-
if (!this.iframe.nativeElement.contentDocument) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
try {
|
|
44
|
-
let element = this.iframe.nativeElement.contentDocument.body;
|
|
45
|
-
if (element.querySelector("pre")) {
|
|
46
|
-
element = element.querySelector("pre");
|
|
47
|
-
}
|
|
48
|
-
this._errorMsg = null;
|
|
49
|
-
var jsonText = element.innerText;
|
|
50
|
-
var json = JSON.parse(jsonText);
|
|
51
|
-
this.authenticationService.storeToken(json.auth_token);
|
|
52
|
-
var authenticated = this.authenticationService.proceedIfAuthenticated();
|
|
53
|
-
if (!authenticated) {
|
|
54
|
-
this.resetSubscription.unsubscribe();
|
|
55
|
-
this.beginAuthenticationProcess();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
if (this.iframe.nativeElement.contentDocument.title.toUpperCase() === "ERROR") {
|
|
60
|
-
if (this.iframe.nativeElement.contentDocument.body.innerHTML.toUpperCase() === "FORBIDDEN") {
|
|
61
|
-
this._errorMsg = "You do not have permission to log into this application";
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
this._errorMsg = null;
|
|
65
|
-
}
|
|
66
|
-
//A bit of a workaround for a WildFly issue. Success on Pac4j authentication, but failure on DB load of user put things in a weird state. Just logout, and redo the login.
|
|
67
|
-
this.clearLoginAndRetry();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
// After the iframe loads, make the background transparent so we use the implementation's background and not the sso background.
|
|
71
|
-
this.renderer.setStyle(this.iframe.nativeElement.contentDocument.body, "background-color", "transparent");
|
|
72
|
-
}
|
|
73
|
-
ngOnDestroy() {
|
|
74
|
-
this.resetSubscription.unsubscribe();
|
|
75
|
-
this.popstateSubscription.unsubscribe();
|
|
76
|
-
}
|
|
77
|
-
clearLoginAndRetry() {
|
|
78
|
-
this.resetSubscription.unsubscribe();
|
|
79
|
-
this.authenticationService.clearLogin().subscribe(() => { this.beginAuthenticationProcess(); }, (error) => { this.beginAuthenticationProcess(); });
|
|
80
|
-
}
|
|
81
|
-
beginAuthenticationProcess() {
|
|
82
|
-
var tokenEndpoint = this.authenticationService.tokenLocation();
|
|
83
|
-
if (tokenEndpoint !== "") {
|
|
84
|
-
this.url = this.domSanitizer.bypassSecurityTrustResourceUrl(tokenEndpoint);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* If the user doesn't complete authentication before the IdP session times out, that will be a problem when they eventually
|
|
88
|
-
* attampt to log in. It is likely that users will do this often when they log out or are timed out in the evening, leave
|
|
89
|
-
* their browser open, then attempt to log back in in the morning. In order to work around this, this component will re-request
|
|
90
|
-
* the token prior to IdP timeout, which will reset the process. This will happen 1 minute before idpInactivityMinutes
|
|
91
|
-
**/
|
|
92
|
-
this.resetSubscription = interval((this.authenticationService.idpInactivityMinutes - 1) * 60 * 1000)
|
|
93
|
-
.pipe(first())
|
|
94
|
-
.subscribe((value) => {
|
|
95
|
-
this.beginAuthenticationProcess();
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
99
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary
|
|
3
|
+
*/
|
|
4
|
+
import { Component, ElementRef, ViewChild, Inject, Renderer2 } from "@angular/core";
|
|
5
|
+
import { Location } from "@angular/common";
|
|
6
|
+
import { Router } from "@angular/router";
|
|
7
|
+
import { DomSanitizer } from "@angular/platform-browser";
|
|
8
|
+
import { interval } from "rxjs";
|
|
9
|
+
import { first } from "rxjs/operators";
|
|
10
|
+
import { AuthenticationService, AUTHENTICATION_ROUTE } from "./authentication.service";
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "./authentication.service";
|
|
13
|
+
import * as i2 from "@angular/platform-browser";
|
|
14
|
+
import * as i3 from "@angular/router";
|
|
15
|
+
import * as i4 from "@angular/common";
|
|
16
|
+
export class AuthenticationComponent {
|
|
17
|
+
constructor(authenticationService, domSanitizer, router, location, renderer, authenticationRoute) {
|
|
18
|
+
this.authenticationService = authenticationService;
|
|
19
|
+
this.domSanitizer = domSanitizer;
|
|
20
|
+
this.router = router;
|
|
21
|
+
this.location = location;
|
|
22
|
+
this.renderer = renderer;
|
|
23
|
+
this.authenticationRoute = authenticationRoute;
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
/*
|
|
27
|
+
* Fix back bug
|
|
28
|
+
* Issue is that the browser will go back to the previous route. If it's guarded, the route guard will just load the login again
|
|
29
|
+
* Eventually the browser gets to the /authenticate route and going back from there loads the iframe history and Shibboleth displays
|
|
30
|
+
* an error relating to navigating back.
|
|
31
|
+
*/
|
|
32
|
+
history.pushState(null, null, this.location.prepareExternalUrl(this.authenticationRoute));
|
|
33
|
+
this.popstateSubscription = this.location.subscribe((value) => {
|
|
34
|
+
//This is going to prevent back from working from the login component
|
|
35
|
+
history.go(1);
|
|
36
|
+
});
|
|
37
|
+
this.beginAuthenticationProcess();
|
|
38
|
+
}
|
|
39
|
+
handleChanges() {
|
|
40
|
+
if (!this.iframe.nativeElement.contentDocument) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
let element = this.iframe.nativeElement.contentDocument.body;
|
|
45
|
+
if (element.querySelector("pre")) {
|
|
46
|
+
element = element.querySelector("pre");
|
|
47
|
+
}
|
|
48
|
+
this._errorMsg = null;
|
|
49
|
+
var jsonText = element.innerText;
|
|
50
|
+
var json = JSON.parse(jsonText);
|
|
51
|
+
this.authenticationService.storeToken(json.auth_token);
|
|
52
|
+
var authenticated = this.authenticationService.proceedIfAuthenticated();
|
|
53
|
+
if (!authenticated) {
|
|
54
|
+
this.resetSubscription.unsubscribe();
|
|
55
|
+
this.beginAuthenticationProcess();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (this.iframe.nativeElement.contentDocument.title.toUpperCase() === "ERROR") {
|
|
60
|
+
if (this.iframe.nativeElement.contentDocument.body.innerHTML.toUpperCase() === "FORBIDDEN") {
|
|
61
|
+
this._errorMsg = "You do not have permission to log into this application";
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this._errorMsg = null;
|
|
65
|
+
}
|
|
66
|
+
//A bit of a workaround for a WildFly issue. Success on Pac4j authentication, but failure on DB load of user put things in a weird state. Just logout, and redo the login.
|
|
67
|
+
this.clearLoginAndRetry();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// After the iframe loads, make the background transparent so we use the implementation's background and not the sso background.
|
|
71
|
+
this.renderer.setStyle(this.iframe.nativeElement.contentDocument.body, "background-color", "transparent");
|
|
72
|
+
}
|
|
73
|
+
ngOnDestroy() {
|
|
74
|
+
this.resetSubscription.unsubscribe();
|
|
75
|
+
this.popstateSubscription.unsubscribe();
|
|
76
|
+
}
|
|
77
|
+
clearLoginAndRetry() {
|
|
78
|
+
this.resetSubscription.unsubscribe();
|
|
79
|
+
this.authenticationService.clearLogin().subscribe(() => { this.beginAuthenticationProcess(); }, (error) => { this.beginAuthenticationProcess(); });
|
|
80
|
+
}
|
|
81
|
+
beginAuthenticationProcess() {
|
|
82
|
+
var tokenEndpoint = this.authenticationService.tokenLocation();
|
|
83
|
+
if (tokenEndpoint !== "") {
|
|
84
|
+
this.url = this.domSanitizer.bypassSecurityTrustResourceUrl(tokenEndpoint);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* If the user doesn't complete authentication before the IdP session times out, that will be a problem when they eventually
|
|
88
|
+
* attampt to log in. It is likely that users will do this often when they log out or are timed out in the evening, leave
|
|
89
|
+
* their browser open, then attempt to log back in in the morning. In order to work around this, this component will re-request
|
|
90
|
+
* the token prior to IdP timeout, which will reset the process. This will happen 1 minute before idpInactivityMinutes
|
|
91
|
+
**/
|
|
92
|
+
this.resetSubscription = interval((this.authenticationService.idpInactivityMinutes - 1) * 60 * 1000)
|
|
93
|
+
.pipe(first())
|
|
94
|
+
.subscribe((value) => {
|
|
95
|
+
this.beginAuthenticationProcess();
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthenticationComponent, deps: [{ token: i1.AuthenticationService }, { token: i2.DomSanitizer }, { token: i3.Router }, { token: i4.Location }, { token: i0.Renderer2 }, { token: AUTHENTICATION_ROUTE }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AuthenticationComponent, selector: "authentication-iframe", host: { classAttribute: "outlet-row" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], ngImport: i0, template: `
|
|
100
100
|
<div class="container">
|
|
101
101
|
<iframe #iframe class="frame" [src]="url" (load)="handleChanges()"></iframe>
|
|
102
102
|
<div *ngIf="_errorMsg" class="alert-box">
|
|
@@ -106,10 +106,10 @@ export class AuthenticationComponent {
|
|
|
106
106
|
</div>
|
|
107
107
|
</div>
|
|
108
108
|
</div>
|
|
109
|
-
`, isInline: true, styles: [":host{background-color:#fff}.container{max-width:100%;margin-top:60px;padding-top:15px}.frame{width:100%;height:100%;border:0px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
110
|
-
}
|
|
111
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
112
|
-
type: Component,
|
|
109
|
+
`, isInline: true, styles: [":host{background-color:#fff}.container{max-width:100%;margin-top:60px;padding-top:15px}.frame{width:100%;height:100%;border:0px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
110
|
+
}
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthenticationComponent, decorators: [{
|
|
112
|
+
type: Component,
|
|
113
113
|
args: [{ selector: "authentication-iframe", template: `
|
|
114
114
|
<div class="container">
|
|
115
115
|
<iframe #iframe class="frame" [src]="url" (load)="handleChanges()"></iframe>
|
|
@@ -120,12 +120,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
120
120
|
</div>
|
|
121
121
|
</div>
|
|
122
122
|
</div>
|
|
123
|
-
`, host: { class: "outlet-row" }, styles: [":host{background-color:#fff}.container{max-width:100%;margin-top:60px;padding-top:15px}.frame{width:100%;height:100%;border:0px}\n"] }]
|
|
124
|
-
}], ctorParameters:
|
|
125
|
-
type: Inject,
|
|
126
|
-
args: [AUTHENTICATION_ROUTE]
|
|
127
|
-
}] }]
|
|
128
|
-
type: ViewChild,
|
|
129
|
-
args: ["iframe", { static: true }]
|
|
130
|
-
}] } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYXV0aGVudGljYXRpb24vc3JjL2F1dGhlbnRpY2F0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxRQUFRLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQUMsUUFBUSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUMscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBbUNyRixNQUFNLE9BQU8sdUJBQXVCO0lBVWxDLFlBQW9CLHFCQUE0QyxFQUM1QyxZQUEyQixFQUMzQixNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsUUFBbUIsRUFDVyxtQkFBMkI7UUFMekQsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ1csd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFRO0lBQzdFLENBQUM7SUFFRCxRQUFRO1FBQ047Ozs7O1dBS0c7UUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FB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L0QsSUFBSSxhQUFhLEtBQUssRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM1RTtRQUVEOzs7OztZQUtJO1FBQ0osSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO2FBQ2pHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F6R1UsdUJBQXVCLDBKQWVkLG9CQUFvQjttR0FmN0IsdUJBQXVCLHFOQS9CeEI7Ozs7Ozs7Ozs7S0FVUDs7NEZBcUJRLHVCQUF1QjtrQkFqQ25DLFNBQVM7K0JBQ0UsdUJBQXVCLFlBQ3ZCOzs7Ozs7Ozs7O0tBVVAsUUFtQkcsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFDOzswQkFpQmQsTUFBTTsyQkFBQyxvQkFBb0I7NENBVkgsTUFBTTtzQkFBMUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDE2IEh1bnRzbWFuIENhbmNlciBJbnN0aXR1dGUgYXQgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCwgQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeVxyXG4gKi9cclxuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSW5qZWN0LCBSZW5kZXJlcjJ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TG9jYXRpb24sIFBvcFN0YXRlRXZlbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcblxyXG5pbXBvcnQge2ludGVydmFsLCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Zmlyc3R9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHtBdXRoZW50aWNhdGlvblNlcnZpY2UsIEFVVEhFTlRJQ0FUSU9OX1JPVVRFfSBmcm9tIFwiLi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhdXRoZW50aWNhdGlvbi1pZnJhbWVcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICA8aWZyYW1lICNpZnJhbWUgY2xhc3M9XCJmcmFtZVwiIFtzcmNdPVwidXJsXCIgKGxvYWQpPVwiaGFuZGxlQ2hhbmdlcygpXCI+PC9pZnJhbWU+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJfZXJyb3JNc2dcIiBjbGFzcz1cImFsZXJ0LWJveFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIj5cclxuICAgICAgICAgIDxoNSBjbGFzcz1cImFsZXJ0LWhlYWRpbmdcIj5BdXRoZW50aWNhdGlvbiBGYWlsZWQ8L2g1PlxyXG4gICAgICAgICAgPHNwYW4gaWQ9XCJoY2ktbG9naW4tZXJyb3JcIiBjbGFzcz1cImFsZXJ0LXRleHRcIj57e19lcnJvck1zZ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICBcclxuICAgIDpob3N0IHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5jb250YWluZXIge1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1hcmdpbi10b3A6IDYwcHg7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAxNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mcmFtZSB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJvcmRlcjogMHB4O1xyXG4gICAgfVxyXG4gIGBdLFxyXG4gIGhvc3Q6IHtjbGFzczogXCJvdXRsZXQtcm93XCJ9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gIHB1YmxpYyB1cmw7XHJcbiAgcHVibGljIF9lcnJvck1zZzogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkKFwiaWZyYW1lXCIsIHtzdGF0aWM6IHRydWV9KSBpZnJhbWUgOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIHJlc2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBwb3BzdGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZG9tU2FuaXRpemVyIDogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoQVVUSEVOVElDQVRJT05fUk9VVEUpIHByaXZhdGUgYXV0aGVudGljYXRpb25Sb3V0ZTogc3RyaW5nKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8qXHJcbiAgICAgKiBGaXggYmFjayBidWdcclxuICAgICAqIElzc3VlIGlzIHRoYXQgdGhlIGJyb3dzZXIgd2lsbCBnbyBiYWNrIHRvIHRoZSBwcmV2aW91cyByb3V0ZS4gSWYgaXQncyBndWFyZGVkLCB0aGUgcm91dGUgZ3VhcmQgd2lsbCBqdXN0IGxvYWQgdGhlIGxvZ2luIGFnYWluXHJcbiAgICAgKiBFdmVudHVhbGx5IHRoZSBicm93c2VyIGdldHMgdG8gdGhlIC9hdXRoZW50aWNhdGUgcm91dGUgYW5kIGdvaW5nIGJhY2sgZnJvbSB0aGVyZSBsb2FkcyB0aGUgaWZyYW1lIGhpc3RvcnkgYW5kIFNoaWJib2xldGggZGlzcGxheXNcclxuICAgICAqIGFuIGVycm9yIHJlbGF0aW5nIHRvIG5hdmlnYXRpbmcgYmFjay5cclxuICAgICAqL1xyXG4gICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5sb2NhdGlvbi5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5hdXRoZW50aWNhdGlvblJvdXRlKSk7XHJcblxyXG4gICAgdGhpcy5wb3BzdGF0ZVN1YnNjcmlwdGlvbiA9IDxTdWJzY3JpcHRpb24+IHRoaXMubG9jYXRpb24uc3Vic2NyaWJlKCh2YWx1ZTogUG9wU3RhdGVFdmVudCkgPT4ge1xyXG4gICAgICAvL1RoaXMgaXMgZ29pbmcgdG8gcHJldmVudCBiYWNrIGZyb20gd29ya2luZyBmcm9tIHRoZSBsb2dpbiBjb21wb25lbnRcclxuICAgICAgaGlzdG9yeS5nbygxKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYmVnaW5BdXRoZW50aWNhdGlvblByb2Nlc3MoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5ib2R5O1xyXG4gICAgICBpZiAoZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwicHJlXCIpKSB7XHJcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihcInByZVwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fZXJyb3JNc2cgPSBudWxsO1xyXG4gICAgICB2YXIganNvblRleHQgPSBlbGVtZW50LmlubmVyVGV4dDtcclxuXHJcbiAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShqc29uVGV4dCk7XHJcbiAgICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLnN0b3JlVG9rZW4oanNvbi5hdXRoX3Rva2VuKTtcclxuICAgICAgdmFyIGF1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5wcm9jZWVkSWZBdXRoZW50aWNhdGVkKCk7XHJcblxyXG4gICAgICBpZiAoIWF1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICB0aGlzLnJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5iZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAodGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudC5jb250ZW50RG9jdW1lbnQudGl0bGUudG9VcHBlckNhc2UoKSA9PT0gXCJFUlJPUlwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MLnRvVXBwZXJDYXNlKCkgPT09IFwiRk9SQklEREVOXCIpIHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yTXNnID0gXCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBsb2cgaW50byB0aGlzIGFwcGxpY2F0aW9uXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yTXNnID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vQSBiaXQgb2YgYSB3b3JrYXJvdW5kIGZvciBhIFdpbGRGbHkgaXNzdWUuIFN1Y2Nlc3Mgb24gUGFjNGogYXV0aGVudGljYXRpb24sIGJ1dCBmYWlsdXJlIG9uIERCIGxvYWQgb2YgdXNlciBwdXQgdGhpbmdzIGluIGEgd2VpcmQgc3RhdGUuIEp1c3QgbG9nb3V0LCBhbmQgcmVkbyB0aGUgbG9naW4uXHJcbiAgICAgICAgdGhpcy5jbGVhckxvZ2luQW5kUmV0cnkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEFmdGVyIHRoZSBpZnJhbWUgbG9hZHMsIG1ha2UgdGhlIGJhY2tncm91bmQgdHJhbnNwYXJlbnQgc28gd2UgdXNlIHRoZSBpbXBsZW1lbnRhdGlvbidzIGJhY2tncm91bmQgYW5kIG5vdCB0aGUgc3NvIGJhY2tncm91bmQuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHksIFwiYmFja2dyb3VuZC1jb2xvclwiLCBcInRyYW5zcGFyZW50XCIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnBvcHN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyTG9naW5BbmRSZXRyeSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmNsZWFyTG9naW4oKS5zdWJzY3JpYmUoXHJcbiAgICAgICgpID0+IHsgdGhpcy5iZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpOyB9LFxyXG4gICAgICAoZXJyb3IpID0+IHsgdGhpcy5iZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpOyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpOiB2b2lkIHtcclxuICAgIHZhciB0b2tlbkVuZHBvaW50ID0gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UudG9rZW5Mb2NhdGlvbigpO1xyXG5cclxuICAgIGlmICh0b2tlbkVuZHBvaW50ICE9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMudXJsID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRva2VuRW5kcG9pbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgdGhlIHVzZXIgZG9lc24ndCBjb21wbGV0ZSBhdXRoZW50aWNhdGlvbiBiZWZvcmUgdGhlIElkUCBzZXNzaW9uIHRpbWVzIG91dCwgdGhhdCB3aWxsIGJlIGEgcHJvYmxlbSB3aGVuIHRoZXkgZXZlbnR1YWxseVxyXG4gICAgICogYXR0YW1wdCB0byBsb2cgaW4uIEl0IGlzIGxpa2VseSB0aGF0IHVzZXJzIHdpbGwgZG8gdGhpcyBvZnRlbiB3aGVuIHRoZXkgbG9nIG91dCBvciBhcmUgdGltZWQgb3V0IGluIHRoZSBldmVuaW5nLCBsZWF2ZVxyXG4gICAgICogdGhlaXIgYnJvd3NlciBvcGVuLCB0aGVuIGF0dGVtcHQgdG8gbG9nIGJhY2sgaW4gaW4gdGhlIG1vcm5pbmcuIEluIG9yZGVyIHRvIHdvcmsgYXJvdW5kIHRoaXMsIHRoaXMgY29tcG9uZW50IHdpbGwgcmUtcmVxdWVzdFxyXG4gICAgICogdGhlIHRva2VuIHByaW9yIHRvIElkUCB0aW1lb3V0LCB3aGljaCB3aWxsIHJlc2V0IHRoZSAgcHJvY2Vzcy4gVGhpcyB3aWxsIGhhcHBlbiAxIG1pbnV0ZSBiZWZvcmUgaWRwSW5hY3Rpdml0eU1pbnV0ZXNcclxuICAgICAqKi9cclxuICAgIHRoaXMucmVzZXRTdWJzY3JpcHRpb24gPSBpbnRlcnZhbCgodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuaWRwSW5hY3Rpdml0eU1pbnV0ZXMgLSAxKSAqIDYwICogMTAwMClcclxuICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICB0aGlzLmJlZ2luQXV0aGVudGljYXRpb25Qcm9jZXNzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
123
|
+
`, host: { class: "outlet-row" }, styles: [":host{background-color:#fff}.container{max-width:100%;margin-top:60px;padding-top:15px}.frame{width:100%;height:100%;border:0px}\n"] }]
|
|
124
|
+
}], ctorParameters: () => [{ type: i1.AuthenticationService }, { type: i2.DomSanitizer }, { type: i3.Router }, { type: i4.Location }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
125
|
+
type: Inject,
|
|
126
|
+
args: [AUTHENTICATION_ROUTE]
|
|
127
|
+
}] }], propDecorators: { iframe: [{
|
|
128
|
+
type: ViewChild,
|
|
129
|
+
args: ["iframe", { static: true }]
|
|
130
|
+
}] } });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYXV0aGVudGljYXRpb24vc3JjL2F1dGhlbnRpY2F0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxRQUFRLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQUMsUUFBUSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUMscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBbUNyRixNQUFNLE9BQU8sdUJBQXVCO0lBVWxDLFlBQW9CLHFCQUE0QyxFQUM1QyxZQUEyQixFQUMzQixNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsUUFBbUIsRUFDVyxtQkFBMkI7UUFMekQsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ1csd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFRO0lBQzdFLENBQUM7SUFFRCxRQUFRO1FBQ047Ozs7O1dBS0c7UUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FB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SixDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUUvRCxJQUFJLGFBQWEsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUVEOzs7OztZQUtJO1FBQ0osSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO2FBQ2pHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0F6R1UsdUJBQXVCLDBKQWVkLG9CQUFvQjtrR0FmN0IsdUJBQXVCLHFOQS9CeEI7Ozs7Ozs7Ozs7S0FVUDs7MkZBcUJRLHVCQUF1QjtrQkFqQ25DLFNBQVM7K0JBQ0UsdUJBQXVCLFlBQ3ZCOzs7Ozs7Ozs7O0tBVVAsUUFtQkcsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFDOzswQkFpQmQsTUFBTTsyQkFBQyxvQkFBb0I7eUNBVkgsTUFBTTtzQkFBMUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDE2IEh1bnRzbWFuIENhbmNlciBJbnN0aXR1dGUgYXQgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCwgQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeVxyXG4gKi9cclxuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSW5qZWN0LCBSZW5kZXJlcjJ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TG9jYXRpb24sIFBvcFN0YXRlRXZlbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcblxyXG5pbXBvcnQge2ludGVydmFsLCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Zmlyc3R9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHtBdXRoZW50aWNhdGlvblNlcnZpY2UsIEFVVEhFTlRJQ0FUSU9OX1JPVVRFfSBmcm9tIFwiLi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhdXRoZW50aWNhdGlvbi1pZnJhbWVcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICA8aWZyYW1lICNpZnJhbWUgY2xhc3M9XCJmcmFtZVwiIFtzcmNdPVwidXJsXCIgKGxvYWQpPVwiaGFuZGxlQ2hhbmdlcygpXCI+PC9pZnJhbWU+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJfZXJyb3JNc2dcIiBjbGFzcz1cImFsZXJ0LWJveFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIj5cclxuICAgICAgICAgIDxoNSBjbGFzcz1cImFsZXJ0LWhlYWRpbmdcIj5BdXRoZW50aWNhdGlvbiBGYWlsZWQ8L2g1PlxyXG4gICAgICAgICAgPHNwYW4gaWQ9XCJoY2ktbG9naW4tZXJyb3JcIiBjbGFzcz1cImFsZXJ0LXRleHRcIj57e19lcnJvck1zZ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICBcclxuICAgIDpob3N0IHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5jb250YWluZXIge1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1hcmdpbi10b3A6IDYwcHg7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAxNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mcmFtZSB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJvcmRlcjogMHB4O1xyXG4gICAgfVxyXG4gIGBdLFxyXG4gIGhvc3Q6IHtjbGFzczogXCJvdXRsZXQtcm93XCJ9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gIHB1YmxpYyB1cmw7XHJcbiAgcHVibGljIF9lcnJvck1zZzogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkKFwiaWZyYW1lXCIsIHtzdGF0aWM6IHRydWV9KSBpZnJhbWUgOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIHJlc2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBwb3BzdGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZG9tU2FuaXRpemVyIDogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoQVVUSEVOVElDQVRJT05fUk9VVEUpIHByaXZhdGUgYXV0aGVudGljYXRpb25Sb3V0ZTogc3RyaW5nKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8qXHJcbiAgICAgKiBGaXggYmFjayBidWdcclxuICAgICAqIElzc3VlIGlzIHRoYXQgdGhlIGJyb3dzZXIgd2lsbCBnbyBiYWNrIHRvIHRoZSBwcmV2aW91cyByb3V0ZS4gSWYgaXQncyBndWFyZGVkLCB0aGUgcm91dGUgZ3VhcmQgd2lsbCBqdXN0IGxvYWQgdGhlIGxvZ2luIGFnYWluXHJcbiAgICAgKiBFdmVudHVhbGx5IHRoZSBicm93c2VyIGdldHMgdG8gdGhlIC9hdXRoZW50aWNhdGUgcm91dGUgYW5kIGdvaW5nIGJhY2sgZnJvbSB0aGVyZSBsb2FkcyB0aGUgaWZyYW1lIGhpc3RvcnkgYW5kIFNoaWJib2xldGggZGlzcGxheXNcclxuICAgICAqIGFuIGVycm9yIHJlbGF0aW5nIHRvIG5hdmlnYXRpbmcgYmFjay5cclxuICAgICAqL1xyXG4gICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5sb2NhdGlvbi5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5hdXRoZW50aWNhdGlvblJvdXRlKSk7XHJcblxyXG4gICAgdGhpcy5wb3BzdGF0ZVN1YnNjcmlwdGlvbiA9IDxTdWJzY3JpcHRpb24+IHRoaXMubG9jYXRpb24uc3Vic2NyaWJlKCh2YWx1ZTogUG9wU3RhdGVFdmVudCkgPT4ge1xyXG4gICAgICAvL1RoaXMgaXMgZ29pbmcgdG8gcHJldmVudCBiYWNrIGZyb20gd29ya2luZyBmcm9tIHRoZSBsb2dpbiBjb21wb25lbnRcclxuICAgICAgaGlzdG9yeS5nbygxKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYmVnaW5BdXRoZW50aWNhdGlvblByb2Nlc3MoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5ib2R5O1xyXG4gICAgICBpZiAoZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwicHJlXCIpKSB7XHJcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihcInByZVwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fZXJyb3JNc2cgPSBudWxsO1xyXG4gICAgICB2YXIganNvblRleHQgPSBlbGVtZW50LmlubmVyVGV4dDtcclxuXHJcbiAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShqc29uVGV4dCk7XHJcbiAgICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLnN0b3JlVG9rZW4oanNvbi5hdXRoX3Rva2VuKTtcclxuICAgICAgdmFyIGF1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5wcm9jZWVkSWZBdXRoZW50aWNhdGVkKCk7XHJcblxyXG4gICAgICBpZiAoIWF1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICB0aGlzLnJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5iZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAodGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudC5jb250ZW50RG9jdW1lbnQudGl0bGUudG9VcHBlckNhc2UoKSA9PT0gXCJFUlJPUlwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MLnRvVXBwZXJDYXNlKCkgPT09IFwiRk9SQklEREVOXCIpIHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yTXNnID0gXCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBsb2cgaW50byB0aGlzIGFwcGxpY2F0aW9uXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yTXNnID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vQSBiaXQgb2YgYSB3b3JrYXJvdW5kIGZvciBhIFdpbGRGbHkgaXNzdWUuIFN1Y2Nlc3Mgb24gUGFjNGogYXV0aGVudGljYXRpb24sIGJ1dCBmYWlsdXJlIG9uIERCIGxvYWQgb2YgdXNlciBwdXQgdGhpbmdzIGluIGEgd2VpcmQgc3RhdGUuIEp1c3QgbG9nb3V0LCBhbmQgcmVkbyB0aGUgbG9naW4uXHJcbiAgICAgICAgdGhpcy5jbGVhckxvZ2luQW5kUmV0cnkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEFmdGVyIHRoZSBpZnJhbWUgbG9hZHMsIG1ha2UgdGhlIGJhY2tncm91bmQgdHJhbnNwYXJlbnQgc28gd2UgdXNlIHRoZSBpbXBsZW1lbnRhdGlvbidzIGJhY2tncm91bmQgYW5kIG5vdCB0aGUgc3NvIGJhY2tncm91bmQuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHksIFwiYmFja2dyb3VuZC1jb2xvclwiLCBcInRyYW5zcGFyZW50XCIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnBvcHN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyTG9naW5BbmRSZXRyeSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmNsZWFyTG9naW4oKS5zdWJzY3JpYmUoXHJcbiAgICAgICgpID0+IHsgdGhpcy5iZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpOyB9LFxyXG4gICAgICAoZXJyb3IpID0+IHsgdGhpcy5iZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpOyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpOiB2b2lkIHtcclxuICAgIHZhciB0b2tlbkVuZHBvaW50ID0gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UudG9rZW5Mb2NhdGlvbigpO1xyXG5cclxuICAgIGlmICh0b2tlbkVuZHBvaW50ICE9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMudXJsID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRva2VuRW5kcG9pbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgdGhlIHVzZXIgZG9lc24ndCBjb21wbGV0ZSBhdXRoZW50aWNhdGlvbiBiZWZvcmUgdGhlIElkUCBzZXNzaW9uIHRpbWVzIG91dCwgdGhhdCB3aWxsIGJlIGEgcHJvYmxlbSB3aGVuIHRoZXkgZXZlbnR1YWxseVxyXG4gICAgICogYXR0YW1wdCB0byBsb2cgaW4uIEl0IGlzIGxpa2VseSB0aGF0IHVzZXJzIHdpbGwgZG8gdGhpcyBvZnRlbiB3aGVuIHRoZXkgbG9nIG91dCBvciBhcmUgdGltZWQgb3V0IGluIHRoZSBldmVuaW5nLCBsZWF2ZVxyXG4gICAgICogdGhlaXIgYnJvd3NlciBvcGVuLCB0aGVuIGF0dGVtcHQgdG8gbG9nIGJhY2sgaW4gaW4gdGhlIG1vcm5pbmcuIEluIG9yZGVyIHRvIHdvcmsgYXJvdW5kIHRoaXMsIHRoaXMgY29tcG9uZW50IHdpbGwgcmUtcmVxdWVzdFxyXG4gICAgICogdGhlIHRva2VuIHByaW9yIHRvIElkUCB0aW1lb3V0LCB3aGljaCB3aWxsIHJlc2V0IHRoZSAgcHJvY2Vzcy4gVGhpcyB3aWxsIGhhcHBlbiAxIG1pbnV0ZSBiZWZvcmUgaWRwSW5hY3Rpdml0eU1pbnV0ZXNcclxuICAgICAqKi9cclxuICAgIHRoaXMucmVzZXRTdWJzY3JpcHRpb24gPSBpbnRlcnZhbCgodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuaWRwSW5hY3Rpdml0eU1pbnV0ZXMgLSAxKSAqIDYwICogMTAwMClcclxuICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICB0aGlzLmJlZ2luQXV0aGVudGljYXRpb25Qcm9jZXNzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary
|
|
3
|
-
*/
|
|
4
|
-
import { NgModule, Optional, SkipSelf } from "@angular/core";
|
|
5
|
-
import { CommonModule } from "@angular/common";
|
|
6
|
-
import { ReactiveFormsModule, FormsModule } from "@angular/forms";
|
|
7
|
-
import { HTTP_INTERCEPTORS, HttpClientModule } from "@angular/common/http";
|
|
8
|
-
import { RouterModule } from "@angular/router";
|
|
9
|
-
import { CoolStorageModule } from "@angular-cool/storage";
|
|
10
|
-
import { JWT_OPTIONS, JwtHelperService, JwtInterceptor, JwtModule } from "@auth0/angular-jwt";
|
|
11
|
-
import { AuthenticationService } from "./authentication.service";
|
|
12
|
-
import { AuthenticationComponent } from "./authentication.component";
|
|
13
|
-
import { DirectLoginComponent } from "./directlogin.component";
|
|
14
|
-
import { TimeoutNotificationComponent } from "./timeout-notification.component";
|
|
15
|
-
import { AuthorizationInterceptor } from "./authorization.interceptor";
|
|
16
|
-
import { AuthenticationProvider } from "./authentication.provider";
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "@auth0/angular-jwt";
|
|
19
|
-
/**
|
|
20
|
-
* Provide a single auth service and interceptor for the implementing application. Also provide everything
|
|
21
|
-
* from the angular-jwt library.
|
|
22
|
-
*
|
|
23
|
-
* @since 1.0.0
|
|
24
|
-
*/
|
|
25
|
-
export class AuthenticationModule {
|
|
26
|
-
constructor(parentModule) {
|
|
27
|
-
if (parentModule) {
|
|
28
|
-
throw new Error("AuthenticationModule is already loaded.");
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
static forRoot() {
|
|
32
|
-
return {
|
|
33
|
-
providers: [
|
|
34
|
-
AuthenticationProvider,
|
|
35
|
-
JwtHelperService,
|
|
36
|
-
AuthenticationService,
|
|
37
|
-
{
|
|
38
|
-
provide: HTTP_INTERCEPTORS,
|
|
39
|
-
useClass: AuthorizationInterceptor,
|
|
40
|
-
multi: true
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
provide: HTTP_INTERCEPTORS,
|
|
44
|
-
useClass: JwtInterceptor,
|
|
45
|
-
multi: true
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
provide: JWT_OPTIONS,
|
|
49
|
-
useClass: AuthenticationProvider
|
|
50
|
-
}
|
|
51
|
-
],
|
|
52
|
-
ngModule: AuthenticationModule
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
56
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
57
|
-
DirectLoginComponent,
|
|
58
|
-
TimeoutNotificationComponent], imports: [CommonModule,
|
|
59
|
-
HttpClientModule,
|
|
60
|
-
//JwtModule,
|
|
61
|
-
RouterModule,
|
|
62
|
-
FormsModule,
|
|
63
|
-
ReactiveFormsModule,
|
|
64
|
-
CoolStorageModule], exports: [AuthenticationComponent,
|
|
65
|
-
DirectLoginComponent,
|
|
66
|
-
TimeoutNotificationComponent] }); }
|
|
67
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
68
|
-
HttpClientModule,
|
|
69
|
-
//JwtModule,
|
|
70
|
-
RouterModule,
|
|
71
|
-
FormsModule,
|
|
72
|
-
ReactiveFormsModule,
|
|
73
|
-
CoolStorageModule] }); }
|
|
74
|
-
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
76
|
-
type: NgModule,
|
|
77
|
-
args: [{
|
|
78
|
-
imports: [
|
|
79
|
-
CommonModule,
|
|
80
|
-
HttpClientModule,
|
|
81
|
-
//JwtModule,
|
|
82
|
-
RouterModule,
|
|
83
|
-
FormsModule,
|
|
84
|
-
ReactiveFormsModule,
|
|
85
|
-
CoolStorageModule
|
|
86
|
-
],
|
|
87
|
-
declarations: [
|
|
88
|
-
AuthenticationComponent,
|
|
89
|
-
DirectLoginComponent,
|
|
90
|
-
TimeoutNotificationComponent
|
|
91
|
-
],
|
|
92
|
-
exports: [
|
|
93
|
-
AuthenticationComponent,
|
|
94
|
-
DirectLoginComponent,
|
|
95
|
-
TimeoutNotificationComponent
|
|
96
|
-
]
|
|
97
|
-
}]
|
|
98
|
-
}], ctorParameters:
|
|
99
|
-
type: Optional
|
|
100
|
-
}, {
|
|
101
|
-
type: SkipSelf
|
|
102
|
-
}] }]
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary
|
|
3
|
+
*/
|
|
4
|
+
import { NgModule, Optional, SkipSelf } from "@angular/core";
|
|
5
|
+
import { CommonModule } from "@angular/common";
|
|
6
|
+
import { ReactiveFormsModule, FormsModule } from "@angular/forms";
|
|
7
|
+
import { HTTP_INTERCEPTORS, HttpClientModule } from "@angular/common/http";
|
|
8
|
+
import { RouterModule } from "@angular/router";
|
|
9
|
+
import { CoolStorageModule } from "@angular-cool/storage";
|
|
10
|
+
import { JWT_OPTIONS, JwtHelperService, JwtInterceptor, JwtModule } from "@auth0/angular-jwt";
|
|
11
|
+
import { AuthenticationService } from "./authentication.service";
|
|
12
|
+
import { AuthenticationComponent } from "./authentication.component";
|
|
13
|
+
import { DirectLoginComponent } from "./directlogin.component";
|
|
14
|
+
import { TimeoutNotificationComponent } from "./timeout-notification.component";
|
|
15
|
+
import { AuthorizationInterceptor } from "./authorization.interceptor";
|
|
16
|
+
import { AuthenticationProvider } from "./authentication.provider";
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "@auth0/angular-jwt";
|
|
19
|
+
/**
|
|
20
|
+
* Provide a single auth service and interceptor for the implementing application. Also provide everything
|
|
21
|
+
* from the angular-jwt library.
|
|
22
|
+
*
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export class AuthenticationModule {
|
|
26
|
+
constructor(parentModule) {
|
|
27
|
+
if (parentModule) {
|
|
28
|
+
throw new Error("AuthenticationModule is already loaded.");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
static forRoot() {
|
|
32
|
+
return {
|
|
33
|
+
providers: [
|
|
34
|
+
AuthenticationProvider,
|
|
35
|
+
JwtHelperService,
|
|
36
|
+
AuthenticationService,
|
|
37
|
+
{
|
|
38
|
+
provide: HTTP_INTERCEPTORS,
|
|
39
|
+
useClass: AuthorizationInterceptor,
|
|
40
|
+
multi: true
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
provide: HTTP_INTERCEPTORS,
|
|
44
|
+
useClass: JwtInterceptor,
|
|
45
|
+
multi: true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
provide: JWT_OPTIONS,
|
|
49
|
+
useClass: AuthenticationProvider
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
ngModule: AuthenticationModule
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthenticationModule, deps: [{ token: i1.JwtModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
56
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: AuthenticationModule, declarations: [AuthenticationComponent,
|
|
57
|
+
DirectLoginComponent,
|
|
58
|
+
TimeoutNotificationComponent], imports: [CommonModule,
|
|
59
|
+
HttpClientModule,
|
|
60
|
+
//JwtModule,
|
|
61
|
+
RouterModule,
|
|
62
|
+
FormsModule,
|
|
63
|
+
ReactiveFormsModule,
|
|
64
|
+
CoolStorageModule], exports: [AuthenticationComponent,
|
|
65
|
+
DirectLoginComponent,
|
|
66
|
+
TimeoutNotificationComponent] }); }
|
|
67
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthenticationModule, imports: [CommonModule,
|
|
68
|
+
HttpClientModule,
|
|
69
|
+
//JwtModule,
|
|
70
|
+
RouterModule,
|
|
71
|
+
FormsModule,
|
|
72
|
+
ReactiveFormsModule,
|
|
73
|
+
CoolStorageModule] }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthenticationModule, decorators: [{
|
|
76
|
+
type: NgModule,
|
|
77
|
+
args: [{
|
|
78
|
+
imports: [
|
|
79
|
+
CommonModule,
|
|
80
|
+
HttpClientModule,
|
|
81
|
+
//JwtModule,
|
|
82
|
+
RouterModule,
|
|
83
|
+
FormsModule,
|
|
84
|
+
ReactiveFormsModule,
|
|
85
|
+
CoolStorageModule
|
|
86
|
+
],
|
|
87
|
+
declarations: [
|
|
88
|
+
AuthenticationComponent,
|
|
89
|
+
DirectLoginComponent,
|
|
90
|
+
TimeoutNotificationComponent
|
|
91
|
+
],
|
|
92
|
+
exports: [
|
|
93
|
+
AuthenticationComponent,
|
|
94
|
+
DirectLoginComponent,
|
|
95
|
+
TimeoutNotificationComponent
|
|
96
|
+
]
|
|
97
|
+
}]
|
|
98
|
+
}], ctorParameters: () => [{ type: i1.JwtModule, decorators: [{
|
|
99
|
+
type: Optional
|
|
100
|
+
}, {
|
|
101
|
+
type: SkipSelf
|
|
102
|
+
}] }] });
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYXV0aGVudGljYXRpb24vc3JjL2F1dGhlbnRpY2F0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBc0IsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFNUYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7OztBQUVqRTs7Ozs7R0FLRztBQXNCSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9DLFlBQXVCO1FBQ3pELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNULHNCQUFzQjtnQkFDdEIsZ0JBQWdCO2dCQUNoQixxQkFBcUI7Z0JBQ3JCO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLEtBQUssRUFBRSxJQUFJO2lCQUNaO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxjQUFjO29CQUN4QixLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsV0FBVztvQkFDcEIsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakM7YUFDRjtZQUNELFFBQVEsRUFBRSxvQkFBb0I7U0FDL0IsQ0FBQTtJQUNILENBQUM7OEdBN0JVLG9CQUFvQjsrR0FBcEIsb0JBQW9CLGlCQVY3Qix1QkFBdUI7WUFDdkIsb0JBQW9CO1lBQ3BCLDRCQUE0QixhQVg1QixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixpQkFBaUIsYUFRakIsdUJBQXVCO1lBQ3ZCLG9CQUFvQjtZQUNwQiw0QkFBNEI7K0dBR25CLG9CQUFvQixZQW5CN0IsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCOzsyRkFhUixvQkFBb0I7a0JBckJoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixpQkFBaUI7cUJBQ2xCO29CQUNELFlBQVksRUFBRTt3QkFDWix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsNEJBQTRCO3FCQUM3QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLDRCQUE0QjtxQkFDN0I7aUJBQ0Y7OzBCQUVjLFFBQVE7OzBCQUFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgSHVudHNtYW4gQ2FuY2VyIEluc3RpdHV0ZSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBVdGFoLCBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5XHJcbiAqL1xyXG5pbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCwgU2tpcFNlbGZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7UmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0hUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7Q29vbFN0b3JhZ2VNb2R1bGV9IGZyb20gXCJAYW5ndWxhci1jb29sL3N0b3JhZ2VcIjtcclxuaW1wb3J0IHtKV1RfT1BUSU9OUywgSnd0SGVscGVyU2VydmljZSwgSnd0SW50ZXJjZXB0b3IsIEp3dE1vZHVsZX0gZnJvbSBcIkBhdXRoMC9hbmd1bGFyLWp3dFwiO1xyXG5cclxuaW1wb3J0IHtBdXRoZW50aWNhdGlvblNlcnZpY2V9IGZyb20gXCIuL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtBdXRoZW50aWNhdGlvbkNvbXBvbmVudH0gZnJvbSBcIi4vYXV0aGVudGljYXRpb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RGlyZWN0TG9naW5Db21wb25lbnR9IGZyb20gXCIuL2RpcmVjdGxvZ2luLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RpbWVvdXROb3RpZmljYXRpb25Db21wb25lbnR9IGZyb20gXCIuL3RpbWVvdXQtbm90aWZpY2F0aW9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0F1dGhvcml6YXRpb25JbnRlcmNlcHRvcn0gZnJvbSBcIi4vYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvclwiO1xyXG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uUHJvdmlkZXJ9IGZyb20gXCIuL2F1dGhlbnRpY2F0aW9uLnByb3ZpZGVyXCI7XHJcblxyXG4vKipcclxuICogUHJvdmlkZSBhIHNpbmdsZSBhdXRoIHNlcnZpY2UgYW5kIGludGVyY2VwdG9yIGZvciB0aGUgaW1wbGVtZW50aW5nIGFwcGxpY2F0aW9uLiAgQWxzbyBwcm92aWRlIGV2ZXJ5dGhpbmdcclxuICogZnJvbSB0aGUgYW5ndWxhci1qd3QgbGlicmFyeS5cclxuICpcclxuICogQHNpbmNlIDEuMC4wXHJcbiAqL1xyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICAvL0p3dE1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIENvb2xTdG9yYWdlTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEF1dGhlbnRpY2F0aW9uQ29tcG9uZW50LFxyXG4gICAgRGlyZWN0TG9naW5Db21wb25lbnQsXHJcbiAgICBUaW1lb3V0Tm90aWZpY2F0aW9uQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBBdXRoZW50aWNhdGlvbkNvbXBvbmVudCxcclxuICAgIERpcmVjdExvZ2luQ29tcG9uZW50LFxyXG4gICAgVGltZW91dE5vdGlmaWNhdGlvbkNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uTW9kdWxlIHtcclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnRNb2R1bGU6IEp3dE1vZHVsZSkge1xyXG4gICAgaWYgKHBhcmVudE1vZHVsZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdXRoZW50aWNhdGlvbk1vZHVsZSBpcyBhbHJlYWR5IGxvYWRlZC5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXV0aGVudGljYXRpb25Nb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIsXHJcbiAgICAgICAgSnd0SGVscGVyU2VydmljZSxcclxuICAgICAgICBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXHJcbiAgICAgICAgICB1c2VDbGFzczogQXV0aG9yaXphdGlvbkludGVyY2VwdG9yLFxyXG4gICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICAgICAgdXNlQ2xhc3M6IEp3dEludGVyY2VwdG9yLFxyXG4gICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEpXVF9PUFRJT05TLFxyXG4gICAgICAgICAgdXNlQ2xhc3M6IEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJcclxuICAgICAgICB9XHJcbiAgICAgIF0sXHJcbiAgICAgIG5nTW9kdWxlOiBBdXRoZW50aWNhdGlvbk1vZHVsZVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { Inject, Injectable, InjectionToken } from "@angular/core";
|
|
2
|
-
import { CoolLocalStorage } from '@angular-cool/storage';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular-cool/storage";
|
|
5
|
-
export let AUTHENTICATION_TOKEN_KEY = new InjectionToken("authentication_token_key");
|
|
6
|
-
export class AuthenticationProvider {
|
|
7
|
-
constructor(_localStorageService, _authenticationTokenKey) {
|
|
8
|
-
this._localStorageService = _localStorageService;
|
|
9
|
-
this._authenticationTokenKey = _authenticationTokenKey;
|
|
10
|
-
this.whitelistedDomains = [
|
|
11
|
-
"localhost",
|
|
12
|
-
new RegExp(".*[.]utah[.]edu")
|
|
13
|
-
];
|
|
14
|
-
this.tokenGetter = () => {
|
|
15
|
-
return this.authToken;
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
get authenticationTokenKey() {
|
|
19
|
-
return this._authenticationTokenKey;
|
|
20
|
-
}
|
|
21
|
-
set authenticationTokenKey(_authenticationTokenKey) {
|
|
22
|
-
this._authenticationTokenKey = _authenticationTokenKey;
|
|
23
|
-
}
|
|
24
|
-
get authToken() {
|
|
25
|
-
return this._localStorageService.getItem(this._authenticationTokenKey);
|
|
26
|
-
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
31
|
-
type: Injectable
|
|
32
|
-
}], ctorParameters:
|
|
33
|
-
type: Inject,
|
|
34
|
-
args: [AUTHENTICATION_TOKEN_KEY]
|
|
35
|
-
}] }]
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Inject, Injectable, InjectionToken } from "@angular/core";
|
|
2
|
+
import { CoolLocalStorage } from '@angular-cool/storage';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular-cool/storage";
|
|
5
|
+
export let AUTHENTICATION_TOKEN_KEY = new InjectionToken("authentication_token_key");
|
|
6
|
+
export class AuthenticationProvider {
|
|
7
|
+
constructor(_localStorageService, _authenticationTokenKey) {
|
|
8
|
+
this._localStorageService = _localStorageService;
|
|
9
|
+
this._authenticationTokenKey = _authenticationTokenKey;
|
|
10
|
+
this.whitelistedDomains = [
|
|
11
|
+
"localhost",
|
|
12
|
+
new RegExp(".*[.]utah[.]edu")
|
|
13
|
+
];
|
|
14
|
+
this.tokenGetter = () => {
|
|
15
|
+
return this.authToken;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
get authenticationTokenKey() {
|
|
19
|
+
return this._authenticationTokenKey;
|
|
20
|
+
}
|
|
21
|
+
set authenticationTokenKey(_authenticationTokenKey) {
|
|
22
|
+
this._authenticationTokenKey = _authenticationTokenKey;
|
|
23
|
+
}
|
|
24
|
+
get authToken() {
|
|
25
|
+
return this._localStorageService.getItem(this._authenticationTokenKey);
|
|
26
|
+
}
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthenticationProvider, deps: [{ token: i1.CoolLocalStorage }, { token: AUTHENTICATION_TOKEN_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthenticationProvider }); }
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthenticationProvider, decorators: [{
|
|
31
|
+
type: Injectable
|
|
32
|
+
}], ctorParameters: () => [{ type: i1.CoolLocalStorage }, { type: undefined, decorators: [{
|
|
33
|
+
type: Inject,
|
|
34
|
+
args: [AUTHENTICATION_TOKEN_KEY]
|
|
35
|
+
}] }] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hdXRoZW50aWNhdGlvbi9zcmMvYXV0aGVudGljYXRpb24ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBSTNFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7QUFFdkQsTUFBTSxDQUFDLElBQUksd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQVMsMEJBQTBCLENBQUMsQ0FBQztBQUc3RixNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLFlBQW9CLG9CQUFzQyxFQUNKLHVCQUErQjtRQURqRSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWtCO1FBQ0osNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFRO1FBTjlFLHVCQUFrQixHQUFHO1lBQzFCLFdBQVc7WUFDWCxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztTQUM5QixDQUFDO1FBS0ssZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUMsQ0FBQTtJQUp1RixDQUFDO0lBTXpGLElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLHNCQUFzQixDQUFDLHVCQUErQjtRQUN4RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQWUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNqRixDQUFDOzhHQXhCVSxzQkFBc0Isa0RBUWIsd0JBQXdCO2tIQVJqQyxzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQVNJLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3Rvcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmltcG9ydCB7Q29vbExvY2FsU3RvcmFnZX0gZnJvbSAnQGFuZ3VsYXItY29vbC9zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBsZXQgQVVUSEVOVElDQVRJT05fVE9LRU5fS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXCJhdXRoZW50aWNhdGlvbl90b2tlbl9rZXlcIik7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblByb3ZpZGVyIHtcclxuXHJcbiAgcHVibGljIHdoaXRlbGlzdGVkRG9tYWlucyA9IFtcclxuICAgIFwibG9jYWxob3N0XCIsXHJcbiAgICBuZXcgUmVnRXhwKFwiLipbLl11dGFoWy5dZWR1XCIpXHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9jYWxTdG9yYWdlU2VydmljZTogQ29vbExvY2FsU3RvcmFnZSxcclxuICAgICAgICAgICAgICBASW5qZWN0KEFVVEhFTlRJQ0FUSU9OX1RPS0VOX0tFWSkgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25Ub2tlbktleTogc3RyaW5nKSB7fVxyXG5cclxuICBwdWJsaWMgdG9rZW5HZXR0ZXIgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRoVG9rZW47XHJcbiAgfVxyXG5cclxuICBnZXQgYXV0aGVudGljYXRpb25Ub2tlbktleSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uVG9rZW5LZXk7XHJcbiAgfVxyXG5cclxuICBzZXQgYXV0aGVudGljYXRpb25Ub2tlbktleShfYXV0aGVudGljYXRpb25Ub2tlbktleTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9hdXRoZW50aWNhdGlvblRva2VuS2V5ID0gX2F1dGhlbnRpY2F0aW9uVG9rZW5LZXk7XHJcbiAgfVxyXG5cclxuICBnZXQgYXV0aFRva2VuKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gPHN0cmluZz50aGlzLl9sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5fYXV0aGVudGljYXRpb25Ub2tlbktleSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|