@huntsman-cancer-institute/authentication 12.5.0 → 14.1.0
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 +1 -1
- package/directlogin.component.d.ts +4 -4
- package/esm2020/authentication.component.mjs +131 -0
- package/esm2020/authentication.module.mjs +105 -0
- package/esm2020/authentication.provider.mjs +36 -0
- package/esm2020/authentication.service.mjs +393 -0
- package/esm2020/authorization.interceptor.mjs +79 -0
- package/esm2020/directlogin.component.mjs +96 -0
- package/esm2020/huntsman-cancer-institute-authentication.mjs +5 -0
- package/esm2020/index.mjs +13 -0
- package/esm2020/route-guard.service.mjs +52 -0
- package/esm2020/timeout-notification.component.mjs +148 -0
- package/fesm2015/huntsman-cancer-institute-authentication.mjs +1000 -0
- package/fesm2015/huntsman-cancer-institute-authentication.mjs.map +1 -0
- package/{fesm2015/huntsman-cancer-institute-authentication.js → fesm2020/huntsman-cancer-institute-authentication.mjs} +64 -189
- package/fesm2020/huntsman-cancer-institute-authentication.mjs.map +1 -0
- package/package.json +26 -18
- package/timeout-notification.component.d.ts +1 -1
- package/CHANGELOG.md +0 -4
- package/bundles/huntsman-cancer-institute-authentication.umd.js +0 -945
- package/bundles/huntsman-cancer-institute-authentication.umd.js.map +0 -1
- package/bundles/huntsman-cancer-institute-authentication.umd.min.js +0 -2
- package/bundles/huntsman-cancer-institute-authentication.umd.min.js.map +0 -1
- package/esm2015/authentication.component.js +0 -153
- package/esm2015/authentication.module.js +0 -107
- package/esm2015/authentication.provider.js +0 -36
- package/esm2015/authentication.service.js +0 -393
- package/esm2015/authorization.interceptor.js +0 -79
- package/esm2015/directlogin.component.js +0 -146
- package/esm2015/huntsman-cancer-institute-authentication.js +0 -5
- package/esm2015/index.js +0 -13
- package/esm2015/route-guard.service.js +0 -52
- package/esm2015/timeout-notification.component.js +0 -205
- package/esm5/authentication.component.js +0 -120
- package/esm5/authentication.module.js +0 -109
- package/esm5/authentication.provider.js +0 -47
- package/esm5/authentication.service.js +0 -411
- package/esm5/authorization.interceptor.js +0 -81
- package/esm5/directlogin.component.js +0 -53
- package/esm5/huntsman-cancer-institute-authentication.js +0 -5
- package/esm5/index.js +0 -13
- package/esm5/route-guard.service.js +0 -55
- package/esm5/timeout-notification.component.js +0 -125
- package/fesm2015/huntsman-cancer-institute-authentication.js.map +0 -1
- package/fesm5/huntsman-cancer-institute-authentication.js +0 -937
- package/fesm5/huntsman-cancer-institute-authentication.js.map +0 -1
- package/huntsman-cancer-institute-authentication.d.ts +0 -5
|
@@ -23,5 +23,5 @@ export declare class AuthenticationComponent {
|
|
|
23
23
|
private clearLoginAndRetry;
|
|
24
24
|
private beginAuthenticationProcess;
|
|
25
25
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthenticationComponent, never>;
|
|
26
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AuthenticationComponent, "authentication-iframe", never, {}, {}, never, never>;
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AuthenticationComponent, "authentication-iframe", never, {}, {}, never, never, false>;
|
|
27
27
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { OnInit } from "@angular/core";
|
|
2
2
|
import { AuthenticationService } from "./authentication.service";
|
|
3
|
-
import {
|
|
3
|
+
import { UntypedFormBuilder, UntypedFormGroup } from "@angular/forms";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class DirectLoginComponent implements OnInit {
|
|
6
6
|
private _authenticationService;
|
|
7
7
|
private _formBuilder;
|
|
8
|
-
_loginForm:
|
|
8
|
+
_loginForm: UntypedFormGroup;
|
|
9
9
|
_errorMsg: string;
|
|
10
|
-
constructor(_authenticationService: AuthenticationService, _formBuilder:
|
|
10
|
+
constructor(_authenticationService: AuthenticationService, _formBuilder: UntypedFormBuilder);
|
|
11
11
|
/**
|
|
12
12
|
* Initializes the authentication form.
|
|
13
13
|
*/
|
|
@@ -17,5 +17,5 @@ export declare class DirectLoginComponent implements OnInit {
|
|
|
17
17
|
*/
|
|
18
18
|
login(): void;
|
|
19
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<DirectLoginComponent, never>;
|
|
20
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DirectLoginComponent, "hci-login-form", never, {}, {}, never, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DirectLoginComponent, "hci-login-form", never, {}, {}, never, never, false>;
|
|
21
21
|
}
|
|
@@ -0,0 +1,131 @@
|
|
|
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
|
+
}
|
|
99
|
+
AuthenticationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", 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 });
|
|
100
|
+
AuthenticationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AuthenticationComponent, selector: "authentication-iframe", host: { classAttribute: "outlet-row" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], ngImport: i0, template: `
|
|
101
|
+
<div class="container">
|
|
102
|
+
<iframe #iframe class="frame" [src]="url" (load)="handleChanges()"></iframe>
|
|
103
|
+
<div *ngIf="_errorMsg" class="alert-box">
|
|
104
|
+
<div class="alert alert-danger">
|
|
105
|
+
<h5 class="alert-heading">Authentication Failed</h5>
|
|
106
|
+
<span id="hci-login-error" class="alert-text">{{_errorMsg}}</span>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
`, 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"] }] });
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationComponent, decorators: [{
|
|
112
|
+
type: Component,
|
|
113
|
+
args: [{ selector: "authentication-iframe", template: `
|
|
114
|
+
<div class="container">
|
|
115
|
+
<iframe #iframe class="frame" [src]="url" (load)="handleChanges()"></iframe>
|
|
116
|
+
<div *ngIf="_errorMsg" class="alert-box">
|
|
117
|
+
<div class="alert alert-danger">
|
|
118
|
+
<h5 class="alert-heading">Authentication Failed</h5>
|
|
119
|
+
<span id="hci-login-error" class="alert-text">{{_errorMsg}}</span>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
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: function () { return [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYXV0aGVudGljYXRpb24vc3JjL2F1dGhlbnRpY2F0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxRQUFRLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQUMsUUFBUSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUMscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBbUNyRixNQUFNLE9BQU8sdUJBQXVCO0lBVWxDLFlBQW9CLHFCQUE0QyxFQUM1QyxZQUEyQixFQUMzQixNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsUUFBbUIsRUFDVyxtQkFBMkI7UUFMekQsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ1csd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFRO0lBQzdFLENBQUM7SUFFRCxRQUFRO1FBQ047Ozs7O1dBS0c7UUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRTFGLElBQUksQ0FBQyxvQkFBb0IsR0FBa0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDMUYscUVBQXFFO1lBQ3JFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUU7WUFDOUMsT0FBTztTQUNSO1FBRUQsSUFBSTtZQUNGLElBQUksT0FBTyxHQUFnQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQzFFLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEM7WUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBRWpDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFFeEUsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQzthQUNuQztTQUNGO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxFQUFFO2dCQUM3RSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLFdBQVcsRUFBRTtvQkFDMUYsSUFBSSxDQUFDLFNBQVMsR0FBRyx5REFBeUQsQ0FBQztpQkFDNUU7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO2dCQUVELDBLQUEwSztnQkFDMUssSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDM0I7U0FDRjtRQUVELGdJQUFnSTtRQUNoSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUMvQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDNUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFL0QsSUFBSSxhQUFhLEtBQUssRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM1RTtRQUVEOzs7OztZQUtJO1FBQ0osSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO2FBQ2pHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7b0hBekdVLHVCQUF1QiwwSkFlZCxvQkFBb0I7d0dBZjdCLHVCQUF1QixxTkEvQnhCOzs7Ozs7Ozs7O0tBVVA7MkZBcUJRLHVCQUF1QjtrQkFqQ25DLFNBQVM7K0JBQ0UsdUJBQXVCLFlBQ3ZCOzs7Ozs7Ozs7O0tBVVAsUUFtQkcsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFDOzswQkFpQmQsTUFBTTsyQkFBQyxvQkFBb0I7NENBVkgsTUFBTTtzQkFBMUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDE2IEh1bnRzbWFuIENhbmNlciBJbnN0aXR1dGUgYXQgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCwgQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeVxyXG4gKi9cclxuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSW5qZWN0LCBSZW5kZXJlcjJ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TG9jYXRpb24sIFBvcFN0YXRlRXZlbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcblxyXG5pbXBvcnQge2ludGVydmFsLCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Zmlyc3R9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHtBdXRoZW50aWNhdGlvblNlcnZpY2UsIEFVVEhFTlRJQ0FUSU9OX1JPVVRFfSBmcm9tIFwiLi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhdXRoZW50aWNhdGlvbi1pZnJhbWVcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICA8aWZyYW1lICNpZnJhbWUgY2xhc3M9XCJmcmFtZVwiIFtzcmNdPVwidXJsXCIgKGxvYWQpPVwiaGFuZGxlQ2hhbmdlcygpXCI+PC9pZnJhbWU+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJfZXJyb3JNc2dcIiBjbGFzcz1cImFsZXJ0LWJveFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIj5cclxuICAgICAgICAgIDxoNSBjbGFzcz1cImFsZXJ0LWhlYWRpbmdcIj5BdXRoZW50aWNhdGlvbiBGYWlsZWQ8L2g1PlxyXG4gICAgICAgICAgPHNwYW4gaWQ9XCJoY2ktbG9naW4tZXJyb3JcIiBjbGFzcz1cImFsZXJ0LXRleHRcIj57e19lcnJvck1zZ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICBcclxuICAgIDpob3N0IHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5jb250YWluZXIge1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1hcmdpbi10b3A6IDYwcHg7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAxNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mcmFtZSB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJvcmRlcjogMHB4O1xyXG4gICAgfVxyXG4gIGBdLFxyXG4gIGhvc3Q6IHtjbGFzczogXCJvdXRsZXQtcm93XCJ9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gIHB1YmxpYyB1cmw7XHJcbiAgcHVibGljIF9lcnJvck1zZzogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkKFwiaWZyYW1lXCIsIHtzdGF0aWM6IHRydWV9KSBpZnJhbWUgOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIHJlc2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBwb3BzdGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZG9tU2FuaXRpemVyIDogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoQVVUSEVOVElDQVRJT05fUk9VVEUpIHByaXZhdGUgYXV0aGVudGljYXRpb25Sb3V0ZTogc3RyaW5nKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8qXHJcbiAgICAgKiBGaXggYmFjayBidWdcclxuICAgICAqIElzc3VlIGlzIHRoYXQgdGhlIGJyb3dzZXIgd2lsbCBnbyBiYWNrIHRvIHRoZSBwcmV2aW91cyByb3V0ZS4gSWYgaXQncyBndWFyZGVkLCB0aGUgcm91dGUgZ3VhcmQgd2lsbCBqdXN0IGxvYWQgdGhlIGxvZ2luIGFnYWluXHJcbiAgICAgKiBFdmVudHVhbGx5IHRoZSBicm93c2VyIGdldHMgdG8gdGhlIC9hdXRoZW50aWNhdGUgcm91dGUgYW5kIGdvaW5nIGJhY2sgZnJvbSB0aGVyZSBsb2FkcyB0aGUgaWZyYW1lIGhpc3RvcnkgYW5kIFNoaWJib2xldGggZGlzcGxheXNcclxuICAgICAqIGFuIGVycm9yIHJlbGF0aW5nIHRvIG5hdmlnYXRpbmcgYmFjay5cclxuICAgICAqL1xyXG4gICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5sb2NhdGlvbi5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5hdXRoZW50aWNhdGlvblJvdXRlKSk7XHJcblxyXG4gICAgdGhpcy5wb3BzdGF0ZVN1YnNjcmlwdGlvbiA9IDxTdWJzY3JpcHRpb24+IHRoaXMubG9jYXRpb24uc3Vic2NyaWJlKCh2YWx1ZTogUG9wU3RhdGVFdmVudCkgPT4ge1xyXG4gICAgICAvL1RoaXMgaXMgZ29pbmcgdG8gcHJldmVudCBiYWNrIGZyb20gd29ya2luZyBmcm9tIHRoZSBsb2dpbiBjb21wb25lbnRcclxuICAgICAgaGlzdG9yeS5nbygxKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYmVnaW5BdXRoZW50aWNhdGlvblByb2Nlc3MoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5ib2R5O1xyXG4gICAgICBpZiAoZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwicHJlXCIpKSB7XHJcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihcInByZVwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fZXJyb3JNc2cgPSBudWxsO1xyXG4gICAgICB2YXIganNvblRleHQgPSBlbGVtZW50LmlubmVyVGV4dDtcclxuXHJcbiAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShqc29uVGV4dCk7XHJcbiAgICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLnN0b3JlVG9rZW4oanNvbi5hdXRoX3Rva2VuKTtcclxuICAgICAgdmFyIGF1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5wcm9jZWVkSWZBdXRoZW50aWNhdGVkKCk7XHJcblxyXG4gICAgICBpZiAoIWF1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICB0aGlzLnJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5iZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAodGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudC5jb250ZW50RG9jdW1lbnQudGl0bGUudG9VcHBlckNhc2UoKSA9PT0gXCJFUlJPUlwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MLnRvVXBwZXJDYXNlKCkgPT09IFwiRk9SQklEREVOXCIpIHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yTXNnID0gXCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBsb2cgaW50byB0aGlzIGFwcGxpY2F0aW9uXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yTXNnID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vQSBiaXQgb2YgYSB3b3JrYXJvdW5kIGZvciBhIFdpbGRGbHkgaXNzdWUuIFN1Y2Nlc3Mgb24gUGFjNGogYXV0aGVudGljYXRpb24sIGJ1dCBmYWlsdXJlIG9uIERCIGxvYWQgb2YgdXNlciBwdXQgdGhpbmdzIGluIGEgd2VpcmQgc3RhdGUuIEp1c3QgbG9nb3V0LCBhbmQgcmVkbyB0aGUgbG9naW4uXHJcbiAgICAgICAgdGhpcy5jbGVhckxvZ2luQW5kUmV0cnkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEFmdGVyIHRoZSBpZnJhbWUgbG9hZHMsIG1ha2UgdGhlIGJhY2tncm91bmQgdHJhbnNwYXJlbnQgc28gd2UgdXNlIHRoZSBpbXBsZW1lbnRhdGlvbidzIGJhY2tncm91bmQgYW5kIG5vdCB0aGUgc3NvIGJhY2tncm91bmQuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHksIFwiYmFja2dyb3VuZC1jb2xvclwiLCBcInRyYW5zcGFyZW50XCIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnBvcHN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyTG9naW5BbmRSZXRyeSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmNsZWFyTG9naW4oKS5zdWJzY3JpYmUoXHJcbiAgICAgICgpID0+IHsgdGhpcy5iZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpOyB9LFxyXG4gICAgICAoZXJyb3IpID0+IHsgdGhpcy5iZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpOyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiZWdpbkF1dGhlbnRpY2F0aW9uUHJvY2VzcygpOiB2b2lkIHtcclxuICAgIHZhciB0b2tlbkVuZHBvaW50ID0gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UudG9rZW5Mb2NhdGlvbigpO1xyXG5cclxuICAgIGlmICh0b2tlbkVuZHBvaW50ICE9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMudXJsID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRva2VuRW5kcG9pbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgdGhlIHVzZXIgZG9lc24ndCBjb21wbGV0ZSBhdXRoZW50aWNhdGlvbiBiZWZvcmUgdGhlIElkUCBzZXNzaW9uIHRpbWVzIG91dCwgdGhhdCB3aWxsIGJlIGEgcHJvYmxlbSB3aGVuIHRoZXkgZXZlbnR1YWxseVxyXG4gICAgICogYXR0YW1wdCB0byBsb2cgaW4uIEl0IGlzIGxpa2VseSB0aGF0IHVzZXJzIHdpbGwgZG8gdGhpcyBvZnRlbiB3aGVuIHRoZXkgbG9nIG91dCBvciBhcmUgdGltZWQgb3V0IGluIHRoZSBldmVuaW5nLCBsZWF2ZVxyXG4gICAgICogdGhlaXIgYnJvd3NlciBvcGVuLCB0aGVuIGF0dGVtcHQgdG8gbG9nIGJhY2sgaW4gaW4gdGhlIG1vcm5pbmcuIEluIG9yZGVyIHRvIHdvcmsgYXJvdW5kIHRoaXMsIHRoaXMgY29tcG9uZW50IHdpbGwgcmUtcmVxdWVzdFxyXG4gICAgICogdGhlIHRva2VuIHByaW9yIHRvIElkUCB0aW1lb3V0LCB3aGljaCB3aWxsIHJlc2V0IHRoZSAgcHJvY2Vzcy4gVGhpcyB3aWxsIGhhcHBlbiAxIG1pbnV0ZSBiZWZvcmUgaWRwSW5hY3Rpdml0eU1pbnV0ZXNcclxuICAgICAqKi9cclxuICAgIHRoaXMucmVzZXRTdWJzY3JpcHRpb24gPSBpbnRlcnZhbCgodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuaWRwSW5hY3Rpdml0eU1pbnV0ZXMgLSAxKSAqIDYwICogMTAwMClcclxuICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICB0aGlzLmJlZ2luQXV0aGVudGljYXRpb25Qcm9jZXNzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,105 @@
|
|
|
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 { RouteGuardService } from "./route-guard.service";
|
|
13
|
+
import { AuthenticationComponent } from "./authentication.component";
|
|
14
|
+
import { DirectLoginComponent } from "./directlogin.component";
|
|
15
|
+
import { TimeoutNotificationComponent } from "./timeout-notification.component";
|
|
16
|
+
import { AuthorizationInterceptor } from "./authorization.interceptor";
|
|
17
|
+
import { AuthenticationProvider } from "./authentication.provider";
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "@auth0/angular-jwt";
|
|
20
|
+
/**
|
|
21
|
+
* Provide a single auth service and interceptor for the implementing application. Also provide everything
|
|
22
|
+
* from the angular-jwt library.
|
|
23
|
+
*
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
*/
|
|
26
|
+
export class AuthenticationModule {
|
|
27
|
+
constructor(parentModule) {
|
|
28
|
+
if (parentModule) {
|
|
29
|
+
throw new Error("AuthenticationModule is already loaded.");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
static forRoot() {
|
|
33
|
+
return {
|
|
34
|
+
providers: [
|
|
35
|
+
AuthenticationProvider,
|
|
36
|
+
JwtHelperService,
|
|
37
|
+
AuthenticationService,
|
|
38
|
+
RouteGuardService,
|
|
39
|
+
{
|
|
40
|
+
provide: HTTP_INTERCEPTORS,
|
|
41
|
+
useClass: AuthorizationInterceptor,
|
|
42
|
+
multi: true
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
provide: HTTP_INTERCEPTORS,
|
|
46
|
+
useClass: JwtInterceptor,
|
|
47
|
+
multi: true
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
provide: JWT_OPTIONS,
|
|
51
|
+
useClass: AuthenticationProvider
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
ngModule: AuthenticationModule
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
AuthenticationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationModule, deps: [{ token: i1.JwtModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
59
|
+
AuthenticationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationModule, declarations: [AuthenticationComponent,
|
|
60
|
+
DirectLoginComponent,
|
|
61
|
+
TimeoutNotificationComponent], imports: [CommonModule,
|
|
62
|
+
HttpClientModule,
|
|
63
|
+
//JwtModule,
|
|
64
|
+
RouterModule,
|
|
65
|
+
FormsModule,
|
|
66
|
+
ReactiveFormsModule,
|
|
67
|
+
CoolStorageModule], exports: [AuthenticationComponent,
|
|
68
|
+
DirectLoginComponent,
|
|
69
|
+
TimeoutNotificationComponent] });
|
|
70
|
+
AuthenticationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationModule, imports: [CommonModule,
|
|
71
|
+
HttpClientModule,
|
|
72
|
+
//JwtModule,
|
|
73
|
+
RouterModule,
|
|
74
|
+
FormsModule,
|
|
75
|
+
ReactiveFormsModule,
|
|
76
|
+
CoolStorageModule] });
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationModule, decorators: [{
|
|
78
|
+
type: NgModule,
|
|
79
|
+
args: [{
|
|
80
|
+
imports: [
|
|
81
|
+
CommonModule,
|
|
82
|
+
HttpClientModule,
|
|
83
|
+
//JwtModule,
|
|
84
|
+
RouterModule,
|
|
85
|
+
FormsModule,
|
|
86
|
+
ReactiveFormsModule,
|
|
87
|
+
CoolStorageModule
|
|
88
|
+
],
|
|
89
|
+
declarations: [
|
|
90
|
+
AuthenticationComponent,
|
|
91
|
+
DirectLoginComponent,
|
|
92
|
+
TimeoutNotificationComponent
|
|
93
|
+
],
|
|
94
|
+
exports: [
|
|
95
|
+
AuthenticationComponent,
|
|
96
|
+
DirectLoginComponent,
|
|
97
|
+
TimeoutNotificationComponent
|
|
98
|
+
]
|
|
99
|
+
}]
|
|
100
|
+
}], ctorParameters: function () { return [{ type: i1.JwtModule, decorators: [{
|
|
101
|
+
type: Optional
|
|
102
|
+
}, {
|
|
103
|
+
type: SkipSelf
|
|
104
|
+
}] }]; } });
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYXV0aGVudGljYXRpb24vc3JjL2F1dGhlbnRpY2F0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBc0IsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFNUYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7OztBQUVqRTs7Ozs7R0FLRztBQXNCSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9DLFlBQXVCO1FBQ3pELElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7SUFDRCxNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxTQUFTLEVBQUU7Z0JBQ1Qsc0JBQXNCO2dCQUN0QixnQkFBZ0I7Z0JBQ2hCLHFCQUFxQjtnQkFDckIsaUJBQWlCO2dCQUNqQjtvQkFDRSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsS0FBSyxFQUFFLElBQUk7aUJBQ1o7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLFdBQVc7b0JBQ3BCLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDO2FBQ0Y7WUFDRCxRQUFRLEVBQUUsb0JBQW9CO1NBQy9CLENBQUE7SUFDSCxDQUFDOztpSEE5QlUsb0JBQW9CO2tIQUFwQixvQkFBb0IsaUJBVjdCLHVCQUF1QjtRQUN2QixvQkFBb0I7UUFDcEIsNEJBQTRCLGFBWDVCLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGlCQUFpQixhQVFqQix1QkFBdUI7UUFDdkIsb0JBQW9CO1FBQ3BCLDRCQUE0QjtrSEFHbkIsb0JBQW9CLFlBbkI3QixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixpQkFBaUI7MkZBYVIsb0JBQW9CO2tCQXJCaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3FCQUNsQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQiw0QkFBNEI7cUJBQzdCO2lCQUNGOzswQkFFYyxRQUFROzswQkFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDE2IEh1bnRzbWFuIENhbmNlciBJbnN0aXR1dGUgYXQgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCwgQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeVxyXG4gKi9cclxuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgT3B0aW9uYWwsIFNraXBTZWxmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtIVFRQX0lOVEVSQ0VQVE9SUywgSHR0cENsaWVudE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5pbXBvcnQge0Nvb2xTdG9yYWdlTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXItY29vbC9zdG9yYWdlXCI7XHJcbmltcG9ydCB7SldUX09QVElPTlMsIEp3dEhlbHBlclNlcnZpY2UsIEp3dEludGVyY2VwdG9yLCBKd3RNb2R1bGV9IGZyb20gXCJAYXV0aDAvYW5ndWxhci1qd3RcIjtcclxuXHJcbmltcG9ydCB7QXV0aGVudGljYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Um91dGVHdWFyZFNlcnZpY2V9IGZyb20gXCIuL3JvdXRlLWd1YXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtBdXRoZW50aWNhdGlvbkNvbXBvbmVudH0gZnJvbSBcIi4vYXV0aGVudGljYXRpb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RGlyZWN0TG9naW5Db21wb25lbnR9IGZyb20gXCIuL2RpcmVjdGxvZ2luLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RpbWVvdXROb3RpZmljYXRpb25Db21wb25lbnR9IGZyb20gXCIuL3RpbWVvdXQtbm90aWZpY2F0aW9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0F1dGhvcml6YXRpb25JbnRlcmNlcHRvcn0gZnJvbSBcIi4vYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvclwiO1xyXG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uUHJvdmlkZXJ9IGZyb20gXCIuL2F1dGhlbnRpY2F0aW9uLnByb3ZpZGVyXCI7XHJcblxyXG4vKipcclxuICogUHJvdmlkZSBhIHNpbmdsZSBhdXRoIHNlcnZpY2UgYW5kIGludGVyY2VwdG9yIGZvciB0aGUgaW1wbGVtZW50aW5nIGFwcGxpY2F0aW9uLiAgQWxzbyBwcm92aWRlIGV2ZXJ5dGhpbmdcclxuICogZnJvbSB0aGUgYW5ndWxhci1qd3QgbGlicmFyeS5cclxuICpcclxuICogQHNpbmNlIDEuMC4wXHJcbiAqL1xyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICAvL0p3dE1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIENvb2xTdG9yYWdlTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEF1dGhlbnRpY2F0aW9uQ29tcG9uZW50LFxyXG4gICAgRGlyZWN0TG9naW5Db21wb25lbnQsXHJcbiAgICBUaW1lb3V0Tm90aWZpY2F0aW9uQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBBdXRoZW50aWNhdGlvbkNvbXBvbmVudCxcclxuICAgIERpcmVjdExvZ2luQ29tcG9uZW50LFxyXG4gICAgVGltZW91dE5vdGlmaWNhdGlvbkNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uTW9kdWxlIHtcclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnRNb2R1bGU6IEp3dE1vZHVsZSkge1xyXG4gICAgaWYgKHBhcmVudE1vZHVsZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdXRoZW50aWNhdGlvbk1vZHVsZSBpcyBhbHJlYWR5IGxvYWRlZC5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXV0aGVudGljYXRpb25Nb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIsXHJcbiAgICAgICAgSnd0SGVscGVyU2VydmljZSxcclxuICAgICAgICBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgUm91dGVHdWFyZFNlcnZpY2UsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXHJcbiAgICAgICAgICB1c2VDbGFzczogQXV0aG9yaXphdGlvbkludGVyY2VwdG9yLFxyXG4gICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICAgICAgdXNlQ2xhc3M6IEp3dEludGVyY2VwdG9yLFxyXG4gICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEpXVF9PUFRJT05TLFxyXG4gICAgICAgICAgdXNlQ2xhc3M6IEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJcclxuICAgICAgICB9XHJcbiAgICAgIF0sXHJcbiAgICAgIG5nTW9kdWxlOiBBdXRoZW50aWNhdGlvbk1vZHVsZVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +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
|
+
}
|
|
28
|
+
AuthenticationProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationProvider, deps: [{ token: i1.CoolLocalStorage }, { token: AUTHENTICATION_TOKEN_KEY }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
AuthenticationProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationProvider });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationProvider, decorators: [{
|
|
31
|
+
type: Injectable
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i1.CoolLocalStorage }, { type: undefined, decorators: [{
|
|
33
|
+
type: Inject,
|
|
34
|
+
args: [AUTHENTICATION_TOKEN_KEY]
|
|
35
|
+
}] }]; } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hdXRoZW50aWNhdGlvbi9zcmMvYXV0aGVudGljYXRpb24ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBSTNFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7QUFFdkQsTUFBTSxDQUFDLElBQUksd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQVMsMEJBQTBCLENBQUMsQ0FBQztBQUc3RixNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLFlBQW9CLG9CQUFzQyxFQUNKLHVCQUErQjtRQURqRSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWtCO1FBQ0osNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFRO1FBTjlFLHVCQUFrQixHQUFHO1lBQzFCLFdBQVc7WUFDWCxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztTQUM5QixDQUFDO1FBS0ssZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUMsQ0FBQTtJQUp1RixDQUFDO0lBTXpGLElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLHNCQUFzQixDQUFDLHVCQUErQjtRQUN4RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQWUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNqRixDQUFDOzttSEF4QlUsc0JBQXNCLGtEQVFiLHdCQUF3Qjt1SEFSakMsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQVNJLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3Rvcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmltcG9ydCB7Q29vbExvY2FsU3RvcmFnZX0gZnJvbSAnQGFuZ3VsYXItY29vbC9zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBsZXQgQVVUSEVOVElDQVRJT05fVE9LRU5fS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXCJhdXRoZW50aWNhdGlvbl90b2tlbl9rZXlcIik7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblByb3ZpZGVyIHtcclxuXHJcbiAgcHVibGljIHdoaXRlbGlzdGVkRG9tYWlucyA9IFtcclxuICAgIFwibG9jYWxob3N0XCIsXHJcbiAgICBuZXcgUmVnRXhwKFwiLipbLl11dGFoWy5dZWR1XCIpXHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9jYWxTdG9yYWdlU2VydmljZTogQ29vbExvY2FsU3RvcmFnZSxcclxuICAgICAgICAgICAgICBASW5qZWN0KEFVVEhFTlRJQ0FUSU9OX1RPS0VOX0tFWSkgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25Ub2tlbktleTogc3RyaW5nKSB7fVxyXG5cclxuICBwdWJsaWMgdG9rZW5HZXR0ZXIgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRoVG9rZW47XHJcbiAgfVxyXG5cclxuICBnZXQgYXV0aGVudGljYXRpb25Ub2tlbktleSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uVG9rZW5LZXk7XHJcbiAgfVxyXG5cclxuICBzZXQgYXV0aGVudGljYXRpb25Ub2tlbktleShfYXV0aGVudGljYXRpb25Ub2tlbktleTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9hdXRoZW50aWNhdGlvblRva2VuS2V5ID0gX2F1dGhlbnRpY2F0aW9uVG9rZW5LZXk7XHJcbiAgfVxyXG5cclxuICBnZXQgYXV0aFRva2VuKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gPHN0cmluZz50aGlzLl9sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5fYXV0aGVudGljYXRpb25Ub2tlbktleSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|