@cleavelandprice/ngx-lib 3.1.7 → 3.1.10

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 (54) hide show
  1. package/authentication/authentication.base.module.d.ts +7 -0
  2. package/authentication/object/object.module.d.ts +11 -0
  3. package/authentication/object/public_api.d.ts +2 -2
  4. package/authentication/object/services/{authentication-object.service.d.ts → authentication.service.d.ts} +3 -3
  5. package/authentication/public_api.d.ts +1 -1
  6. package/authentication/token/gui/components/login/login.component.d.ts +3 -3
  7. package/authentication/token/gui/components/login-form/login-form.component.d.ts +3 -3
  8. package/authentication/token/gui/public_api.d.ts +2 -2
  9. package/authentication/token/gui/services/{authentication-token-gui.service.d.ts → authentication.service.d.ts} +4 -4
  10. package/authentication/token/gui/token-gui.module.d.ts +20 -0
  11. package/authentication/token/public_api.d.ts +2 -2
  12. package/authentication/token/services/{authentication-token.service.d.ts → authentication.service.d.ts} +3 -3
  13. package/authentication/token/token.module.d.ts +11 -0
  14. package/esm2020/authentication/authentication.base.module.mjs +19 -0
  15. package/esm2020/authentication/object/object.module.mjs +39 -0
  16. package/esm2020/authentication/object/public_api.mjs +3 -3
  17. package/esm2020/authentication/object/services/authentication.service.mjs +101 -0
  18. package/esm2020/authentication/public_api.mjs +2 -2
  19. package/esm2020/authentication/token/gui/components/login/login.component.mjs +4 -4
  20. package/esm2020/authentication/token/gui/components/login-form/login-form.component.mjs +4 -4
  21. package/esm2020/authentication/token/gui/public_api.mjs +3 -3
  22. package/esm2020/authentication/token/gui/services/authentication.service.mjs +74 -0
  23. package/esm2020/authentication/token/gui/token-gui.module.mjs +77 -0
  24. package/esm2020/authentication/token/public_api.mjs +3 -3
  25. package/esm2020/authentication/token/services/authentication.service.mjs +112 -0
  26. package/esm2020/authentication/token/token.module.mjs +39 -0
  27. package/fesm2015/cleavelandprice-ngx-lib-authentication-object.mjs +14 -14
  28. package/fesm2015/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -1
  29. package/fesm2015/cleavelandprice-ngx-lib-authentication-token-gui.mjs +19 -19
  30. package/fesm2015/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +1 -1
  31. package/fesm2015/cleavelandprice-ngx-lib-authentication-token.mjs +14 -14
  32. package/fesm2015/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -1
  33. package/fesm2015/cleavelandprice-ngx-lib-authentication.mjs +6 -6
  34. package/fesm2015/cleavelandprice-ngx-lib-authentication.mjs.map +1 -1
  35. package/fesm2020/cleavelandprice-ngx-lib-authentication-object.mjs +14 -14
  36. package/fesm2020/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -1
  37. package/fesm2020/cleavelandprice-ngx-lib-authentication-token-gui.mjs +19 -19
  38. package/fesm2020/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +1 -1
  39. package/fesm2020/cleavelandprice-ngx-lib-authentication-token.mjs +14 -14
  40. package/fesm2020/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -1
  41. package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs +6 -6
  42. package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs.map +1 -1
  43. package/package.json +1 -1
  44. package/authentication/authentication.module.d.ts +0 -7
  45. package/authentication/object/authentication-object.module.d.ts +0 -11
  46. package/authentication/token/authentication-token.module.d.ts +0 -11
  47. package/authentication/token/gui/authentication-token-gui.module.d.ts +0 -20
  48. package/esm2020/authentication/authentication.module.mjs +0 -19
  49. package/esm2020/authentication/object/authentication-object.module.mjs +0 -39
  50. package/esm2020/authentication/object/services/authentication-object.service.mjs +0 -101
  51. package/esm2020/authentication/token/authentication-token.module.mjs +0 -39
  52. package/esm2020/authentication/token/gui/authentication-token-gui.module.mjs +0 -77
  53. package/esm2020/authentication/token/gui/services/authentication-token-gui.service.mjs +0 -74
  54. package/esm2020/authentication/token/services/authentication-token.service.mjs +0 -112
@@ -1,101 +0,0 @@
1
- import { EventEmitter, Injectable, Optional, Output } from '@angular/core';
2
- import { defaultConfig } from '../model/default-config';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../model/service-config";
5
- import * as i2 from "@angular/common/http";
6
- export class AuthenticationObjectService {
7
- //#endregion
8
- //#region Lifecycle
9
- // If a ServiceConfig object is not provided when the module is imported, then default values are pulled in from default-config.ts.
10
- constructor(config, http) {
11
- this.config = config;
12
- this.http = http;
13
- //#region Fields
14
- this.authenticatedChanged = new EventEmitter();
15
- this.authenticatingChanged = new EventEmitter();
16
- this.authenticationError = new EventEmitter();
17
- this.authenticating = false; // Flag set to true while the service is attempting to authenticate the user
18
- this.authenticated = false; // Flag set to true when the user is successfully authenticated
19
- this.authenticatedUser = null; // Object representing the authenticated user
20
- this.config = {
21
- ...defaultConfig,
22
- ...this.config
23
- };
24
- this.checkForExistingToken();
25
- }
26
- //#endregion
27
- //#region Utilities
28
- //Authenticate the user and store the token in Local Storage
29
- login(username, password, adminGroup) {
30
- const request = {
31
- username: username,
32
- password: password,
33
- adminGroup: adminGroup
34
- };
35
- this.authenticating = true;
36
- this.authenticatingChanged.emit(this.authenticating);
37
- this.http.post(`${this.config.apiUrl}${this.config.authenticateEndpoint}`, request)
38
- .subscribe({
39
- next: (user) => {
40
- if (user) {
41
- this.validateUser(user);
42
- }
43
- else {
44
- this.logout();
45
- }
46
- },
47
- error: (err) => {
48
- this.authenticating = false;
49
- this.authenticatingChanged.emit(this.authenticating);
50
- this.authenticationError.emit(err);
51
- }
52
- });
53
- }
54
- //Logout the user and delete the token from Local Storage
55
- logout() {
56
- if (localStorage.getItem(this.config.tokenName)) {
57
- localStorage.removeItem(this.config.tokenName);
58
- }
59
- this.authenticatedUser = null;
60
- this.authenticated = false;
61
- this.authenticatedChanged.emit(false);
62
- }
63
- validateUser(token) {
64
- this.authenticatedUser = {
65
- admin: false,
66
- displayName: token.displayName,
67
- accountName: token.sAMAccountName,
68
- distinguishedName: token.distinguishedName,
69
- employeeNumber: token.employeeNumber,
70
- memberOf: token.memberOf.join(',')
71
- };
72
- localStorage.setItem(this.config.tokenName, JSON.stringify(token));
73
- this.authenticated = true;
74
- this.authenticatedChanged.emit(this.authenticated);
75
- this.authenticating = false;
76
- this.authenticatingChanged.emit(this.authenticating);
77
- }
78
- checkForExistingToken() {
79
- const token = localStorage.getItem(this.config.tokenName);
80
- if (token) {
81
- this.validateUser(JSON.parse(token));
82
- }
83
- }
84
- }
85
- AuthenticationObjectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationObjectService, deps: [{ token: i1.ServiceConfig, optional: true }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
86
- AuthenticationObjectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationObjectService, providedIn: 'root' });
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationObjectService, decorators: [{
88
- type: Injectable,
89
- args: [{
90
- providedIn: 'root'
91
- }]
92
- }], ctorParameters: function () { return [{ type: i1.ServiceConfig, decorators: [{
93
- type: Optional
94
- }] }, { type: i2.HttpClient }]; }, propDecorators: { authenticatedChanged: [{
95
- type: Output
96
- }], authenticatingChanged: [{
97
- type: Output
98
- }], authenticationError: [{
99
- type: Output
100
- }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tb2JqZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9hdXRoZW50aWNhdGlvbi9vYmplY3Qvc3JjL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLW9iamVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFXM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBTXhELE1BQU0sT0FBTywyQkFBMkI7SUFRdEMsWUFBWTtJQUVaLG1CQUFtQjtJQUNuQixtSUFBbUk7SUFDbkksWUFBZ0MsTUFBcUIsRUFDakMsSUFBZ0I7UUFESixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVk7UUFacEMsZ0JBQWdCO1FBQ04seUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNuRCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3BELHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsbUJBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyw0RUFBNEU7UUFDcEcsa0JBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQywrREFBK0Q7UUFDdEYsc0JBQWlCLEdBQTZCLElBQUksQ0FBQyxDQUFDLDZDQUE2QztRQVFuRixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxhQUFhO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLE1BQU07U0FDZixDQUFDO1FBRUYsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUNELFlBQVk7SUFFWixtQkFBbUI7SUFDbkIsNERBQTREO0lBQzVELEtBQUssQ0FB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QTJCOzRIQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTsyRkFFUCwyQkFBMkI7a0JBSHZDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFhYyxRQUFRO3FFQVZYLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQGNsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2FjdGl2ZS1kaXJlY3RvcnknO1xyXG5cclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICBBdXRoZW50aWNhdGVkVXNlcixcclxuICBBdXRoZW50aWNhdGlvblJlcXVlc3RcclxufSBmcm9tICdAY2xlYXZlbGFuZHByaWNlL25neC1saWIvYXV0aGVudGljYXRpb24nO1xyXG5cclxuaW1wb3J0IHsgZGVmYXVsdENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2RlZmF1bHQtY29uZmlnJztcclxuaW1wb3J0IHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uT2JqZWN0U2VydmljZSBpbXBsZW1lbnRzIEFic3RyYWN0QXV0aGVudGljYXRpb25TZXJ2aWNlIHtcclxuICAvLyNyZWdpb24gRmllbGRzXHJcbiAgQE91dHB1dCgpIGF1dGhlbnRpY2F0ZWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBhdXRoZW50aWNhdGluZ0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGF1dGhlbnRpY2F0aW9uRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgYXV0aGVudGljYXRpbmcgPSBmYWxzZTsgLy8gRmxhZyBzZXQgdG8gdHJ1ZSB3aGlsZSB0aGUgc2VydmljZSBpcyBhdHRlbXB0aW5nIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlclxyXG4gIGF1dGhlbnRpY2F0ZWQgPSBmYWxzZTsgLy8gRmxhZyBzZXQgdG8gdHJ1ZSB3aGVuIHRoZSB1c2VyIGlzIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGVkXHJcbiAgYXV0aGVudGljYXRlZFVzZXI6IEF1dGhlbnRpY2F0ZWRVc2VyIHwgbnVsbCA9IG51bGw7IC8vIE9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlclxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gTGlmZWN5Y2xlXHJcbiAgLy8gSWYgYSBTZXJ2aWNlQ29uZmlnIG9iamVjdCBpcyBub3QgcHJvdmlkZWQgd2hlbiB0aGUgbW9kdWxlIGlzIGltcG9ydGVkLCB0aGVuIGRlZmF1bHQgdmFsdWVzIGFyZSBwdWxsZWQgaW4gZnJvbSBkZWZhdWx0LWNvbmZpZy50cy5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZzogU2VydmljZUNvbmZpZyxcclxuICAgICAgICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgLi4uZGVmYXVsdENvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb25maWdcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0ZvckV4aXN0aW5nVG9rZW4oKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBVdGlsaXRpZXNcclxuICAvL0F1dGhlbnRpY2F0ZSB0aGUgdXNlciBhbmQgc3RvcmUgdGhlIHRva2VuIGluIExvY2FsIFN0b3JhZ2VcclxuICBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBhZG1pbkdyb3VwPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBBdXRoZW50aWNhdGlvblJlcXVlc3QgPSB7XHJcbiAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcclxuICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkLFxyXG4gICAgICBhZG1pbkdyb3VwOiBhZG1pbkdyb3VwXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZ0NoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0aW5nKTtcclxuXHJcbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmNvbmZpZy5hcGlVcmx9JHt0aGlzLmNvbmZpZy5hdXRoZW50aWNhdGVFbmRwb2ludH1gLCByZXF1ZXN0KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAodXNlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKHVzZXIpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVVzZXIodXNlciBhcyBVc2VyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGluZ0NoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0aW5nKTtcclxuICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25FcnJvci5lbWl0KGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiBcclxuICAvL0xvZ291dCB0aGUgdXNlciBhbmQgZGVsZXRlIHRoZSB0b2tlbiBmcm9tIExvY2FsIFN0b3JhZ2VcclxuICBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jb25maWcudG9rZW5OYW1lKSkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmNvbmZpZy50b2tlbk5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXIgPSBudWxsO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWRDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuIFxyXG4gIHZhbGlkYXRlVXNlcih0b2tlbjogVXNlcik6IHZvaWQge1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlciA9IHtcclxuICAgICAgYWRtaW46IGZhbHNlLCAvLyBUaGlzIHR5cGUgb2YgYXV0aGVudGljYXRpb24gaGFzIG5vIGNvbmNlcHQgb2YgQWRtaW5cclxuICAgICAgZGlzcGxheU5hbWU6IHRva2VuLmRpc3BsYXlOYW1lLFxyXG4gICAgICBhY2NvdW50TmFtZTogdG9rZW4uc0FNQWNjb3VudE5hbWUsXHJcbiAgICAgIGRpc3Rpbmd1aXNoZWROYW1lOiB0b2tlbi5kaXN0aW5ndWlzaGVkTmFtZSxcclxuICAgICAgZW1wbG95ZWVOdW1iZXI6IHRva2VuLmVtcGxveWVlTnVtYmVyLFxyXG4gICAgICBtZW1iZXJPZjogdG9rZW4ubWVtYmVyT2Yuam9pbignLCcpXHJcbiAgICB9O1xyXG5cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuY29uZmlnLnRva2VuTmFtZSwgSlNPTi5zdHJpbmdpZnkodG9rZW4pKTtcclxuICAgIFxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRlZENoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0ZWQpO1xyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmdDaGFuZ2VkLmVtaXQodGhpcy5hdXRoZW50aWNhdGluZyk7XHJcbiAgfVxyXG5cclxuICBjaGVja0ZvckV4aXN0aW5nVG9rZW4oKTogdm9pZCB7XHJcbiAgICBjb25zdCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY29uZmlnLnRva2VuTmFtZSk7XHJcbiAgICBpZiAodG9rZW4pIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZVVzZXIoSlNPTi5wYXJzZSh0b2tlbikgYXMgVXNlcik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiAiXX0=
@@ -1,39 +0,0 @@
1
- import { NgModule, Optional, SkipSelf } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { ServiceConfig } from './model/service-config';
4
- import { AuthenticationTokenService } from './services/authentication-token.service';
5
- import * as i0 from "@angular/core";
6
- export class AuthenticationTokenModule {
7
- constructor(parentModule) {
8
- if (parentModule) {
9
- throw new Error('AuthenticationTokenModule is already loaded. Import it in the AppModule only');
10
- }
11
- }
12
- static forRoot(config) {
13
- return {
14
- ngModule: AuthenticationTokenModule,
15
- providers: [
16
- AuthenticationTokenService,
17
- { provide: ServiceConfig, useValue: config }
18
- ]
19
- };
20
- }
21
- }
22
- AuthenticationTokenModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenModule, deps: [{ token: AuthenticationTokenModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
23
- AuthenticationTokenModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenModule, imports: [CommonModule] });
24
- AuthenticationTokenModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenModule, imports: [CommonModule] });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenModule, decorators: [{
26
- type: NgModule,
27
- args: [{
28
- declarations: [],
29
- imports: [
30
- CommonModule
31
- ],
32
- exports: []
33
- }]
34
- }], ctorParameters: function () { return [{ type: AuthenticationTokenModule, decorators: [{
35
- type: Optional
36
- }, {
37
- type: SkipSelf
38
- }] }]; } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tdG9rZW4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvYXV0aGVudGljYXRpb24vdG9rZW4vc3JjL2F1dGhlbnRpY2F0aW9uLXRva2VuLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBU3JGLE1BQU0sT0FBTyx5QkFBeUI7SUFXcEMsWUFBb0MsWUFBdUM7UUFDekUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FDYiw4RUFBOEUsQ0FBQyxDQUFDO1NBQ25GO0lBQ0gsQ0FBQztJQWZELE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBcUI7UUFDbEMsT0FBTztZQUNMLFFBQVEsRUFBRSx5QkFBeUI7WUFDbkMsU0FBUyxFQUFFO2dCQUNULDBCQUEwQjtnQkFDMUIsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7YUFDN0M7U0FDRixDQUFDO0lBQ0osQ0FBQzs7c0hBVFUseUJBQXlCO3VIQUF6Qix5QkFBeUIsWUFKbEMsWUFBWTt1SEFJSCx5QkFBeUIsWUFKbEMsWUFBWTsyRkFJSCx5QkFBeUI7a0JBUHJDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRSxFQUFFO2lCQUNaOzswQkFZYyxRQUFROzswQkFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4vbW9kZWwvc2VydmljZS1jb25maWcnO1xyXG5cclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Ub2tlblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLXRva2VuLnNlcnZpY2UnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW11cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uVG9rZW5Nb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogU2VydmljZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXV0aGVudGljYXRpb25Ub2tlbk1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEF1dGhlbnRpY2F0aW9uVG9rZW5Nb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIEF1dGhlbnRpY2F0aW9uVG9rZW5TZXJ2aWNlLFxyXG4gICAgICAgIHsgcHJvdmlkZTogU2VydmljZUNvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnRNb2R1bGU6IEF1dGhlbnRpY2F0aW9uVG9rZW5Nb2R1bGUpIHtcclxuICAgIGlmIChwYXJlbnRNb2R1bGUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdBdXRoZW50aWNhdGlvblRva2VuTW9kdWxlIGlzIGFscmVhZHkgbG9hZGVkLiBJbXBvcnQgaXQgaW4gdGhlIEFwcE1vZHVsZSBvbmx5Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
@@ -1,77 +0,0 @@
1
- import { NgModule, Optional, SkipSelf } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MatDialogModule } from '@angular/material/dialog';
6
- import { MatFormFieldModule } from '@angular/material/form-field';
7
- import { MatIconModule } from '@angular/material/icon';
8
- import { MatInputModule } from '@angular/material/input';
9
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
10
- import { ServiceConfig } from './model/service-config';
11
- import { AuthenticationTokenGuiService } from './services/authentication-token-gui.service';
12
- import { LoginComponent } from './components/login/login.component';
13
- import { LoginFormComponent } from './components/login-form/login-form.component';
14
- import * as i0 from "@angular/core";
15
- export class AuthenticationTokenGuiModule {
16
- constructor(parentModule) {
17
- if (parentModule) {
18
- throw new Error('AuthenticationTokenGuiModule is already loaded. Import it in the AppModule only');
19
- }
20
- }
21
- static forRoot(config) {
22
- return {
23
- ngModule: AuthenticationTokenGuiModule,
24
- providers: [
25
- AuthenticationTokenGuiService,
26
- { provide: ServiceConfig, useValue: config }
27
- ]
28
- };
29
- }
30
- }
31
- AuthenticationTokenGuiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenGuiModule, deps: [{ token: AuthenticationTokenGuiModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
32
- AuthenticationTokenGuiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenGuiModule, declarations: [LoginComponent,
33
- LoginFormComponent], imports: [CommonModule,
34
- ReactiveFormsModule,
35
- MatButtonModule,
36
- MatDialogModule,
37
- MatFormFieldModule,
38
- MatIconModule,
39
- MatInputModule,
40
- MatProgressSpinnerModule], exports: [LoginComponent,
41
- LoginFormComponent] });
42
- AuthenticationTokenGuiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenGuiModule, imports: [CommonModule,
43
- ReactiveFormsModule,
44
- MatButtonModule,
45
- MatDialogModule,
46
- MatFormFieldModule,
47
- MatIconModule,
48
- MatInputModule,
49
- MatProgressSpinnerModule] });
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenGuiModule, decorators: [{
51
- type: NgModule,
52
- args: [{
53
- declarations: [
54
- LoginComponent,
55
- LoginFormComponent
56
- ],
57
- imports: [
58
- CommonModule,
59
- ReactiveFormsModule,
60
- MatButtonModule,
61
- MatDialogModule,
62
- MatFormFieldModule,
63
- MatIconModule,
64
- MatInputModule,
65
- MatProgressSpinnerModule
66
- ],
67
- exports: [
68
- LoginComponent,
69
- LoginFormComponent
70
- ]
71
- }]
72
- }], ctorParameters: function () { return [{ type: AuthenticationTokenGuiModule, decorators: [{
73
- type: Optional
74
- }, {
75
- type: SkipSelf
76
- }] }]; } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tdG9rZW4tZ3VpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2F1dGhlbnRpY2F0aW9uL3Rva2VuL2d1aS9zcmMvYXV0aGVudGljYXRpb24tdG9rZW4tZ3VpLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUF1QmxGLE1BQU0sT0FBTyw0QkFBNEI7SUFXdkMsWUFBb0MsWUFBMEM7UUFDNUUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FDYixpRkFBaUYsQ0FBQyxDQUFDO1NBQ3RGO0lBQ0gsQ0FBQztJQWZELE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBcUI7UUFDbEMsT0FBTztZQUNMLFFBQVEsRUFBRSw0QkFBNEI7WUFDdEMsU0FBUyxFQUFFO2dCQUNULDZCQUE2QjtnQkFDN0IsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7YUFDN0M7U0FDRixDQUFDO0lBQ0osQ0FBQzs7eUhBVFUsNEJBQTRCOzBIQUE1Qiw0QkFBNEIsaUJBbkJyQyxjQUFjO1FBQ2Qsa0JBQWtCLGFBR2xCLFlBQVk7UUFDWixtQkFBbUI7UUFFbkIsZUFBZTtRQUNmLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLGNBQWM7UUFDZCx3QkFBd0IsYUFHeEIsY0FBYztRQUNkLGtCQUFrQjswSEFHVCw0QkFBNEIsWUFmckMsWUFBWTtRQUNaLG1CQUFtQjtRQUVuQixlQUFlO1FBQ2YsZUFBZTtRQUNmLGtCQUFrQjtRQUNsQixhQUFhO1FBQ2IsY0FBYztRQUNkLHdCQUF3QjsyRkFPZiw0QkFBNEI7a0JBckJ4QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUVuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsd0JBQXdCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxrQkFBa0I7cUJBQ25CO2lCQUNGOzswQkFZYyxRQUFROzswQkFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xyXG5cclxuaW1wb3J0IHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4vbW9kZWwvc2VydmljZS1jb25maWcnO1xyXG5cclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Ub2tlbkd1aVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLXRva2VuLWd1aS5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IExvZ2luQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvZ2luRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb2dpbi1mb3JtL2xvZ2luLWZvcm0uY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBMb2dpbkNvbXBvbmVudCxcclxuICAgIExvZ2luRm9ybUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBMb2dpbkNvbXBvbmVudCxcclxuICAgIExvZ2luRm9ybUNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uVG9rZW5HdWlNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogU2VydmljZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXV0aGVudGljYXRpb25Ub2tlbkd1aU1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEF1dGhlbnRpY2F0aW9uVG9rZW5HdWlNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIEF1dGhlbnRpY2F0aW9uVG9rZW5HdWlTZXJ2aWNlLFxyXG4gICAgICAgIHsgcHJvdmlkZTogU2VydmljZUNvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnRNb2R1bGU6IEF1dGhlbnRpY2F0aW9uVG9rZW5HdWlNb2R1bGUpIHtcclxuICAgIGlmIChwYXJlbnRNb2R1bGUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdBdXRoZW50aWNhdGlvblRva2VuR3VpTW9kdWxlIGlzIGFscmVhZHkgbG9hZGVkLiBJbXBvcnQgaXQgaW4gdGhlIEFwcE1vZHVsZSBvbmx5Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
@@ -1,74 +0,0 @@
1
- import { Injectable, Optional } from '@angular/core';
2
- import { JwtHelperService } from '@auth0/angular-jwt';
3
- import { AuthenticationTokenService } from '@cleavelandprice/ngx-lib/authentication/token';
4
- import { defaultConfig } from '../model/default-config';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../model/service-config";
7
- import * as i2 from "@angular/common/http";
8
- import * as i3 from "@cleavelandprice/ngx-lib/sharepoint";
9
- export class AuthenticationTokenGuiService extends AuthenticationTokenService {
10
- //#region Lifecycle
11
- // If a ServiceConfig object is not provided when the module is imported, then default values are pulled in from default-config.ts.
12
- constructor(config, http, sharePointService) {
13
- config = {
14
- ...defaultConfig,
15
- ...config,
16
- // Need to force deferTokenValidation here because if a custom config was passed in, deferTokenValidation would have defaulted to false since it's the default boolean value
17
- // If a custom config wasn't passed in, then deferTokenValidation would have been true from defaultConfig
18
- deferTokenValidation: true
19
- };
20
- super(config, http);
21
- this.config = config;
22
- this.http = http;
23
- this.sharePointService = sharePointService;
24
- this.checkForExistingToken();
25
- }
26
- //#endregion
27
- //#region Utilities
28
- validateUser(token) {
29
- const jwtHelper = new JwtHelperService();
30
- const decoded = jwtHelper.decodeToken(token);
31
- if (jwtHelper.isTokenExpired(token)) {
32
- this.logout();
33
- return;
34
- }
35
- this.authenticatedUser = {
36
- admin: decoded.role === 'Admin',
37
- displayName: decoded.displayName,
38
- accountName: decoded.winaccountname,
39
- distinguishedName: decoded.distinguishedName,
40
- employeeNumber: decoded.employeeNumber,
41
- memberOf: decoded.memberOf
42
- };
43
- localStorage.setItem(this.config.tokenName, token);
44
- this.getPhoto();
45
- this.authenticated = true;
46
- this.authenticatedChanged.emit(this.authenticated);
47
- this.authenticating = false;
48
- this.authenticatingChanged.emit(this.authenticating);
49
- }
50
- getPhoto() {
51
- this.sharePointService.getPhotos()
52
- .subscribe(photos => {
53
- // The user may have been logged out by the time the photos came back
54
- if (!this.authenticatedUser?.employeeNumber) {
55
- return;
56
- }
57
- const photo = photos.find(pic => pic.employeeNumber === +this.authenticatedUser.employeeNumber);
58
- if (photo) {
59
- this.authenticatedUser.photoUrl = photo.encodedAbsUrl;
60
- }
61
- });
62
- }
63
- }
64
- AuthenticationTokenGuiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenGuiService, deps: [{ token: i1.ServiceConfig, optional: true }, { token: i2.HttpClient }, { token: i3.SharePointService }], target: i0.ɵɵFactoryTarget.Injectable });
65
- AuthenticationTokenGuiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenGuiService, providedIn: 'root' });
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenGuiService, decorators: [{
67
- type: Injectable,
68
- args: [{
69
- providedIn: 'root'
70
- }]
71
- }], ctorParameters: function () { return [{ type: i1.ServiceConfig, decorators: [{
72
- type: Optional
73
- }] }, { type: i2.HttpClient }, { type: i3.SharePointService }]; } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tdG9rZW4tZ3VpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9hdXRoZW50aWNhdGlvbi90b2tlbi9ndWkvc3JjL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLXRva2VuLWd1aS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXRELE9BQU8sRUFDTCwwQkFBMEIsRUFFM0IsTUFBTSwrQ0FBK0MsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBTXhELE1BQU0sT0FBTyw2QkFBOEIsU0FBUSwwQkFBMEI7SUFDM0UsbUJBQW1CO0lBQ25CLG1JQUFtSTtJQUNuSSxZQUFpQyxNQUFxQixFQUNqQyxJQUFnQixFQUNqQixpQkFBb0M7UUFFMUMsTUFBTSxHQUFHO1lBQ1AsR0FBRyxhQUFhO1lBQ2hCLEdBQUcsTUFBTTtZQUVULDRLQUE0SztZQUM1Syx5R0FBeUc7WUFDekcsb0JBQW9CLEVBQUUsSUFBSTtTQUMzQixDQUFDO1FBRUYsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQWJELFdBQU0sR0FBTixNQUFNLENBQWU7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBYTFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFDRCxZQUFZO0lBRVosbUJBQW1CO0lBQ1YsWUFBWSxDQUFDLEtBQWE7UUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUF3QixDQUFDO1FBRXBFLElBQUksU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUc7WUFDdkIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTztZQUMvQixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1lBQ25DLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUI7WUFDNUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1lBQ3RDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUMzQixDQUFDO1FBRUYsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFO2FBQy9CLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixxRUFBcUU7WUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLEVBQUU7Z0JBQzNDLE9BQU87YUFDUjtZQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRWpHLElBQUksS0FBSyxFQUFFO2dCQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQzthQUN2RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7MEhBbEVVLDZCQUE2Qjs4SEFBN0IsNkJBQTZCLGNBRjVCLE1BQU07MkZBRVAsNkJBQTZCO2tCQUh6QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSWMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xyXG5cclxuaW1wb3J0IHsgU2hhcmVQb2ludFNlcnZpY2UgfSBmcm9tICdAY2xlYXZlbGFuZHByaWNlL25neC1saWIvc2hhcmVwb2ludCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEF1dGhlbnRpY2F0aW9uVG9rZW5TZXJ2aWNlLFxyXG4gIEF1dGhlbnRpY2F0aW9uVG9rZW5cclxufSBmcm9tICdAY2xlYXZlbGFuZHByaWNlL25neC1saWIvYXV0aGVudGljYXRpb24vdG9rZW4nO1xyXG5cclxuaW1wb3J0IHsgZGVmYXVsdENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2RlZmF1bHQtY29uZmlnJztcclxuaW1wb3J0IHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uVG9rZW5HdWlTZXJ2aWNlIGV4dGVuZHMgQXV0aGVudGljYXRpb25Ub2tlblNlcnZpY2Uge1xyXG4gIC8vI3JlZ2lvbiBMaWZlY3ljbGVcclxuICAvLyBJZiBhIFNlcnZpY2VDb25maWcgb2JqZWN0IGlzIG5vdCBwcm92aWRlZCB3aGVuIHRoZSBtb2R1bGUgaXMgaW1wb3J0ZWQsIHRoZW4gZGVmYXVsdCB2YWx1ZXMgYXJlIHB1bGxlZCBpbiBmcm9tIGRlZmF1bHQtY29uZmlnLnRzLlxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIG92ZXJyaWRlIGNvbmZpZzogU2VydmljZUNvbmZpZyxcclxuICAgICAgICAgICAgICBvdmVycmlkZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgc2hhcmVQb2ludFNlcnZpY2U6IFNoYXJlUG9pbnRTZXJ2aWNlKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgICAuLi5kZWZhdWx0Q29uZmlnLFxyXG4gICAgICAgICAgICAgICAgICAuLi5jb25maWcsXHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGZvcmNlIGRlZmVyVG9rZW5WYWxpZGF0aW9uIGhlcmUgYmVjYXVzZSBpZiBhIGN1c3RvbSBjb25maWcgd2FzIHBhc3NlZCBpbiwgZGVmZXJUb2tlblZhbGlkYXRpb24gd291bGQgaGF2ZSBkZWZhdWx0ZWQgdG8gZmFsc2Ugc2luY2UgaXQncyB0aGUgZGVmYXVsdCBib29sZWFuIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIC8vIElmIGEgY3VzdG9tIGNvbmZpZyB3YXNuJ3QgcGFzc2VkIGluLCB0aGVuIGRlZmVyVG9rZW5WYWxpZGF0aW9uIHdvdWxkIGhhdmUgYmVlbiB0cnVlIGZyb20gZGVmYXVsdENvbmZpZ1xyXG4gICAgICAgICAgICAgICAgICBkZWZlclRva2VuVmFsaWRhdGlvbjogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBzdXBlcihjb25maWcsIGh0dHApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JFeGlzdGluZ1Rva2VuKCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gVXRpbGl0aWVzXHJcbiAgb3ZlcnJpZGUgdmFsaWRhdGVVc2VyKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGp3dEhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBkZWNvZGVkID0gand0SGVscGVyLmRlY29kZVRva2VuKHRva2VuKSBhcyBBdXRoZW50aWNhdGlvblRva2VuO1xyXG5cclxuICAgIGlmIChqd3RIZWxwZXIuaXNUb2tlbkV4cGlyZWQodG9rZW4pKSB7XHJcbiAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWRVc2VyID0ge1xyXG4gICAgICBhZG1pbjogZGVjb2RlZC5yb2xlID09PSAnQWRtaW4nLFxyXG4gICAgICBkaXNwbGF5TmFtZTogZGVjb2RlZC5kaXNwbGF5TmFtZSxcclxuICAgICAgYWNjb3VudE5hbWU6IGRlY29kZWQud2luYWNjb3VudG5hbWUsXHJcbiAgICAgIGRpc3Rpbmd1aXNoZWROYW1lOiBkZWNvZGVkLmRpc3Rpbmd1aXNoZWROYW1lLFxyXG4gICAgICBlbXBsb3llZU51bWJlcjogZGVjb2RlZC5lbXBsb3llZU51bWJlcixcclxuICAgICAgbWVtYmVyT2Y6IGRlY29kZWQubWVtYmVyT2ZcclxuICAgIH07XHJcblxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5jb25maWcudG9rZW5OYW1lLCB0b2tlbik7XHJcblxyXG4gICAgdGhpcy5nZXRQaG90bygpO1xyXG4gICAgXHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkQ2hhbmdlZC5lbWl0KHRoaXMuYXV0aGVudGljYXRlZCk7XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZ0NoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0aW5nKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGhvdG8oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNoYXJlUG9pbnRTZXJ2aWNlLmdldFBob3RvcygpXHJcbiAgICAgIC5zdWJzY3JpYmUocGhvdG9zID0+IHtcclxuICAgICAgICAvLyBUaGUgdXNlciBtYXkgaGF2ZSBiZWVuIGxvZ2dlZCBvdXQgYnkgdGhlIHRpbWUgdGhlIHBob3RvcyBjYW1lIGJhY2tcclxuICAgICAgICBpZiAoIXRoaXMuYXV0aGVudGljYXRlZFVzZXI/LmVtcGxveWVlTnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwaG90byA9IHBob3Rvcy5maW5kKHBpYyA9PiBwaWMuZW1wbG95ZWVOdW1iZXIgPT09ICt0aGlzLmF1dGhlbnRpY2F0ZWRVc2VyIS5lbXBsb3llZU51bWJlcik7XHJcblxyXG4gICAgICAgIGlmIChwaG90bykge1xyXG4gICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlci5waG90b1VybCA9IHBob3RvLmVuY29kZWRBYnNVcmw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn0iXX0=
@@ -1,112 +0,0 @@
1
- import { EventEmitter, Injectable, Optional, Output } from '@angular/core';
2
- import { JwtHelperService } from '@auth0/angular-jwt';
3
- import { defaultConfig } from '../model/default-config';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../model/service-config";
6
- import * as i2 from "@angular/common/http";
7
- export class AuthenticationTokenService {
8
- //#endregion
9
- //#region Lifecycle
10
- // If a ServiceConfig object is not provided when the module is imported, then default values are pulled in from default-config.ts.
11
- constructor(config, http) {
12
- this.config = config;
13
- this.http = http;
14
- //#region Fields
15
- this.authenticatedChanged = new EventEmitter();
16
- this.authenticatingChanged = new EventEmitter();
17
- this.authenticationError = new EventEmitter();
18
- this.authenticating = false; // Flag set to true while the service is attempting to authenticate the user
19
- this.authenticated = false; // Flag set to true when the user is successfully authenticated
20
- this.authenticatedUser = null; // Object representing the authenticated user
21
- this.config = {
22
- ...defaultConfig,
23
- ...config
24
- };
25
- if (!this.config.deferTokenValidation) {
26
- this.checkForExistingToken();
27
- }
28
- }
29
- //#endregion
30
- //#region Utilities
31
- //Authenticate the user and store the token in Local Storage
32
- login(username, password, adminGroup) {
33
- const request = {
34
- username: username,
35
- password: password,
36
- adminGroup: adminGroup
37
- };
38
- this.authenticating = true;
39
- this.authenticatingChanged.emit(this.authenticating);
40
- // Sending a 'raw' POST request so that we can tell HttpClient that we are expecting text instead of Json
41
- // Otherwise, it would throw an error trying to decode Json from the response
42
- this.http.request('POST', `${this.config.apiUrl}${this.config.authenticateEndpoint}`, { body: request, responseType: 'text' })
43
- .subscribe({
44
- next: (token) => {
45
- if (token) {
46
- this.validateUser(token);
47
- }
48
- else {
49
- this.logout();
50
- }
51
- },
52
- error: (err) => {
53
- this.authenticating = false;
54
- this.authenticatingChanged.emit(this.authenticating);
55
- this.authenticationError.emit(err);
56
- }
57
- });
58
- }
59
- //Logout the user and delete the token from Local Storage
60
- logout() {
61
- if (localStorage.getItem(this.config.tokenName)) {
62
- localStorage.removeItem(this.config.tokenName);
63
- }
64
- this.authenticatedUser = null;
65
- this.authenticated = false;
66
- this.authenticatedChanged.emit(false);
67
- }
68
- validateUser(token) {
69
- const jwtHelper = new JwtHelperService();
70
- const decoded = jwtHelper.decodeToken(token);
71
- if (jwtHelper.isTokenExpired(token)) {
72
- this.logout();
73
- return;
74
- }
75
- this.authenticatedUser = {
76
- admin: decoded.role === 'Admin',
77
- displayName: decoded.displayName,
78
- accountName: decoded.winaccountname,
79
- distinguishedName: decoded.distinguishedName,
80
- employeeNumber: decoded.employeeNumber,
81
- memberOf: decoded.memberOf
82
- };
83
- localStorage.setItem(this.config.tokenName, token);
84
- this.authenticated = true;
85
- this.authenticatedChanged.emit(this.authenticated);
86
- this.authenticating = false;
87
- this.authenticatingChanged.emit(this.authenticating);
88
- }
89
- checkForExistingToken() {
90
- const token = localStorage.getItem(this.config.tokenName);
91
- if (token) {
92
- this.validateUser(token);
93
- }
94
- }
95
- }
96
- AuthenticationTokenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenService, deps: [{ token: i1.ServiceConfig, optional: true }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
97
- AuthenticationTokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenService, providedIn: 'root' });
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AuthenticationTokenService, decorators: [{
99
- type: Injectable,
100
- args: [{
101
- providedIn: 'root'
102
- }]
103
- }], ctorParameters: function () { return [{ type: i1.ServiceConfig, decorators: [{
104
- type: Optional
105
- }] }, { type: i2.HttpClient }]; }, propDecorators: { authenticatedChanged: [{
106
- type: Output
107
- }], authenticatingChanged: [{
108
- type: Output
109
- }], authenticationError: [{
110
- type: Output
111
- }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tdG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2F1dGhlbnRpY2F0aW9uL3Rva2VuL3NyYy9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi10b2tlbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBTXhELE1BQU0sT0FBTywwQkFBMEI7SUFRckMsWUFBWTtJQUVaLG1CQUFtQjtJQUNuQixtSUFBbUk7SUFDbkksWUFBa0MsTUFBcUIsRUFDakMsSUFBZ0I7UUFESixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVk7UUFadEMsZ0JBQWdCO1FBQ04seUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNuRCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3BELHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsbUJBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyw0RUFBNEU7UUFDcEcsa0JBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQywrREFBK0Q7UUFDdEYsc0JBQWlCLEdBQTZCLElBQUksQ0FBQyxDQUFDLDZDQUE2QztRQVFuRixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxhQUFhO1lBQ2hCLEdBQUcsTUFBTTtTQUNWLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtZQUNyQyxJQUFJLENB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YSxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7dUhBcEdVLDBCQUEwQjsySEFBMUIsMEJBQTBCLGNBRnpCLE1BQU07MkZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBYWMsUUFBUTtxRUFWWCxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuXHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgQXV0aGVudGljYXRlZFVzZXIsXHJcbiAgQXV0aGVudGljYXRpb25SZXF1ZXN0XHJcbn0gZnJvbSAnQGNsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2F1dGhlbnRpY2F0aW9uJztcclxuXHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uVG9rZW4gfSBmcm9tICcuLi9tb2RlbC9hdXRoZW50aWNhdGlvbi10b2tlbic7XHJcbmltcG9ydCB7IGRlZmF1bHRDb25maWcgfSBmcm9tICcuLi9tb2RlbC9kZWZhdWx0LWNvbmZpZyc7XHJcbmltcG9ydCB7IFNlcnZpY2VDb25maWcgfSBmcm9tICcuLi9tb2RlbC9zZXJ2aWNlLWNvbmZpZyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblRva2VuU2VydmljZSBpbXBsZW1lbnRzIEFic3RyYWN0QXV0aGVudGljYXRpb25TZXJ2aWNlIHtcclxuICAvLyNyZWdpb24gRmllbGRzXHJcbiAgQE91dHB1dCgpIGF1dGhlbnRpY2F0ZWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBhdXRoZW50aWNhdGluZ0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGF1dGhlbnRpY2F0aW9uRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgYXV0aGVudGljYXRpbmcgPSBmYWxzZTsgLy8gRmxhZyBzZXQgdG8gdHJ1ZSB3aGlsZSB0aGUgc2VydmljZSBpcyBhdHRlbXB0aW5nIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlclxyXG4gIGF1dGhlbnRpY2F0ZWQgPSBmYWxzZTsgLy8gRmxhZyBzZXQgdG8gdHJ1ZSB3aGVuIHRoZSB1c2VyIGlzIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGVkXHJcbiAgYXV0aGVudGljYXRlZFVzZXI6IEF1dGhlbnRpY2F0ZWRVc2VyIHwgbnVsbCA9IG51bGw7IC8vIE9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlclxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gTGlmZWN5Y2xlXHJcbiAgLy8gSWYgYSBTZXJ2aWNlQ29uZmlnIG9iamVjdCBpcyBub3QgcHJvdmlkZWQgd2hlbiB0aGUgbW9kdWxlIGlzIGltcG9ydGVkLCB0aGVuIGRlZmF1bHQgdmFsdWVzIGFyZSBwdWxsZWQgaW4gZnJvbSBkZWZhdWx0LWNvbmZpZy50cy5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgY29uZmlnOiBTZXJ2aWNlQ29uZmlnLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcsXHJcbiAgICAgICAgICAgICAgICAgIC4uLmNvbmZpZ1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmRlZmVyVG9rZW5WYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JFeGlzdGluZ1Rva2VuKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gVXRpbGl0aWVzXHJcbiAgLy9BdXRoZW50aWNhdGUgdGhlIHVzZXIgYW5kIHN0b3JlIHRoZSB0b2tlbiBpbiBMb2NhbCBTdG9yYWdlXHJcbiAgbG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgYWRtaW5Hcm91cD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVxdWVzdDogQXV0aGVudGljYXRpb25SZXF1ZXN0ID0ge1xyXG4gICAgICB1c2VybmFtZTogdXNlcm5hbWUsXHJcbiAgICAgIHBhc3N3b3JkOiBwYXNzd29yZCxcclxuICAgICAgYWRtaW5Hcm91cDogYWRtaW5Hcm91cFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmdDaGFuZ2VkLmVtaXQodGhpcy5hdXRoZW50aWNhdGluZyk7XHJcblxyXG4gICAgLy8gU2VuZGluZyBhICdyYXcnIFBPU1QgcmVxdWVzdCBzbyB0aGF0IHdlIGNhbiB0ZWxsIEh0dHBDbGllbnQgdGhhdCB3ZSBhcmUgZXhwZWN0aW5nIHRleHQgaW5zdGVhZCBvZiBKc29uXHJcbiAgICAvLyBPdGhlcndpc2UsIGl0IHdvdWxkIHRocm93IGFuIGVycm9yIHRyeWluZyB0byBkZWNvZGUgSnNvbiBmcm9tIHRoZSByZXNwb25zZVxyXG4gICAgdGhpcy5odHRwLnJlcXVlc3QoJ1BPU1QnLCBgJHt0aGlzLmNvbmZpZy5hcGlVcmx9JHt0aGlzLmNvbmZpZy5hdXRoZW50aWNhdGVFbmRwb2ludH1gLCB7IGJvZHk6IHJlcXVlc3QsIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICh0b2tlbikgPT4ge1xyXG4gICAgICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVVc2VyKHRva2VuKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGluZ0NoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0aW5nKTtcclxuICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25FcnJvci5lbWl0KGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiBcclxuICAvL0xvZ291dCB0aGUgdXNlciBhbmQgZGVsZXRlIHRoZSB0b2tlbiBmcm9tIExvY2FsIFN0b3JhZ2VcclxuICBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jb25maWcudG9rZW5OYW1lKSkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmNvbmZpZy50b2tlbk5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXIgPSBudWxsO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWRDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuIFxyXG4gIHZhbGlkYXRlVXNlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBqd3RIZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gICAgY29uc3QgZGVjb2RlZCA9IGp3dEhlbHBlci5kZWNvZGVUb2tlbih0b2tlbikgYXMgQXV0aGVudGljYXRpb25Ub2tlbjtcclxuXHJcbiAgICBpZiAoand0SGVscGVyLmlzVG9rZW5FeHBpcmVkKHRva2VuKSkge1xyXG4gICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlciA9IHtcclxuICAgICAgYWRtaW46IGRlY29kZWQucm9sZSA9PT0gJ0FkbWluJyxcclxuICAgICAgZGlzcGxheU5hbWU6IGRlY29kZWQuZGlzcGxheU5hbWUsXHJcbiAgICAgIGFjY291bnROYW1lOiBkZWNvZGVkLndpbmFjY291bnRuYW1lLFxyXG4gICAgICBkaXN0aW5ndWlzaGVkTmFtZTogZGVjb2RlZC5kaXN0aW5ndWlzaGVkTmFtZSxcclxuICAgICAgZW1wbG95ZWVOdW1iZXI6IGRlY29kZWQuZW1wbG95ZWVOdW1iZXIsXHJcbiAgICAgIG1lbWJlck9mOiBkZWNvZGVkLm1lbWJlck9mXHJcbiAgICB9O1xyXG5cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuY29uZmlnLnRva2VuTmFtZSwgdG9rZW4pO1xyXG4gICAgXHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkQ2hhbmdlZC5lbWl0KHRoaXMuYXV0aGVudGljYXRlZCk7XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZ0NoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0aW5nKTtcclxuICB9XHJcblxyXG4gIGNoZWNrRm9yRXhpc3RpbmdUb2tlbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jb25maWcudG9rZW5OYW1lKTtcclxuICAgIGlmICh0b2tlbikge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlVXNlcih0b2tlbik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59Il19