@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
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Injectable, Injector, isDevMode } from "@angular/core";
|
|
2
|
-
import { throwError } from "rxjs";
|
|
3
|
-
import { catchError } from "rxjs/operators";
|
|
4
|
-
import { AuthenticationService } from "./authentication.service";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class AuthorizationInterceptor {
|
|
7
|
-
constructor(injector) {
|
|
8
|
-
this.injector = injector;
|
|
9
|
-
}
|
|
10
|
-
intercept(req, next) {
|
|
11
|
-
if (isDevMode()) {
|
|
12
|
-
console.debug("AuthorizationInterceptor.intercept");
|
|
13
|
-
}
|
|
14
|
-
let authService = this.injector.get(AuthenticationService);
|
|
15
|
-
//Don't want to include background token refreshes in considering the user 'active'
|
|
16
|
-
if (req.url !== authService.tokenLocation()) {
|
|
17
|
-
//Update user activity. Done here instead of the previous method using a subscription to a subject in AuthenticationProvider
|
|
18
|
-
authService.updateUserActivity();
|
|
19
|
-
}
|
|
20
|
-
let headers = authService.getHeaders(req);
|
|
21
|
-
let url = req.url;
|
|
22
|
-
if (url.startsWith("/")) {
|
|
23
|
-
url = authService.getBaseUrl() + url;
|
|
24
|
-
}
|
|
25
|
-
else if (!url.startsWith("http")) {
|
|
26
|
-
if (authService.getContextRoot().length > 0) {
|
|
27
|
-
url = authService.getBaseUrl() + "/" + authService.getContextRoot() + "/" + url;
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
url = authService.getBaseUrl() + "/" + url;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
let params = req.params;
|
|
34
|
-
if (url.indexOf("/crud/") > 0) {
|
|
35
|
-
params = params.set("maxViewPermission", authService.getMaxViewPermission());
|
|
36
|
-
}
|
|
37
|
-
let reqClone = req.clone({
|
|
38
|
-
url: url,
|
|
39
|
-
withCredentials: true,
|
|
40
|
-
headers: headers,
|
|
41
|
-
params: params
|
|
42
|
-
});
|
|
43
|
-
return next.handle(reqClone)
|
|
44
|
-
.pipe(catchError((error) => {
|
|
45
|
-
if (isDevMode()) {
|
|
46
|
-
console.error("AuthorizationInterceptor.error");
|
|
47
|
-
console.error(error);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* If the token is not authenticated which angular does not know about, then a REST request to the backend will
|
|
51
|
-
* return a 401. To duplicate this, open Core in two tabs. In one tab, logout, in the other, perform a request
|
|
52
|
-
* that hits a protected resource.
|
|
53
|
-
*/
|
|
54
|
-
if (error.status === 401) {
|
|
55
|
-
authService.isAuthenticated().subscribe((authenticated) => {
|
|
56
|
-
if (authenticated) {
|
|
57
|
-
// If authenticated, then logout which will redirect.
|
|
58
|
-
authService.logout(true);
|
|
59
|
-
return throwError(error.message);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
// Otherwise, for example, when the user first opens Core, 401s are expected.
|
|
63
|
-
return throwError(error);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
if (error.status === 403) {
|
|
68
|
-
// TODO: Trigger notification for unauthorized.
|
|
69
|
-
}
|
|
70
|
-
return throwError(error);
|
|
71
|
-
}));
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
AuthorizationInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthorizationInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
75
|
-
AuthorizationInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthorizationInterceptor });
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthorizationInterceptor, decorators: [{
|
|
77
|
-
type: Injectable
|
|
78
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BodW50c21hbi1jYW5jZXItaW5zdGl0dXRlL2F1dGhlbnRpY2F0aW9uLyIsInNvdXJjZXMiOlsiYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFhLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBRy9ELE1BQU0sT0FBTyx3QkFBd0I7SUFFbkMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFMUMsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDaEQsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUNyRDtRQUVELElBQUksV0FBVyxHQUEwQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRWxGLG1GQUFtRjtRQUNuRixJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzNDLDRIQUE0SDtZQUM1SCxXQUFXLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUNsQztRQUVELElBQUksT0FBTyxHQUFnQixXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksR0FBRyxHQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDMUIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLEdBQUcsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsR0FBRyxDQUFDO1NBQ3RDO2FBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0MsR0FBRyxHQUFHLFdBQVcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLGNBQWMsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7YUFDakY7aUJBQU07Z0JBQ0wsR0FBRyxHQUFHLFdBQVcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO2FBQzVDO1NBQ0Y7UUFFRCxJQUFJLE1BQU0sR0FBZSxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztTQUM5RTtRQUVELElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDdkIsR0FBRyxFQUFFLEdBQUc7WUFDUixlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsT0FBTztZQUNoQixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7YUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pCLElBQUksU0FBUyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO2dCQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RCO1lBRUQ7Ozs7ZUFJRztZQUNILElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtvQkFDeEQsSUFBSSxhQUFhLEVBQUU7d0JBQ2pCLHFEQUFxRDt3QkFDckQsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDekIsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUNsQzt5QkFBTTt3QkFDTCw2RUFBNkU7d0JBQzdFLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUMxQjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDeEIsK0NBQStDO2FBQ2hEO1lBQ0QsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7O3NIQXRFVSx3QkFBd0I7MEhBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3RvciwgaXNEZXZNb2RlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBSZXF1ZXN0LCBIdHRwSGFuZGxlciwgSHR0cEV2ZW50LCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgdGhyb3dFcnJvcn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtjYXRjaEVycm9yfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbmltcG9ydCB7QXV0aGVudGljYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cclxuXHJcbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkF1dGhvcml6YXRpb25JbnRlcmNlcHRvci5pbnRlcmNlcHRcIik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGxldCBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQXV0aGVudGljYXRpb25TZXJ2aWNlKTtcclxuICAgIFxyXG4gICAgLy9Eb24ndCB3YW50IHRvIGluY2x1ZGUgYmFja2dyb3VuZCB0b2tlbiByZWZyZXNoZXMgaW4gY29uc2lkZXJpbmcgdGhlIHVzZXIgJ2FjdGl2ZSdcclxuICAgIGlmIChyZXEudXJsICE9PSBhdXRoU2VydmljZS50b2tlbkxvY2F0aW9uKCkpIHtcclxuICAgICAgLy9VcGRhdGUgdXNlciBhY3Rpdml0eS4gRG9uZSBoZXJlIGluc3RlYWQgb2YgdGhlIHByZXZpb3VzIG1ldGhvZCB1c2luZyBhIHN1YnNjcmlwdGlvbiB0byBhIHN1YmplY3QgaW4gQXV0aGVudGljYXRpb25Qcm92aWRlclxyXG4gICAgICBhdXRoU2VydmljZS51cGRhdGVVc2VyQWN0aXZpdHkoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgbGV0IGhlYWRlcnM6IEh0dHBIZWFkZXJzID0gYXV0aFNlcnZpY2UuZ2V0SGVhZGVycyhyZXEpO1xyXG4gICAgbGV0IHVybDogc3RyaW5nID0gcmVxLnVybDtcclxuICAgIGlmICh1cmwuc3RhcnRzV2l0aChcIi9cIikpIHtcclxuICAgICAgdXJsID0gYXV0aFNlcnZpY2UuZ2V0QmFzZVVybCgpICsgdXJsO1xyXG4gICAgfSBlbHNlIGlmICghdXJsLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XHJcbiAgICAgIGlmIChhdXRoU2VydmljZS5nZXRDb250ZXh0Um9vdCgpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB1cmwgPSBhdXRoU2VydmljZS5nZXRCYXNlVXJsKCkgKyBcIi9cIiArIGF1dGhTZXJ2aWNlLmdldENvbnRleHRSb290KCkgKyBcIi9cIiArIHVybDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmwgPSBhdXRoU2VydmljZS5nZXRCYXNlVXJsKCkgKyBcIi9cIiArIHVybDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgPSByZXEucGFyYW1zO1xyXG4gICAgaWYgKHVybC5pbmRleE9mKFwiL2NydWQvXCIpID4gMCkge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFwibWF4Vmlld1Blcm1pc3Npb25cIiwgYXV0aFNlcnZpY2UuZ2V0TWF4Vmlld1Blcm1pc3Npb24oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHJlcUNsb25lID0gcmVxLmNsb25lKHtcclxuICAgICAgdXJsOiB1cmwsXHJcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcclxuICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXNcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXFDbG9uZSlcclxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBdXRob3JpemF0aW9uSW50ZXJjZXB0b3IuZXJyb3JcIik7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIElmIHRoZSB0b2tlbiBpcyBub3QgYXV0aGVudGljYXRlZCB3aGljaCBhbmd1bGFyIGRvZXMgbm90IGtub3cgYWJvdXQsIHRoZW4gYSBSRVNUIHJlcXVlc3QgdG8gdGhlIGJhY2tlbmQgd2lsbFxyXG4gICAgICAgICAqIHJldHVybiBhIDQwMS4gIFRvIGR1cGxpY2F0ZSB0aGlzLCBvcGVuIENvcmUgaW4gdHdvIHRhYnMuICBJbiBvbmUgdGFiLCBsb2dvdXQsIGluIHRoZSBvdGhlciwgcGVyZm9ybSBhIHJlcXVlc3RcclxuICAgICAgICAgKiB0aGF0IGhpdHMgYSBwcm90ZWN0ZWQgcmVzb3VyY2UuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XHJcbiAgICAgICAgICBhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKS5zdWJzY3JpYmUoKGF1dGhlbnRpY2F0ZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICAgICAgICAvLyBJZiBhdXRoZW50aWNhdGVkLCB0aGVuIGxvZ291dCB3aGljaCB3aWxsIHJlZGlyZWN0LlxyXG4gICAgICAgICAgICAgIGF1dGhTZXJ2aWNlLmxvZ291dCh0cnVlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGZvciBleGFtcGxlLCB3aGVuIHRoZSB1c2VyIGZpcnN0IG9wZW5zIENvcmUsIDQwMXMgYXJlIGV4cGVjdGVkLlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMykge1xyXG4gICAgICAgICAgLy8gVE9ETzogVHJpZ2dlciBub3RpZmljYXRpb24gZm9yIHVuYXV0aG9yaXplZC5cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary
|
|
3
|
-
*/
|
|
4
|
-
import { Component } from "@angular/core";
|
|
5
|
-
import { AuthenticationService } from "./authentication.service";
|
|
6
|
-
import { FormBuilder, Validators } from "@angular/forms";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./authentication.service";
|
|
9
|
-
import * as i2 from "@angular/forms";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
export class DirectLoginComponent {
|
|
12
|
-
constructor(_authenticationService, _formBuilder) {
|
|
13
|
-
this._authenticationService = _authenticationService;
|
|
14
|
-
this._formBuilder = _formBuilder;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Initializes the authentication form.
|
|
18
|
-
*/
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
this._loginForm = this._formBuilder.group({
|
|
21
|
-
username: ["", Validators.required],
|
|
22
|
-
password: ["", Validators.required]
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* A function to submit the login form the the {@link UserService}.
|
|
27
|
-
*/
|
|
28
|
-
login() {
|
|
29
|
-
this._authenticationService.login(this._loginForm.value.username, this._loginForm.value.password)
|
|
30
|
-
.subscribe((res) => {
|
|
31
|
-
if (res) {
|
|
32
|
-
this._errorMsg = null;
|
|
33
|
-
this._authenticationService.requestAccessToken(true);
|
|
34
|
-
}
|
|
35
|
-
}, (error) => {
|
|
36
|
-
this._errorMsg = "Please check your username and password.";
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
DirectLoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DirectLoginComponent, deps: [{ token: i1.AuthenticationService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
-
DirectLoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DirectLoginComponent, selector: "hci-login-form", ngImport: i0, template: `
|
|
42
|
-
<div class="container">
|
|
43
|
-
<div class="login-box" id="hci-login-form-box">
|
|
44
|
-
<div class="login-heading" id="hci-login-form-heading">
|
|
45
|
-
<h3>Sign in</h3>
|
|
46
|
-
</div>
|
|
47
|
-
<div class="panel-body">
|
|
48
|
-
<form [formGroup]="_loginForm" (ngSubmit)="login()">
|
|
49
|
-
<input formControlName="username" class="form-control" id="username" name="username" placeholder="Username" type="text">
|
|
50
|
-
<input formControlName="password" class="form-control" id="password" name="password" type="password" placeholder="Password">
|
|
51
|
-
|
|
52
|
-
<div *ngIf="_errorMsg" class="alert-box">
|
|
53
|
-
<div class="alert alert-danger">
|
|
54
|
-
<h5 class="alert-heading">Authentication Failed</h5>
|
|
55
|
-
<span id="hci-login-error" class="alert-text">{{_errorMsg}}</span>
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
|
|
59
|
-
<div class="btn-box">
|
|
60
|
-
<button class="btn btn-primary" id="hci-login-form-submit-button" type="submit" [disabled]="!_loginForm.valid">Login</button>
|
|
61
|
-
</div>
|
|
62
|
-
</form>
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
`, isInline: true, styles: ["\n .container {\n max-width: 400px;\n margin-top: 20px;\n padding-top: 15px;\n }\n \n .login-box {\n border-radius: 10px;\n box-shadow: 0 0 2px #ccc;\n padding: 15px;\n }\n \n .login-box .login-heading h3 {\n line-height:1.5;\n margin: 0 0 10px\n }\n \n .login-box .form-control {\n padding: 10px;\n border: 1px solid #ccc;\n }\n \n .login-box input[type=\"password\"] {\n margin-bottom: 10px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n \n .login-box input[type=\"text\"] {\n margin-bottom: -1px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n \n .login-box .alert-box {\n margin: 10px 0 -5px 0\n }\n \n .login-box .alert-text {\n font-size: small;\n }\n \n .login-box .btn-box {\n margin: 10px 0 0px 0\n }\n "], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DirectLoginComponent, decorators: [{
|
|
68
|
-
type: Component,
|
|
69
|
-
args: [{
|
|
70
|
-
selector: "hci-login-form",
|
|
71
|
-
template: `
|
|
72
|
-
<div class="container">
|
|
73
|
-
<div class="login-box" id="hci-login-form-box">
|
|
74
|
-
<div class="login-heading" id="hci-login-form-heading">
|
|
75
|
-
<h3>Sign in</h3>
|
|
76
|
-
</div>
|
|
77
|
-
<div class="panel-body">
|
|
78
|
-
<form [formGroup]="_loginForm" (ngSubmit)="login()">
|
|
79
|
-
<input formControlName="username" class="form-control" id="username" name="username" placeholder="Username" type="text">
|
|
80
|
-
<input formControlName="password" class="form-control" id="password" name="password" type="password" placeholder="Password">
|
|
81
|
-
|
|
82
|
-
<div *ngIf="_errorMsg" class="alert-box">
|
|
83
|
-
<div class="alert alert-danger">
|
|
84
|
-
<h5 class="alert-heading">Authentication Failed</h5>
|
|
85
|
-
<span id="hci-login-error" class="alert-text">{{_errorMsg}}</span>
|
|
86
|
-
</div>
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
<div class="btn-box">
|
|
90
|
-
<button class="btn btn-primary" id="hci-login-form-submit-button" type="submit" [disabled]="!_loginForm.valid">Login</button>
|
|
91
|
-
</div>
|
|
92
|
-
</form>
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
95
|
-
</div>
|
|
96
|
-
`,
|
|
97
|
-
styles: [`
|
|
98
|
-
.container {
|
|
99
|
-
max-width: 400px;
|
|
100
|
-
margin-top: 20px;
|
|
101
|
-
padding-top: 15px;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.login-box {
|
|
105
|
-
border-radius: 10px;
|
|
106
|
-
box-shadow: 0 0 2px #ccc;
|
|
107
|
-
padding: 15px;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.login-box .login-heading h3 {
|
|
111
|
-
line-height:1.5;
|
|
112
|
-
margin: 0 0 10px
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.login-box .form-control {
|
|
116
|
-
padding: 10px;
|
|
117
|
-
border: 1px solid #ccc;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.login-box input[type="password"] {
|
|
121
|
-
margin-bottom: 10px;
|
|
122
|
-
border-top-left-radius: 0;
|
|
123
|
-
border-top-right-radius: 0;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.login-box input[type="text"] {
|
|
127
|
-
margin-bottom: -1px;
|
|
128
|
-
border-bottom-right-radius: 0;
|
|
129
|
-
border-bottom-left-radius: 0;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
.login-box .alert-box {
|
|
133
|
-
margin: 10px 0 -5px 0
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.login-box .alert-text {
|
|
137
|
-
font-size: small;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.login-box .btn-box {
|
|
141
|
-
margin: 10px 0 0px 0
|
|
142
|
-
}
|
|
143
|
-
`]
|
|
144
|
-
}]
|
|
145
|
-
}], ctorParameters: function () { return [{ type: i1.AuthenticationService }, { type: i2.FormBuilder }]; } });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0bG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvYXV0aGVudGljYXRpb24vIiwic291cmNlcyI6WyJkaXJlY3Rsb2dpbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxXQUFXLEVBQWEsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBOEVsRSxNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLFlBQW9CLHNCQUE2QyxFQUFVLFlBQXlCO1FBQWhGLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYTtJQUFHLENBQUM7SUFFeEc7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUN4QyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2FBQzlGLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEQ7UUFDSCxDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLDBDQUEwQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7a0hBN0JVLG9CQUFvQjtzR0FBcEIsb0JBQW9CLHNEQTFFckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F5QlA7NEZBaURRLG9CQUFvQjtrQkE1RWhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUJQO29CQUNILE1BQU0sRUFBRSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOENSLENBQUM7aUJBQ0giLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgSHVudHNtYW4gQ2FuY2VyIEluc3RpdHV0ZSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBVdGFoLCBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5XHJcbiAqL1xyXG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uU2VydmljZX0gZnJvbSBcIi4vYXV0aGVudGljYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWxvZ2luLWZvcm1cIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibG9naW4tYm94XCIgaWQ9XCJoY2ktbG9naW4tZm9ybS1ib3hcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4taGVhZGluZ1wiIGlkPVwiaGNpLWxvZ2luLWZvcm0taGVhZGluZ1wiPlxyXG4gICAgICAgICAgPGgzPlNpZ24gaW48L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XHJcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIl9sb2dpbkZvcm1cIiAobmdTdWJtaXQpPVwibG9naW4oKVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidXNlcm5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwidXNlcm5hbWVcIiBuYW1lPVwidXNlcm5hbWVcIiBwbGFjZWhvbGRlcj1cIlVzZXJuYW1lXCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkXCIgdHlwZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9lcnJvck1zZ1wiIGNsYXNzPVwiYWxlcnQtYm94XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiYWxlcnQtaGVhZGluZ1wiPkF1dGhlbnRpY2F0aW9uIEZhaWxlZDwvaDU+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBpZD1cImhjaS1sb2dpbi1lcnJvclwiIGNsYXNzPVwiYWxlcnQtdGV4dFwiPnt7X2Vycm9yTXNnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tYm94XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGlkPVwiaGNpLWxvZ2luLWZvcm0tc3VibWl0LWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwiIV9sb2dpbkZvcm0udmFsaWRcIj5Mb2dpbjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgLmNvbnRhaW5lciB7XHJcbiAgICAgIG1heC13aWR0aDogNDAwcHg7XHJcbiAgICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAxNXB4O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAubG9naW4tYm94IHtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgICAgYm94LXNoYWRvdzogMCAwIDJweCAjY2NjO1xyXG4gICAgICBwYWRkaW5nOiAxNXB4O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAubG9naW4tYm94IC5sb2dpbi1oZWFkaW5nIGgzIHtcclxuICAgICAgbGluZS1oZWlnaHQ6MS41O1xyXG4gICAgICBtYXJnaW46IDAgMCAxMHB4XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5sb2dpbi1ib3ggLmZvcm0tY29udHJvbCB7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5sb2dpbi1ib3ggaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcclxuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5sb2dpbi1ib3ggaW5wdXRbdHlwZT1cInRleHRcIl0ge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xyXG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLmxvZ2luLWJveCAuYWxlcnQtYm94IHtcclxuICAgICAgbWFyZ2luOiAxMHB4IDAgLTVweCAwXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5sb2dpbi1ib3ggLmFsZXJ0LXRleHQge1xyXG4gICAgICBmb250LXNpemU6IHNtYWxsO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAubG9naW4tYm94IC5idG4tYm94IHtcclxuICAgICAgbWFyZ2luOiAxMHB4IDAgMHB4IDBcclxuICAgIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlyZWN0TG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyBfbG9naW5Gb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIF9lcnJvck1zZzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgcHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgYXV0aGVudGljYXRpb24gZm9ybS5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2xvZ2luRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgdXNlcm5hbWU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcGFzc3dvcmQ6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRvIHN1Ym1pdCB0aGUgbG9naW4gZm9ybSB0aGUgdGhlIHtAbGluayBVc2VyU2VydmljZX0uXHJcbiAgICovXHJcbiAgbG9naW4oKSB7XHJcbiAgICB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UubG9naW4odGhpcy5fbG9naW5Gb3JtLnZhbHVlLnVzZXJuYW1lLCB0aGlzLl9sb2dpbkZvcm0udmFsdWUucGFzc3dvcmQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yTXNnID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5yZXF1ZXN0QWNjZXNzVG9rZW4odHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2Vycm9yTXNnID0gXCJQbGVhc2UgY2hlY2sgeW91ciB1c2VybmFtZSBhbmQgcGFzc3dvcmQuXCI7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS1hdXRoZW50aWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BodW50c21hbi1jYW5jZXItaW5zdGl0dXRlL2F1dGhlbnRpY2F0aW9uLyIsInNvdXJjZXMiOlsiaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS1hdXRoZW50aWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
package/esm2015/index.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { AuthenticationModule } from "./authentication.module";
|
|
2
|
-
/**
|
|
3
|
-
* The injection tokens for service configuration.
|
|
4
|
-
*/
|
|
5
|
-
export { AUTHENTICATION_LOGOUT_PATH, AUTHENTICATION_SERVER_URL, AUTHENTICATION_TOKEN_ENDPOINT, AUTHENTICATION_DIRECT_ENDPOINT, AUTHENTICATION_ROUTE, AUTHENTICATION_MAX_INACTIVITY_MINUTES, AUTHENTICATION_USER_COUNTDOWN_SECONDS, AUTHENTICATION_IDP_INACTIVITY_MINUTES } from "./authentication.service";
|
|
6
|
-
export { AUTHENTICATION_TOKEN_KEY } from "./authentication.provider";
|
|
7
|
-
export { AuthenticationComponent } from "./authentication.component";
|
|
8
|
-
export { DirectLoginComponent } from "./directlogin.component";
|
|
9
|
-
export { RouteGuardService } from "./route-guard.service";
|
|
10
|
-
export { AuthenticationService } from "./authentication.service";
|
|
11
|
-
export { TimeoutNotificationComponent } from "./timeout-notification.component";
|
|
12
|
-
export { AuthorizationInterceptor } from "./authorization.interceptor";
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9hdXRoZW50aWNhdGlvbi8iLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTdEOztHQUVHO0FBQ0gsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5QixvQkFBb0IsRUFDcEIscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDdEMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQTtBQUNsRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQTtBQUM1RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQTtBQUM5RCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7QXV0aGVudGljYXRpb25Nb2R1bGV9IGZyb20gXCIuL2F1dGhlbnRpY2F0aW9uLm1vZHVsZVwiO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBpbmplY3Rpb24gdG9rZW5zIGZvciBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uXHJcbiAqL1xyXG5leHBvcnQge1xyXG4gIEFVVEhFTlRJQ0FUSU9OX0xPR09VVF9QQVRILFxyXG4gIEFVVEhFTlRJQ0FUSU9OX1NFUlZFUl9VUkwsXHJcbiAgQVVUSEVOVElDQVRJT05fVE9LRU5fRU5EUE9JTlQsXHJcbiAgQVVUSEVOVElDQVRJT05fRElSRUNUX0VORFBPSU5ULFxyXG4gIEFVVEhFTlRJQ0FUSU9OX1JPVVRFLFxyXG4gIEFVVEhFTlRJQ0FUSU9OX01BWF9JTkFDVElWSVRZX01JTlVURVMsXHJcbiAgQVVUSEVOVElDQVRJT05fVVNFUl9DT1VOVERPV05fU0VDT05EUyxcclxuICBBVVRIRU5USUNBVElPTl9JRFBfSU5BQ1RJVklUWV9NSU5VVEVTXHJcbn0gZnJvbSBcIi4vYXV0aGVudGljYXRpb24uc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IHtBVVRIRU5USUNBVElPTl9UT0tFTl9LRVl9IGZyb20gXCIuL2F1dGhlbnRpY2F0aW9uLnByb3ZpZGVyXCI7XHJcblxyXG5leHBvcnQge0F1dGhlbnRpY2F0aW9uQ29tcG9uZW50fSBmcm9tIFwiLi9hdXRoZW50aWNhdGlvbi5jb21wb25lbnRcIlxyXG5leHBvcnQge0RpcmVjdExvZ2luQ29tcG9uZW50fSBmcm9tIFwiLi9kaXJlY3Rsb2dpbi5jb21wb25lbnRcIlxyXG5leHBvcnQge1JvdXRlR3VhcmRTZXJ2aWNlfSBmcm9tIFwiLi9yb3V0ZS1ndWFyZC5zZXJ2aWNlXCJcclxuZXhwb3J0IHtBdXRoZW50aWNhdGlvblNlcnZpY2V9IGZyb20gXCIuL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2VcIlxyXG5leHBvcnQge1RpbWVvdXROb3RpZmljYXRpb25Db21wb25lbnR9IGZyb20gXCIuL3RpbWVvdXQtbm90aWZpY2F0aW9uLmNvbXBvbmVudFwiO1xyXG5leHBvcnQge0F1dGhvcml6YXRpb25JbnRlcmNlcHRvcn0gZnJvbSBcIi4vYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvclwiOyJdfQ==
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary
|
|
3
|
-
*/
|
|
4
|
-
import { Injectable, Inject } from "@angular/core";
|
|
5
|
-
import { Router } from "@angular/router";
|
|
6
|
-
import { map } from "rxjs/operators";
|
|
7
|
-
import { AuthenticationService, AUTHENTICATION_ROUTE } from "./authentication.service";
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "./authentication.service";
|
|
10
|
-
import * as i2 from "@angular/router";
|
|
11
|
-
/**
|
|
12
|
-
* A {@code CanActivate} implementation which makes its calculation based on the current authentication state.
|
|
13
|
-
*
|
|
14
|
-
* @since 1.0.0
|
|
15
|
-
*/
|
|
16
|
-
export class RouteGuardService {
|
|
17
|
-
constructor(_authenticationService, _router, _authenticationRoute) {
|
|
18
|
-
this._authenticationService = _authenticationService;
|
|
19
|
-
this._router = _router;
|
|
20
|
-
this._authenticationRoute = _authenticationRoute;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Determines whether or not a route can be activated, based on the current authentication state.
|
|
24
|
-
*
|
|
25
|
-
* @param route for activation to be determined on
|
|
26
|
-
* @param state of the router snapshot
|
|
27
|
-
* @returns {Observable<boolean>} describing the result of this calculation
|
|
28
|
-
*/
|
|
29
|
-
canActivate(route, state) {
|
|
30
|
-
return this._authenticationService.isAuthenticated().pipe(map((authenticated) => {
|
|
31
|
-
if (!authenticated) {
|
|
32
|
-
// Store the attempted URL for redirecting
|
|
33
|
-
this._authenticationService.redirectUrl = state.url;
|
|
34
|
-
// Navigate to the login page
|
|
35
|
-
this._router.navigate([this._authenticationRoute]);
|
|
36
|
-
}
|
|
37
|
-
return authenticated;
|
|
38
|
-
}, (error) => {
|
|
39
|
-
return false;
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
;
|
|
43
|
-
}
|
|
44
|
-
RouteGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RouteGuardService, deps: [{ token: i1.AuthenticationService }, { token: i2.Router }, { token: AUTHENTICATION_ROUTE }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
45
|
-
RouteGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RouteGuardService });
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RouteGuardService, decorators: [{
|
|
47
|
-
type: Injectable
|
|
48
|
-
}], ctorParameters: function () { return [{ type: i1.AuthenticationService }, { type: i2.Router }, { type: undefined, decorators: [{
|
|
49
|
-
type: Inject,
|
|
50
|
-
args: [AUTHENTICATION_ROUTE]
|
|
51
|
-
}] }]; } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BodW50c21hbi1jYW5jZXItaW5zdGl0dXRlL2F1dGhlbnRpY2F0aW9uLyIsInNvdXJjZXMiOlsicm91dGUtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBYyxNQUFNLEVBQThDLE1BQU0saUJBQWlCLENBQUM7QUFHakcsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7O0FBRXJGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQW9CLHNCQUE2QyxFQUM3QyxPQUFlLEVBQ2Usb0JBQTRCO1FBRjFELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNlLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBUTtJQUM5RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDbkUsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzlFLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xCLDBDQUEwQztnQkFDMUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUVwRCw2QkFBNkI7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQzthQUNwRDtZQUVELE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFBQSxDQUFDOzsrR0E1QlMsaUJBQWlCLDZFQUlSLG9CQUFvQjttSEFKN0IsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7OzBCQUtJLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDE2IEh1bnRzbWFuIENhbmNlciBJbnN0aXR1dGUgYXQgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCwgQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeVxyXG4gKi9cclxuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3R9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q2FuQWN0aXZhdGUsIFJvdXRlciwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge21hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uU2VydmljZSwgQVVUSEVOVElDQVRJT05fUk9VVEV9IGZyb20gXCIuL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBBIHtAY29kZSBDYW5BY3RpdmF0ZX0gaW1wbGVtZW50YXRpb24gd2hpY2ggbWFrZXMgaXRzIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50IGF1dGhlbnRpY2F0aW9uIHN0YXRlLlxyXG4gKlxyXG4gKiBAc2luY2UgMS4wLjBcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFJvdXRlR3VhcmRTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICAgICAgICBASW5qZWN0KEFVVEhFTlRJQ0FUSU9OX1JPVVRFKSBwcml2YXRlIF9hdXRoZW50aWNhdGlvblJvdXRlOiBzdHJpbmcpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgYSByb3V0ZSBjYW4gYmUgYWN0aXZhdGVkLCBiYXNlZCBvbiB0aGUgY3VycmVudCBhdXRoZW50aWNhdGlvbiBzdGF0ZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSByb3V0ZSBmb3IgYWN0aXZhdGlvbiB0byBiZSBkZXRlcm1pbmVkIG9uXHJcbiAgICogQHBhcmFtIHN0YXRlIG9mIHRoZSByb3V0ZXIgc25hcHNob3RcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxib29sZWFuPn0gZGVzY3JpYmluZyB0aGUgcmVzdWx0IG9mIHRoaXMgY2FsY3VsYXRpb25cclxuICAgKi9cclxuICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkucGlwZShtYXAoKGF1dGhlbnRpY2F0ZWQpID0+IHtcclxuICAgICAgaWYgKCFhdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgLy8gU3RvcmUgdGhlIGF0dGVtcHRlZCBVUkwgZm9yIHJlZGlyZWN0aW5nXHJcbiAgICAgICAgdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLnJlZGlyZWN0VXJsID0gc3RhdGUudXJsO1xyXG5cclxuICAgICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgbG9naW4gcGFnZVxyXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbdGhpcy5fYXV0aGVudGljYXRpb25Sb3V0ZV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gYXV0aGVudGljYXRlZDtcclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pKTtcclxuICB9O1xyXG59XHJcblxyXG4iXX0=
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary
|
|
3
|
-
*/
|
|
4
|
-
import { Component } from "@angular/core";
|
|
5
|
-
import { animate, state, style, transition, trigger } from "@angular/animations";
|
|
6
|
-
import { timer } from "rxjs";
|
|
7
|
-
import { map, takeWhile } from "rxjs/operators";
|
|
8
|
-
import { AuthenticationService } from "./authentication.service";
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "./authentication.service";
|
|
11
|
-
import * as i2 from "@angular/common";
|
|
12
|
-
export class TimeoutNotificationComponent {
|
|
13
|
-
constructor(authenticationService) {
|
|
14
|
-
this.authenticationService = authenticationService;
|
|
15
|
-
this.openState = "hidden";
|
|
16
|
-
authenticationService.isAboutToTimeOut().subscribe((isAboutToTimeOut) => {
|
|
17
|
-
if (isAboutToTimeOut) {
|
|
18
|
-
this.openState = "opened";
|
|
19
|
-
this.startCountdown();
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
this.openState = "hidden";
|
|
23
|
-
//If something changed mid-timeout, cancel the timeout/logout.
|
|
24
|
-
if (this.subscription != null && !this.subscription.closed) {
|
|
25
|
-
this.subscription.unsubscribe();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
startCountdown() {
|
|
31
|
-
this.seconds = timer(0, 1000)
|
|
32
|
-
.pipe(map(() => {
|
|
33
|
-
const elapsed = Math.round((Date.now() - this.authenticationService.getTimeoutStart()) / 1000);
|
|
34
|
-
return this.authenticationService.userCountdownSeconds - elapsed;
|
|
35
|
-
}),
|
|
36
|
-
// The true argument emits the final value that completed the observable
|
|
37
|
-
takeWhile((value) => value > 0, true));
|
|
38
|
-
this.subscription = this.seconds.subscribe((value) => {
|
|
39
|
-
if (value < 1) {
|
|
40
|
-
this.subscription.unsubscribe();
|
|
41
|
-
this.authenticationService.logout(true);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
click() {
|
|
46
|
-
this.subscription.unsubscribe();
|
|
47
|
-
this.authenticationService.updateUserActivity();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
TimeoutNotificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimeoutNotificationComponent, deps: [{ token: i1.AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
-
TimeoutNotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TimeoutNotificationComponent, selector: "timeout-notification", ngImport: i0, template: `
|
|
52
|
-
<div class="flyout-max" [@openBacksplash]="openState">
|
|
53
|
-
<div class="modal-dialog" [@openModal]="openState" role="document">
|
|
54
|
-
<div class="modal-header">
|
|
55
|
-
<h4 class="modal-title">Your Session Is About To Expire</h4>
|
|
56
|
-
</div>
|
|
57
|
-
<div class="modal-body">
|
|
58
|
-
<p>For your security, your session is about to automatically time out in the next <b>{{seconds | async}}</b> seconds. Would you like to stay signed in?</p>
|
|
59
|
-
</div>
|
|
60
|
-
<div class="modal-footer">
|
|
61
|
-
<ng-container>
|
|
62
|
-
<button id="updateBtn" type="button" class="btn btn-secondary" (click)="click()">Yes, Keep me signed in</button>
|
|
63
|
-
</ng-container>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
`, isInline: true, styles: ["\n\n .flyout-max {\n position: fixed;\n z-index: 9999;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.4);\n width: 100vw;\n }\n \n .modal-dialog {\n position: fixed;\n max-width: 50vw;\n min-width: 50vw;\n left: -50vw;\n top: 25vw;\n margin: 0;\n background-color: white;\n border: black 1px solid;\n border-left: none;\n border-top-right-radius: 20px;\n border-bottom-right-radius: 20px;\n border-top-left-radius: 20px;\n border-bottom-left-radius: 20px;\n pointer-events: all;\n }\n \n .modal-body {\n width: 100%;\n display: inline-block;\n }\n \n .modal-body-left {\n display: inline-block;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 300px;\n max-height: 300px;\n }\n \n .modal-body-right {\n width: 70%;\n vertical-align: top;\n padding-left: 15px;\n border-left: black 1px solid;\n margin-left: 15px;\n display: inline-block;\n overflow-y: auto;\n min-height: 300px;\n max-height: 300px;\n }\n "], pipes: { "async": i2.AsyncPipe }, animations: [
|
|
68
|
-
trigger("openBacksplash", [
|
|
69
|
-
state("in", style({
|
|
70
|
-
"display": "none"
|
|
71
|
-
})),
|
|
72
|
-
state("hidden", style({
|
|
73
|
-
"display": "none"
|
|
74
|
-
})),
|
|
75
|
-
state("opened", style({
|
|
76
|
-
"display": "inherit"
|
|
77
|
-
})),
|
|
78
|
-
transition("hidden => opened", animate(100)),
|
|
79
|
-
transition("opened => hidden", animate(200))
|
|
80
|
-
]),
|
|
81
|
-
trigger("openModal", [
|
|
82
|
-
state("in", style({
|
|
83
|
-
"opacity": "0",
|
|
84
|
-
"left": "-50vw"
|
|
85
|
-
})),
|
|
86
|
-
state("hidden", style({
|
|
87
|
-
"opacity": "0",
|
|
88
|
-
"left": "-50vw"
|
|
89
|
-
})),
|
|
90
|
-
state("opened", style({
|
|
91
|
-
"opacity": "1",
|
|
92
|
-
"left": "25vw"
|
|
93
|
-
})),
|
|
94
|
-
transition("hidden => opened", animate(500)),
|
|
95
|
-
transition("opened => hidden", animate(300))
|
|
96
|
-
])
|
|
97
|
-
] });
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimeoutNotificationComponent, decorators: [{
|
|
99
|
-
type: Component,
|
|
100
|
-
args: [{
|
|
101
|
-
selector: "timeout-notification",
|
|
102
|
-
template: `
|
|
103
|
-
<div class="flyout-max" [@openBacksplash]="openState">
|
|
104
|
-
<div class="modal-dialog" [@openModal]="openState" role="document">
|
|
105
|
-
<div class="modal-header">
|
|
106
|
-
<h4 class="modal-title">Your Session Is About To Expire</h4>
|
|
107
|
-
</div>
|
|
108
|
-
<div class="modal-body">
|
|
109
|
-
<p>For your security, your session is about to automatically time out in the next <b>{{seconds | async}}</b> seconds. Would you like to stay signed in?</p>
|
|
110
|
-
</div>
|
|
111
|
-
<div class="modal-footer">
|
|
112
|
-
<ng-container>
|
|
113
|
-
<button id="updateBtn" type="button" class="btn btn-secondary" (click)="click()">Yes, Keep me signed in</button>
|
|
114
|
-
</ng-container>
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
117
|
-
</div>
|
|
118
|
-
`,
|
|
119
|
-
animations: [
|
|
120
|
-
trigger("openBacksplash", [
|
|
121
|
-
state("in", style({
|
|
122
|
-
"display": "none"
|
|
123
|
-
})),
|
|
124
|
-
state("hidden", style({
|
|
125
|
-
"display": "none"
|
|
126
|
-
})),
|
|
127
|
-
state("opened", style({
|
|
128
|
-
"display": "inherit"
|
|
129
|
-
})),
|
|
130
|
-
transition("hidden => opened", animate(100)),
|
|
131
|
-
transition("opened => hidden", animate(200))
|
|
132
|
-
]),
|
|
133
|
-
trigger("openModal", [
|
|
134
|
-
state("in", style({
|
|
135
|
-
"opacity": "0",
|
|
136
|
-
"left": "-50vw"
|
|
137
|
-
})),
|
|
138
|
-
state("hidden", style({
|
|
139
|
-
"opacity": "0",
|
|
140
|
-
"left": "-50vw"
|
|
141
|
-
})),
|
|
142
|
-
state("opened", style({
|
|
143
|
-
"opacity": "1",
|
|
144
|
-
"left": "25vw"
|
|
145
|
-
})),
|
|
146
|
-
transition("hidden => opened", animate(500)),
|
|
147
|
-
transition("opened => hidden", animate(300))
|
|
148
|
-
])
|
|
149
|
-
],
|
|
150
|
-
styles: [`
|
|
151
|
-
|
|
152
|
-
.flyout-max {
|
|
153
|
-
position: fixed;
|
|
154
|
-
z-index: 9999;
|
|
155
|
-
top: 0;
|
|
156
|
-
bottom: 0;
|
|
157
|
-
background-color: rgba(0, 0, 0, 0.4);
|
|
158
|
-
width: 100vw;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
.modal-dialog {
|
|
162
|
-
position: fixed;
|
|
163
|
-
max-width: 50vw;
|
|
164
|
-
min-width: 50vw;
|
|
165
|
-
left: -50vw;
|
|
166
|
-
top: 25vw;
|
|
167
|
-
margin: 0;
|
|
168
|
-
background-color: white;
|
|
169
|
-
border: black 1px solid;
|
|
170
|
-
border-left: none;
|
|
171
|
-
border-top-right-radius: 20px;
|
|
172
|
-
border-bottom-right-radius: 20px;
|
|
173
|
-
border-top-left-radius: 20px;
|
|
174
|
-
border-bottom-left-radius: 20px;
|
|
175
|
-
pointer-events: all;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
.modal-body {
|
|
179
|
-
width: 100%;
|
|
180
|
-
display: inline-block;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
.modal-body-left {
|
|
184
|
-
display: inline-block;
|
|
185
|
-
overflow-y: auto;
|
|
186
|
-
overflow-x: hidden;
|
|
187
|
-
min-height: 300px;
|
|
188
|
-
max-height: 300px;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
.modal-body-right {
|
|
192
|
-
width: 70%;
|
|
193
|
-
vertical-align: top;
|
|
194
|
-
padding-left: 15px;
|
|
195
|
-
border-left: black 1px solid;
|
|
196
|
-
margin-left: 15px;
|
|
197
|
-
display: inline-block;
|
|
198
|
-
overflow-y: auto;
|
|
199
|
-
min-height: 300px;
|
|
200
|
-
max-height: 300px;
|
|
201
|
-
}
|
|
202
|
-
`]
|
|
203
|
-
}]
|
|
204
|
-
}], ctorParameters: function () { return [{ type: i1.AuthenticationService }]; } });
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZW91dC1ub3RpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvYXV0aGVudGljYXRpb24vIiwic291cmNlcyI6WyJ0aW1lb3V0LW5vdGlmaWNhdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFL0UsT0FBTyxFQUEyQixLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQThHL0QsTUFBTSxPQUFPLDRCQUE0QjtJQU12QyxZQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUp6RCxjQUFTLEdBQVcsUUFBUSxDQUFDO1FBS2xDLHFCQUFxQixDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUV0RSxJQUFJLGdCQUFnQixFQUFFO2dCQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO2dCQUMxQiw4REFBOEQ7Z0JBQzlELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtvQkFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVB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IEh1bnRzbWFuIENhbmNlciBJbnN0aXR1dGUgYXQgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCwgQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeVxyXG4gKi9cclxuaW1wb3J0IHtDb21wb25lbnR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xyXG5cclxuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRpbWVyfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge21hcCwgdGFrZVdoaWxlfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbmltcG9ydCB7QXV0aGVudGljYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJ0aW1lb3V0LW5vdGlmaWNhdGlvblwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmx5b3V0LW1heFwiIFtAb3BlbkJhY2tzcGxhc2hdPVwib3BlblN0YXRlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIiBbQG9wZW5Nb2RhbF09XCJvcGVuU3RhdGVcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPllvdXIgU2Vzc2lvbiBJcyBBYm91dCBUbyBFeHBpcmU8L2g0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICA8cD5Gb3IgeW91ciBzZWN1cml0eSwgeW91ciBzZXNzaW9uIGlzIGFib3V0IHRvIGF1dG9tYXRpY2FsbHkgdGltZSBvdXQgaW4gdGhlIG5leHQgPGI+e3tzZWNvbmRzIHwgYXN5bmN9fTwvYj4gc2Vjb25kcy4gV291bGQgeW91IGxpa2UgdG8gc3RheSBzaWduZWQgaW4/PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b24gaWQ9XCJ1cGRhdGVCdG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJjbGljaygpXCI+WWVzLCBLZWVwIG1lIHNpZ25lZCBpbjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKFwib3BlbkJhY2tzcGxhc2hcIixcclxuICAgICAgW1xyXG4gICAgICAgIHN0YXRlKFwiaW5cIiwgc3R5bGUoe1xyXG4gICAgICAgICAgXCJkaXNwbGF5XCI6IFwibm9uZVwiXHJcbiAgICAgICAgfSkpLFxyXG4gICAgICAgIHN0YXRlKFwiaGlkZGVuXCIsIHN0eWxlKHtcclxuICAgICAgICAgIFwiZGlzcGxheVwiOiBcIm5vbmVcIlxyXG4gICAgICAgIH0pKSxcclxuICAgICAgICBzdGF0ZShcIm9wZW5lZFwiLCBzdHlsZSh7XHJcbiAgICAgICAgICBcImRpc3BsYXlcIjogXCJpbmhlcml0XCJcclxuICAgICAgICB9KSksXHJcbiAgICAgICAgdHJhbnNpdGlvbihcImhpZGRlbiA9PiBvcGVuZWRcIiwgYW5pbWF0ZSgxMDApKSxcclxuICAgICAgICB0cmFuc2l0aW9uKFwib3BlbmVkID0+IGhpZGRlblwiLCBhbmltYXRlKDIwMCkpXHJcbiAgICAgIF1cclxuICAgICksXHJcbiAgICB0cmlnZ2VyKFwib3Blbk1vZGFsXCIsXHJcbiAgICAgIFtcclxuICAgICAgICBzdGF0ZShcImluXCIsIHN0eWxlKHtcclxuICAgICAgICAgIFwib3BhY2l0eVwiOiBcIjBcIixcclxuICAgICAgICAgIFwibGVmdFwiOiBcIi01MHZ3XCJcclxuICAgICAgICB9KSksXHJcbiAgICAgICAgc3RhdGUoXCJoaWRkZW5cIiwgc3R5bGUoe1xyXG4gICAgICAgICAgXCJvcGFjaXR5XCI6IFwiMFwiLFxyXG4gICAgICAgICAgXCJsZWZ0XCI6IFwiLTUwdndcIlxyXG4gICAgICAgIH0pKSxcclxuICAgICAgICBzdGF0ZShcIm9wZW5lZFwiLCBzdHlsZSh7XHJcbiAgICAgICAgICBcIm9wYWNpdHlcIjogXCIxXCIsXHJcbiAgICAgICAgICBcImxlZnRcIjogXCIyNXZ3XCJcclxuICAgICAgICB9KSksXHJcbiAgICAgICAgdHJhbnNpdGlvbihcImhpZGRlbiA9PiBvcGVuZWRcIiwgYW5pbWF0ZSg1MDApKSxcclxuICAgICAgICB0cmFuc2l0aW9uKFwib3BlbmVkID0+IGhpZGRlblwiLCBhbmltYXRlKDMwMCkpXHJcbiAgICAgIF1cclxuICAgIClcclxuICBdLFxyXG4gIHN0eWxlczogW2BcclxuXHJcbiAgICAuZmx5b3V0LW1heCB7XHJcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgei1pbmRleDogOTk5OTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTtcclxuICAgICAgd2lkdGg6IDEwMHZ3O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAubW9kYWwtZGlhbG9nIHtcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICBtYXgtd2lkdGg6IDUwdnc7XHJcbiAgICAgIG1pbi13aWR0aDogNTB2dztcclxuICAgICAgbGVmdDogLTUwdnc7XHJcbiAgICAgIHRvcDogMjV2dztcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgYm9yZGVyOiBibGFjayAxcHggc29saWQ7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xyXG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMjBweDtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDIwcHg7XHJcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDIwcHg7XHJcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDIwcHg7XHJcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5tb2RhbC1ib2R5IHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICAgIFxyXG4gICAgLm1vZGFsLWJvZHktbGVmdCB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgICBtaW4taGVpZ2h0OiAzMDBweDtcclxuICAgICAgbWF4LWhlaWdodDogMzAwcHg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5tb2RhbC1ib2R5LXJpZ2h0IHtcclxuICAgICAgd2lkdGg6IDcwJTtcclxuICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xyXG4gICAgICBib3JkZXItbGVmdDogYmxhY2sgMXB4IHNvbGlkO1xyXG4gICAgICBtYXJnaW4tbGVmdDogMTVweDtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgICBtaW4taGVpZ2h0OiAzMDBweDtcclxuICAgICAgbWF4LWhlaWdodDogMzAwcHg7XHJcbiAgICB9XHJcbiAgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbWVvdXROb3RpZmljYXRpb25Db21wb25lbnQge1xyXG4gIHB1YmxpYyBzZWNvbmRzOiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgcHVibGljIG9wZW5TdGF0ZTogc3RyaW5nID0gXCJoaWRkZW5cIjtcclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSkge1xyXG4gICAgYXV0aGVudGljYXRpb25TZXJ2aWNlLmlzQWJvdXRUb1RpbWVPdXQoKS5zdWJzY3JpYmUoKGlzQWJvdXRUb1RpbWVPdXQpID0+IHtcclxuXHJcbiAgICAgIGlmIChpc0Fib3V0VG9UaW1lT3V0KSB7XHJcbiAgICAgICAgdGhpcy5vcGVuU3RhdGUgPSBcIm9wZW5lZFwiO1xyXG4gICAgICAgIHRoaXMuc3RhcnRDb3VudGRvd24oKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9wZW5TdGF0ZSA9IFwiaGlkZGVuXCI7XHJcbiAgICAgICAgLy9JZiBzb21ldGhpbmcgY2hhbmdlZCBtaWQtdGltZW91dCwgY2FuY2VsIHRoZSB0aW1lb3V0L2xvZ291dC5cclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24gIT0gbnVsbCAmJiAhdGhpcy5zdWJzY3JpcHRpb24uY2xvc2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGFydENvdW50ZG93bigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Vjb25kcyA9IHRpbWVyKDAsIDEwMDApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlbGFwc2VkOiBudW1iZXIgPSBNYXRoLnJvdW5kKChEYXRlLm5vdygpIC0gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VGltZW91dFN0YXJ0KCkpIC8gMTAwMCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UudXNlckNvdW50ZG93blNlY29uZHMgLSBlbGFwc2VkO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIC8vIFRoZSB0cnVlIGFyZ3VtZW50IGVtaXRzIHRoZSBmaW5hbCB2YWx1ZSB0aGF0IGNvbXBsZXRlZCB0aGUgb2JzZXJ2YWJsZVxyXG4gICAgICAgIHRha2VXaGlsZSgodmFsdWUpID0+IHZhbHVlID4gMCwgdHJ1ZSksXHJcbiAgICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNlY29uZHMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgaWYgKHZhbHVlIDwgMSkge1xyXG4gICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dvdXQodHJ1ZSk7XHJcbiAgICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLnVwZGF0ZVVzZXJBY3Rpdml0eSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|