@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.
Files changed (47) hide show
  1. package/authentication.component.d.ts +1 -1
  2. package/directlogin.component.d.ts +4 -4
  3. package/esm2020/authentication.component.mjs +131 -0
  4. package/esm2020/authentication.module.mjs +105 -0
  5. package/esm2020/authentication.provider.mjs +36 -0
  6. package/esm2020/authentication.service.mjs +393 -0
  7. package/esm2020/authorization.interceptor.mjs +79 -0
  8. package/esm2020/directlogin.component.mjs +96 -0
  9. package/esm2020/huntsman-cancer-institute-authentication.mjs +5 -0
  10. package/esm2020/index.mjs +13 -0
  11. package/esm2020/route-guard.service.mjs +52 -0
  12. package/esm2020/timeout-notification.component.mjs +148 -0
  13. package/fesm2015/huntsman-cancer-institute-authentication.mjs +1000 -0
  14. package/fesm2015/huntsman-cancer-institute-authentication.mjs.map +1 -0
  15. package/{fesm2015/huntsman-cancer-institute-authentication.js → fesm2020/huntsman-cancer-institute-authentication.mjs} +64 -189
  16. package/fesm2020/huntsman-cancer-institute-authentication.mjs.map +1 -0
  17. package/package.json +26 -18
  18. package/timeout-notification.component.d.ts +1 -1
  19. package/CHANGELOG.md +0 -4
  20. package/bundles/huntsman-cancer-institute-authentication.umd.js +0 -945
  21. package/bundles/huntsman-cancer-institute-authentication.umd.js.map +0 -1
  22. package/bundles/huntsman-cancer-institute-authentication.umd.min.js +0 -2
  23. package/bundles/huntsman-cancer-institute-authentication.umd.min.js.map +0 -1
  24. package/esm2015/authentication.component.js +0 -153
  25. package/esm2015/authentication.module.js +0 -107
  26. package/esm2015/authentication.provider.js +0 -36
  27. package/esm2015/authentication.service.js +0 -393
  28. package/esm2015/authorization.interceptor.js +0 -79
  29. package/esm2015/directlogin.component.js +0 -146
  30. package/esm2015/huntsman-cancer-institute-authentication.js +0 -5
  31. package/esm2015/index.js +0 -13
  32. package/esm2015/route-guard.service.js +0 -52
  33. package/esm2015/timeout-notification.component.js +0 -205
  34. package/esm5/authentication.component.js +0 -120
  35. package/esm5/authentication.module.js +0 -109
  36. package/esm5/authentication.provider.js +0 -47
  37. package/esm5/authentication.service.js +0 -411
  38. package/esm5/authorization.interceptor.js +0 -81
  39. package/esm5/directlogin.component.js +0 -53
  40. package/esm5/huntsman-cancer-institute-authentication.js +0 -5
  41. package/esm5/index.js +0 -13
  42. package/esm5/route-guard.service.js +0 -55
  43. package/esm5/timeout-notification.component.js +0 -125
  44. package/fesm2015/huntsman-cancer-institute-authentication.js.map +0 -1
  45. package/fesm5/huntsman-cancer-institute-authentication.js +0 -937
  46. package/fesm5/huntsman-cancer-institute-authentication.js.map +0 -1
  47. 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=