@cleavelandprice/ngx-lib 3.7.0 → 3.7.2

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 (42) hide show
  1. package/authentication/model/abstract-authentication-service.d.ts +2 -0
  2. package/authentication/model/service-config.d.ts +1 -3
  3. package/authentication/object/model/service-config.d.ts +1 -1
  4. package/authentication/object/services/authentication.service.d.ts +2 -0
  5. package/authentication/token/gui/components/login-form/login-form.component.d.ts +7 -2
  6. package/authentication/token/gui/model/service-config.d.ts +2 -1
  7. package/authentication/token/gui/token-gui.module.d.ts +2 -1
  8. package/authentication/token/model/service-config.d.ts +1 -1
  9. package/authentication/token/services/authentication.service.d.ts +2 -0
  10. package/dialog/components/base/base.component.d.ts +4 -3
  11. package/esm2020/authentication/model/abstract-authentication-service.mjs +1 -1
  12. package/esm2020/authentication/model/service-config.mjs +2 -8
  13. package/esm2020/authentication/object/model/service-config.mjs +3 -3
  14. package/esm2020/authentication/object/services/authentication.service.mjs +15 -5
  15. package/esm2020/authentication/token/gui/components/login-form/login-form.component.mjs +20 -8
  16. package/esm2020/authentication/token/gui/model/service-config.mjs +4 -3
  17. package/esm2020/authentication/token/gui/services/authentication.service.mjs +2 -2
  18. package/esm2020/authentication/token/gui/token-gui.module.mjs +8 -4
  19. package/esm2020/authentication/token/model/service-config.mjs +3 -3
  20. package/esm2020/authentication/token/services/authentication.service.mjs +15 -5
  21. package/esm2020/dialog/components/base/base.component.mjs +4 -1
  22. package/fesm2015/cleavelandprice-ngx-lib-authentication-object.mjs +16 -6
  23. package/fesm2015/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -1
  24. package/fesm2015/cleavelandprice-ngx-lib-authentication-token-gui.mjs +30 -13
  25. package/fesm2015/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +1 -1
  26. package/fesm2015/cleavelandprice-ngx-lib-authentication-token.mjs +16 -6
  27. package/fesm2015/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -1
  28. package/fesm2015/cleavelandprice-ngx-lib-authentication.mjs +1 -7
  29. package/fesm2015/cleavelandprice-ngx-lib-authentication.mjs.map +1 -1
  30. package/fesm2015/cleavelandprice-ngx-lib-dialog.mjs +3 -1
  31. package/fesm2015/cleavelandprice-ngx-lib-dialog.mjs.map +1 -1
  32. package/fesm2020/cleavelandprice-ngx-lib-authentication-object.mjs +16 -6
  33. package/fesm2020/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -1
  34. package/fesm2020/cleavelandprice-ngx-lib-authentication-token-gui.mjs +30 -13
  35. package/fesm2020/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +1 -1
  36. package/fesm2020/cleavelandprice-ngx-lib-authentication-token.mjs +16 -6
  37. package/fesm2020/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -1
  38. package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs +1 -7
  39. package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs.map +1 -1
  40. package/fesm2020/cleavelandprice-ngx-lib-dialog.mjs +3 -1
  41. package/fesm2020/cleavelandprice-ngx-lib-dialog.mjs.map +1 -1
  42. package/package.json +1 -1
@@ -22,6 +22,16 @@ export class AuthenticationService {
22
22
  }
23
23
  }
24
24
  //#endregion
25
+ //#region Properties
26
+ get useSessionStorage() {
27
+ return !!localStorage.getItem('storeTokenInSession');
28
+ }
29
+ get storage() {
30
+ return this.useSessionStorage ?
31
+ sessionStorage :
32
+ localStorage;
33
+ }
34
+ //#endregion
25
35
  //#region Utilities
26
36
  //Authenticate the user and store the token in Local Storage
27
37
  login(username, password, adminGroup) {
@@ -53,8 +63,8 @@ export class AuthenticationService {
53
63
  }
54
64
  //Logout the user and delete the token from Local Storage
55
65
  logout() {
56
- if (this.config.storage.getItem(this.config.tokenName)) {
57
- this.config.storage.removeItem(this.config.tokenName);
66
+ if (this.storage.getItem(this.config.tokenName)) {
67
+ this.storage.removeItem(this.config.tokenName);
58
68
  }
59
69
  this.authenticatedUser = undefined;
60
70
  this.authenticated = false;
@@ -75,14 +85,14 @@ export class AuthenticationService {
75
85
  employeeNumber: decoded.employeeNumber,
76
86
  memberOf: decoded.memberOf
77
87
  };
78
- this.config.storage.setItem(this.config.tokenName, token);
88
+ this.storage.setItem(this.config.tokenName, token);
79
89
  this.authenticated = true;
80
90
  this.authenticatedChanged.emit(this.authenticated);
81
91
  this.authenticating = false;
82
92
  this.authenticatingChanged.emit(this.authenticating);
83
93
  }
84
94
  checkForExistingToken() {
85
- const token = this.config.storage.getItem(this.config.tokenName);
95
+ const token = this.storage.getItem(this.config.tokenName);
86
96
  if (token) {
87
97
  this.validateUser(token);
88
98
  }
@@ -104,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
104
114
  }], authenticationError: [{
105
115
  type: Output
106
116
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2F1dGhlbnRpY2F0aW9uL3Rva2VuL3NyYy9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBS3hELE1BQU0sT0FBTyxxQkFBcUI7SUFRaEMsWUFBWTtJQUVaLG1CQUFtQjtJQUNqQixZQUFrQyxNQUFxQixFQUNuQyxJQUFnQjtRQURGLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVh0QyxnQkFBZ0I7UUFDTix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ25ELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDcEQsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxtQkFBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLDRFQUE0RTtRQUNwRyxrQkFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLCtEQUErRDtRQVF4RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUVqRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtZQUNyQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5QjtJQUNmLENBQUM7SUFDRCxZQUFZO0lBRVosbUJBQW1CO0lBQ25CLDRE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LENBQUM7UUFFbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRSxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDOztrSEFoR1UscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFZZ0IsUUFBUTtxRUFUYixvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuXHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgQXV0aGVudGljYXRlZFVzZXIsXHJcbiAgQXV0aGVudGljYXRpb25SZXF1ZXN0XHJcbn0gZnJvbSAnQGNsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2F1dGhlbnRpY2F0aW9uJztcclxuXHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uVG9rZW4gfSBmcm9tICcuLi9tb2RlbC9hdXRoZW50aWNhdGlvbi10b2tlbic7XHJcbmltcG9ydCB7IFNlcnZpY2VDb25maWcgfSBmcm9tICcuLi9tb2RlbC9zZXJ2aWNlLWNvbmZpZyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBBYnN0cmFjdEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XHJcbiAgLy8jcmVnaW9uIEZpZWxkc1xyXG4gIEBPdXRwdXQoKSBhdXRoZW50aWNhdGVkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCkgYXV0aGVudGljYXRpbmdDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBhdXRoZW50aWNhdGlvbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGF1dGhlbnRpY2F0aW5nID0gZmFsc2U7IC8vIEZsYWcgc2V0IHRvIHRydWUgd2hpbGUgdGhlIHNlcnZpY2UgaXMgYXR0ZW1wdGluZyB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXJcclxuICBhdXRoZW50aWNhdGVkID0gZmFsc2U7IC8vIEZsYWcgc2V0IHRvIHRydWUgd2hlbiB0aGUgdXNlciBpcyBzdWNjZXNzZnVsbHkgYXV0aGVudGljYXRlZFxyXG4gIGF1dGhlbnRpY2F0ZWRVc2VyOiBBdXRoZW50aWNhdGVkVXNlciB8IHVuZGVmaW5lZDsgLy8gT2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXV0aGVudGljYXRlZCB1c2VyXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBMaWZlY3ljbGVcclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByb3RlY3RlZCBjb25maWc6IFNlcnZpY2VDb25maWcsXHJcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlnID8/IG5ldyBTZXJ2aWNlQ29uZmlnKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5kZWZlclRva2VuVmFsaWRhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRm9yRXhpc3RpbmdUb2tlbigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFV0aWxpdGllc1xyXG4gIC8vQXV0aGVudGljYXRlIHRoZSB1c2VyIGFuZCBzdG9yZSB0aGUgdG9rZW4gaW4gTG9jYWwgU3RvcmFnZVxyXG4gIGxvZ2luKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGFkbWluR3JvdXA/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlcXVlc3Q6IEF1dGhlbnRpY2F0aW9uUmVxdWVzdCA9IHtcclxuICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxyXG4gICAgICBwYXNzd29yZDogcGFzc3dvcmQsXHJcbiAgICAgIGFkbWluR3JvdXA6IGFkbWluR3JvdXBcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW5nQ2hhbmdlZC5lbWl0KHRoaXMuYXV0aGVudGljYXRpbmcpO1xyXG5cclxuICAgIC8vIFNlbmRpbmcgYSAncmF3JyBQT1NUIHJlcXVlc3Qgc28gdGhhdCB3ZSBjYW4gdGVsbCBIdHRwQ2xpZW50IHRoYXQgd2UgYXJlIGV4cGVjdGluZyB0ZXh0IGluc3RlYWQgb2YgSnNvblxyXG4gICAgLy8gT3RoZXJ3aXNlLCBpdCB3b3VsZCB0aHJvdyBhbiBlcnJvciB0cnlpbmcgdG8gZGVjb2RlIEpzb24gZnJvbSB0aGUgcmVzcG9uc2VcclxuICAgIHRoaXMuaHR0cC5yZXF1ZXN0KCdQT1NUJywgYCR7dGhpcy5jb25maWcuYXBpVXJsfSR7dGhpcy5jb25maWcuYXV0aGVudGljYXRlRW5kcG9pbnR9YCwgeyBib2R5OiByZXF1ZXN0LCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAodG9rZW4pID0+IHtcclxuICAgICAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlVXNlcih0b2tlbik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRpbmdDaGFuZ2VkLmVtaXQodGhpcy5hdXRoZW50aWNhdGluZyk7XHJcbiAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uRXJyb3IuZW1pdChlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gXHJcbiAgLy9Mb2dvdXQgdGhlIHVzZXIgYW5kIGRlbGV0ZSB0aGUgdG9rZW4gZnJvbSBMb2NhbCBTdG9yYWdlXHJcbiAgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLnN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNvbmZpZy50b2tlbk5hbWUpKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmNvbmZpZy50b2tlbk5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRlZENoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG4gXHJcbiAgdmFsaWRhdGVVc2VyKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGp3dEhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBkZWNvZGVkID0gand0SGVscGVyLmRlY29kZVRva2VuKHRva2VuKSBhcyBBdXRoZW50aWNhdGlvblRva2VuO1xyXG5cclxuICAgIGlmIChqd3RIZWxwZXIuaXNUb2tlbkV4cGlyZWQodG9rZW4pKSB7XHJcbiAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWRVc2VyID0ge1xyXG4gICAgICBhZG1pbjogZGVjb2RlZC5yb2xlID09PSAnQWRtaW4nLFxyXG4gICAgICBkaXNwbGF5TmFtZTogZGVjb2RlZC5kaXNwbGF5TmFtZSxcclxuICAgICAgYWNjb3VudE5hbWU6IGRlY29kZWQud2luYWNjb3VudG5hbWUsXHJcbiAgICAgIGRpc3Rpbmd1aXNoZWROYW1lOiBkZWNvZGVkLmRpc3Rpbmd1aXNoZWROYW1lLFxyXG4gICAgICBlbXBsb3llZU51bWJlcjogZGVjb2RlZC5lbXBsb3llZU51bWJlcixcclxuICAgICAgbWVtYmVyT2Y6IGRlY29kZWQubWVtYmVyT2ZcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5jb25maWcuc3RvcmFnZS5zZXRJdGVtKHRoaXMuY29uZmlnLnRva2VuTmFtZSwgdG9rZW4pO1xyXG4gICAgXHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkQ2hhbmdlZC5lbWl0KHRoaXMuYXV0aGVudGljYXRlZCk7XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZ0NoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0aW5nKTtcclxuICB9XHJcblxyXG4gIGNoZWNrRm9yRXhpc3RpbmdUb2tlbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5jb25maWcuc3RvcmFnZS5nZXRJdGVtKHRoaXMuY29uZmlnLnRva2VuTmFtZSk7XHJcbiAgICBpZiAodG9rZW4pIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZVVzZXIodG9rZW4pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufSJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2F1dGhlbnRpY2F0aW9uL3Rva2VuL3NyYy9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBS3hELE1BQU0sT0FBTyxxQkFBcUI7SUFvQmhDLFlBQVk7SUFFWixtQkFBbUI7SUFDbkIsWUFBa0MsTUFBcUIsRUFDbkMsSUFBZ0I7UUFERixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ25DLFNBQUksR0FBSixJQUFJLENBQVk7UUF2QnBDLGdCQUFnQjtRQUNOLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbkQsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNwRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELG1CQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsNEVBQTRFO1FBQ3BHLGtCQUFhLEdBQUcsS0FBSyxDQUFDLENBQUMsK0RBQStEO1FBb0IxRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUVqRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtZQUNyQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5QjtJQUNiLENBQUM7SUF2QkQsWUFBWTtJQUVaLG9CQUFvQjtJQUNw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QzNCLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7a0hBNUdVLHFCQUFxQjtzSEFBckIscUJBQXFCLGNBRnBCLE1BQU07MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBd0JjLFFBQVE7cUVBckJYLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICBBdXRoZW50aWNhdGVkVXNlcixcclxuICBBdXRoZW50aWNhdGlvblJlcXVlc3RcclxufSBmcm9tICdAY2xlYXZlbGFuZHByaWNlL25neC1saWIvYXV0aGVudGljYXRpb24nO1xyXG5cclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Ub2tlbiB9IGZyb20gJy4uL21vZGVsL2F1dGhlbnRpY2F0aW9uLXRva2VuJztcclxuaW1wb3J0IHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSBpbXBsZW1lbnRzIEFic3RyYWN0QXV0aGVudGljYXRpb25TZXJ2aWNlIHtcclxuICAvLyNyZWdpb24gRmllbGRzXHJcbiAgQE91dHB1dCgpIGF1dGhlbnRpY2F0ZWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBhdXRoZW50aWNhdGluZ0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGF1dGhlbnRpY2F0aW9uRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgYXV0aGVudGljYXRpbmcgPSBmYWxzZTsgLy8gRmxhZyBzZXQgdG8gdHJ1ZSB3aGlsZSB0aGUgc2VydmljZSBpcyBhdHRlbXB0aW5nIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlclxyXG4gIGF1dGhlbnRpY2F0ZWQgPSBmYWxzZTsgLy8gRmxhZyBzZXQgdG8gdHJ1ZSB3aGVuIHRoZSB1c2VyIGlzIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGVkXHJcbiAgYXV0aGVudGljYXRlZFVzZXI6IEF1dGhlbnRpY2F0ZWRVc2VyIHwgdW5kZWZpbmVkOyAvLyBPYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhdXRoZW50aWNhdGVkIHVzZXJcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFByb3BlcnRpZXNcclxuICBnZXQgdXNlU2Vzc2lvblN0b3JhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3RvcmVUb2tlbkluU2Vzc2lvbicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN0b3JhZ2UoKTogU3RvcmFnZSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VTZXNzaW9uU3RvcmFnZSA/XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlOlxyXG4gICAgICBsb2NhbFN0b3JhZ2U7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gTGlmZWN5Y2xlXHJcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGNvbmZpZzogU2VydmljZUNvbmZpZyxcclxuICAgICAgICAgICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyA/PyBuZXcgU2VydmljZUNvbmZpZygpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmRlZmVyVG9rZW5WYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRm9yRXhpc3RpbmdUb2tlbigpO1xyXG4gICAgICAgICAgICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBVdGlsaXRpZXNcclxuICAvL0F1dGhlbnRpY2F0ZSB0aGUgdXNlciBhbmQgc3RvcmUgdGhlIHRva2VuIGluIExvY2FsIFN0b3JhZ2VcclxuICBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBhZG1pbkdyb3VwPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBBdXRoZW50aWNhdGlvblJlcXVlc3QgPSB7XHJcbiAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcclxuICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkLFxyXG4gICAgICBhZG1pbkdyb3VwOiBhZG1pbkdyb3VwXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZ0NoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0aW5nKTtcclxuXHJcbiAgICAvLyBTZW5kaW5nIGEgJ3JhdycgUE9TVCByZXF1ZXN0IHNvIHRoYXQgd2UgY2FuIHRlbGwgSHR0cENsaWVudCB0aGF0IHdlIGFyZSBleHBlY3RpbmcgdGV4dCBpbnN0ZWFkIG9mIEpzb25cclxuICAgIC8vIE90aGVyd2lzZSwgaXQgd291bGQgdGhyb3cgYW4gZXJyb3IgdHJ5aW5nIHRvIGRlY29kZSBKc29uIGZyb20gdGhlIHJlc3BvbnNlXHJcbiAgICB0aGlzLmh0dHAucmVxdWVzdCgnUE9TVCcsIGAke3RoaXMuY29uZmlnLmFwaVVybH0ke3RoaXMuY29uZmlnLmF1dGhlbnRpY2F0ZUVuZHBvaW50fWAsIHsgYm9keTogcmVxdWVzdCwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHRva2VuKSA9PiB7XHJcbiAgICAgICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVVzZXIodG9rZW4pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW5nQ2hhbmdlZC5lbWl0KHRoaXMuYXV0aGVudGljYXRpbmcpO1xyXG4gICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbkVycm9yLmVtaXQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuIFxyXG4gIC8vTG9nb3V0IHRoZSB1c2VyIGFuZCBkZWxldGUgdGhlIHRva2VuIGZyb20gTG9jYWwgU3RvcmFnZVxyXG4gIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNvbmZpZy50b2tlbk5hbWUpKSB7XHJcbiAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuY29uZmlnLnRva2VuTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlciA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuYXV0aGVudGljYXRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcbiBcclxuICB2YWxpZGF0ZVVzZXIodG9rZW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgand0SGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgIGNvbnN0IGRlY29kZWQgPSBqd3RIZWxwZXIuZGVjb2RlVG9rZW4odG9rZW4pIGFzIEF1dGhlbnRpY2F0aW9uVG9rZW47XHJcblxyXG4gICAgaWYgKGp3dEhlbHBlci5pc1Rva2VuRXhwaXJlZCh0b2tlbikpIHtcclxuICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXIgPSB7XHJcbiAgICAgIGFkbWluOiBkZWNvZGVkLnJvbGUgPT09ICdBZG1pbicsXHJcbiAgICAgIGRpc3BsYXlOYW1lOiBkZWNvZGVkLmRpc3BsYXlOYW1lLFxyXG4gICAgICBhY2NvdW50TmFtZTogZGVjb2RlZC53aW5hY2NvdW50bmFtZSxcclxuICAgICAgZGlzdGluZ3Vpc2hlZE5hbWU6IGRlY29kZWQuZGlzdGluZ3Vpc2hlZE5hbWUsXHJcbiAgICAgIGVtcGxveWVlTnVtYmVyOiBkZWNvZGVkLmVtcGxveWVlTnVtYmVyLFxyXG4gICAgICBtZW1iZXJPZjogZGVjb2RlZC5tZW1iZXJPZlxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmNvbmZpZy50b2tlbk5hbWUsIHRva2VuKTtcclxuICAgIFxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRlZENoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0ZWQpO1xyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpbmdDaGFuZ2VkLmVtaXQodGhpcy5hdXRoZW50aWNhdGluZyk7XHJcbiAgfVxyXG5cclxuICBjaGVja0ZvckV4aXN0aW5nVG9rZW4oKTogdm9pZCB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMuY29uZmlnLnRva2VuTmFtZSk7XHJcbiAgICBpZiAodG9rZW4pIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZVVzZXIodG9rZW4pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufSJdfQ==
@@ -32,6 +32,9 @@ export class BaseComponent {
32
32
  this.data.choices :
33
33
  null;
34
34
  }
35
+ ngOnInit() {
36
+ this.userInput = this.data.value;
37
+ }
35
38
  close() {
36
39
  let data;
37
40
  switch (this.dialogType) {
@@ -86,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
86
89
  }], closed: [{
87
90
  type: Output
88
91
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9kaWFsb2cvc3JjL2NvbXBvbmVudHMvYmFzZS9iYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2RpYWxvZy9zcmMvY29tcG9uZW50cy9iYXNlL2Jhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUc5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQU9yRCxNQUFNLE9BQU8sYUFBYTtJQUwxQjtRQU1FLDhFQUE4RTtRQUM5RSxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ2YsZUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFFL0IsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFM0MsMkJBQXNCLEdBQUcsc0JBQXNCLENBQUM7S0FzRWpEO0lBaEVDLElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDO0lBQ1QsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDO0lBQ1QsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLElBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDO0lBQ1QsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLElBQVMsQ0FBQztRQUVkLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNyQixLQUFLLFVBQVUsQ0FBQyxPQUFPO2dCQUNuQixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDOUI7d0JBQ0ksUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksS0FBSztxQkFDeEMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQztnQkFDVCxNQUFNO1lBQ1YsS0FBSyxVQUFVLENBQUMsS0FBSztnQkFDakIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzlCO3dCQUNJLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUzt3QkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksS0FBSztxQkFDeEMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ25CLE1BQU07WUFDVixLQUFLLFVBQVUsQ0FBQyxZQUFZO2dCQUN4QixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDOUI7d0JBQ0ksUUFBUSxFQUFFLElBQUk7d0JBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksS0FBSztxQkFDeEMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQztnQkFDVCxNQUFNO1NBQ2I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBUyxDQUFDO1FBRWQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxZQUFZLEVBQUU7WUFDN0MsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzlCO29CQUNJLFFBQVEsRUFBRSxLQUFLO29CQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUs7aUJBQ3hDLENBQUMsQ0FBQztnQkFDSCxLQUFLLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OzBHQTVFVSxhQUFhOzhGQUFiLGFBQWEseUlDWjFCLDY5REF5Q3FCOzJGRDdCUixhQUFhO2tCQUx6QixTQUFTOytCQUNFLGdCQUFnQjs4QkFPakIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ01vZGUgfSBmcm9tICcuLi8uLi9tb2RlbC9jb25maXJtYXRpb24tZGlhbG9nLW1vZGUnO1xyXG5pbXBvcnQgeyBEaWFsb2dCYXNlRGF0YSB9IGZyb20gJy4uLy4uL21vZGVsL2RpYWxvZy1iYXNlLWRhdGEnO1xyXG5pbXBvcnQgeyBEaWFsb2dDaG9pY2VEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGlhbG9nLWNob2ljZS1kYXRhJztcclxuaW1wb3J0IHsgRGlhbG9nVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2RpYWxvZy10eXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3AtZGlhbG9nLWJhc2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iYXNlLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbXBvbmVudCB7XHJcbiAgLy8gVGhpcyBpcyBzbyB0aGF0IERpYWxvZ1R5cGUgY2FuIGJlIHB1Ymxpc2ggYWNjZXNzaWJsZSBmcm9tIHRoZSBIVE1MIHRlbXBsYXRlXHJcbiAgRGlhbG9nVHlwZSA9IERpYWxvZ1R5cGU7XHJcbiAgQElucHV0KCkgZGlhbG9nVHlwZSA9IERpYWxvZ1R5cGUuTWVzc2FnZTtcclxuICBASW5wdXQoKSBkYXRhITogRGlhbG9nQmFzZURhdGE7XHJcbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBDb25maXJtYXRpb25EaWFsb2dNb2RlID0gQ29uZmlybWF0aW9uRGlhbG9nTW9kZTtcclxuXHJcbiAgLy8gRm9ybSB2YWx1ZXNcclxuICB1c2VySW5wdXQhOiBzdHJpbmc7XHJcbiAgY2hlY2tib3hWYWx1ZSE6IGJvb2xlYW47XHJcblxyXG4gIGdldCBjdXN0b21UcnVlVGV4dCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEuY3VzdG9tVHJ1ZUZhbHNlVGV4dCA/XHJcbiAgICAgIHRoaXMuZGF0YS5jdXN0b21UcnVlRmFsc2VUZXh0WzBdIDpcclxuICAgICAgbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCBjdXN0b21GYWxzZVRleHQoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhLmN1c3RvbVRydWVGYWxzZVRleHQgP1xyXG4gICAgICB0aGlzLmRhdGEuY3VzdG9tVHJ1ZUZhbHNlVGV4dFsxXSA6XHJcbiAgICAgIG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXQgY2hvaWNlcygpOiBzdHJpbmdbXSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nVHlwZSA9PT0gRGlhbG9nVHlwZS5DaG9pY2UgP1xyXG4gICAgICAodGhpcy5kYXRhIGFzIERpYWxvZ0Nob2ljZURhdGEpLmNob2ljZXMgOlxyXG4gICAgICBudWxsO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICBsZXQgZGF0YTogYW55O1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5kaWFsb2dUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBEaWFsb2dUeXBlLk1lc3NhZ2U6XHJcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmRhdGEuY2hlY2tib3hNZXNzYWdlID9cclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGVja2JveDogdGhpcy5jaGVja2JveFZhbHVlIHx8IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9IDpcclxuICAgICAgICAgICAgICAgIG51bGw7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGlhbG9nVHlwZS5JbnB1dDpcclxuICAgICAgICAgICAgZGF0YSA9IHRoaXMuZGF0YS5jaGVja2JveE1lc3NhZ2UgP1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLnVzZXJJbnB1dCxcclxuICAgICAgICAgICAgICAgICAgICBjaGVja2JveDogdGhpcy5jaGVja2JveFZhbHVlIHx8IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9IDpcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlcklucHV0O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERpYWxvZ1R5cGUuQ29uZmlybWF0aW9uOlxyXG4gICAgICAgICAgICBkYXRhID0gdGhpcy5kYXRhLmNoZWNrYm94TWVzc2FnZSA/XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tib3g6IHRoaXMuY2hlY2tib3hWYWx1ZSB8fCBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSA6XHJcbiAgICAgICAgICAgICAgICB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsb3NlZC5lbWl0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCk6IHZvaWQge1xyXG4gICAgbGV0IGRhdGE6IGFueTtcclxuXHJcbiAgICBpZiAodGhpcy5kaWFsb2dUeXBlID09PSBEaWFsb2dUeXBlLkNvbmZpcm1hdGlvbikge1xyXG4gICAgICAgIGRhdGEgPSB0aGlzLmRhdGEuY2hlY2tib3hNZXNzYWdlID9cclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY2hlY2tib3g6IHRoaXMuY2hlY2tib3hWYWx1ZSB8fCBmYWxzZVxyXG4gICAgICAgICAgICB9IDpcclxuICAgICAgICAgICAgZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbG9zZWQuZW1pdChkYXRhKTtcclxuICB9XHJcbn1cclxuIiwiPGgyICpuZ0lmPVwiZGF0YT8udGl0bGVcIiBtYXQtZGlhbG9nLXRpdGxlIFtpbm5lckhUTUxdPVwiZGF0YS50aXRsZVwiPjwvaDI+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPGRpdiAqbmdJZj1cImRhdGE/Lm1lc3NhZ2VcIiBbaW5uZXJIVE1MXT1cImRhdGEubWVzc2FnZVwiPjwvZGl2PlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZGlhbG9nVHlwZSA9PT0gRGlhbG9nVHlwZS5JbnB1dFwiPlxuICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cImRhdGEucGxhY2Vob2xkZXIgPz8gJydcIiBbKG5nTW9kZWwpXT1cInVzZXJJbnB1dFwiPjwvdGV4dGFyZWE+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDxkaXYgaWQ9XCJjaGVja2JveFwiICpuZ0lmPVwiZGF0YT8uY2hlY2tib3hNZXNzYWdlXCI+XG4gICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJjaGVja2JveFZhbHVlXCI+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImRhdGEuY2hlY2tib3hNZXNzYWdlXCI+PC9zcGFuPlxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaWFsb2dUeXBlICE9PSBEaWFsb2dUeXBlLkNob2ljZVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCIgW2Rpc2FibGVkXT1cImRpYWxvZ1R5cGUgPT09IERpYWxvZ1R5cGUuSW5wdXQgJiYgIXVzZXJJbnB1dFwiPlxuICAgICAgICAgICAgPHNwYW4gW25nU3dpdGNoXT1cImRhdGEubW9kZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJDb25maXJtYXRpb25EaWFsb2dNb2RlLlllc05vXCI+WWVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJDb25maXJtYXRpb25EaWFsb2dNb2RlLlRydWVGYWxzZVwiPlRydWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIkNvbmZpcm1hdGlvbkRpYWxvZ01vZGUuQ3VzdG9tXCI+e3sgY3VzdG9tVHJ1ZVRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD5PSzwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkaWFsb2dUeXBlICE9PSBEaWFsb2dUeXBlLk1lc3NhZ2VcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIj5cbiAgICAgICAgICAgIDxzcGFuIFtuZ1N3aXRjaF09XCJkYXRhLm1vZGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiQ29uZmlybWF0aW9uRGlhbG9nTW9kZS5ZZXNOb1wiPk5vPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJDb25maXJtYXRpb25EaWFsb2dNb2RlLlRydWVGYWxzZVwiPkZhbHNlPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJDb25maXJtYXRpb25EaWFsb2dNb2RlLkN1c3RvbVwiPnt7IGN1c3RvbUZhbHNlVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0PkNhbmNlbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlhbG9nVHlwZSA9PT0gRGlhbG9nVHlwZS5DaG9pY2VcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAqbmdGb3I9XCJsZXQgY2hvaWNlIG9mIGNob2ljZXM7IGxldCBpID0gaW5kZXhcIiBbbWF0RGlhbG9nQ2xvc2VdPVwiaVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgY2hvaWNlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9kaWFsb2cvc3JjL2NvbXBvbmVudHMvYmFzZS9iYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2RpYWxvZy9zcmMvY29tcG9uZW50cy9iYXNlL2Jhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUc5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQU9yRCxNQUFNLE9BQU8sYUFBYTtJQUwxQjtRQU1FLDhFQUE4RTtRQUM5RSxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ2YsZUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFFL0IsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFM0MsMkJBQXNCLEdBQUcsc0JBQXNCLENBQUM7S0EwRWpEO0lBcEVDLElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDO0lBQ1QsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDO0lBQ1QsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLElBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDO0lBQ1QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFTLENBQUM7UUFFZCxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDckIsS0FBSyxVQUFVLENBQUMsT0FBTztnQkFDbkIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzlCO3dCQUNJLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUs7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUM7Z0JBQ1QsTUFBTTtZQUNWLEtBQUssVUFBVSxDQUFDLEtBQUs7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM5Qjt3QkFDSSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7d0JBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUs7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNuQixNQUFNO1lBQ1YsS0FBSyxVQUFVLENBQUMsWUFBWTtnQkFDeEIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzlCO3dCQUNJLFFBQVEsRUFBRSxJQUFJO3dCQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUs7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUM7Z0JBQ1QsTUFBTTtTQUNiO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQVMsQ0FBQztRQUVkLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsWUFBWSxFQUFFO1lBQzdDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM5QjtvQkFDSSxRQUFRLEVBQUUsS0FBSztvQkFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxLQUFLO2lCQUN4QyxDQUFDLENBQUM7Z0JBQ0gsS0FBSyxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDOzswR0FoRlUsYUFBYTs4RkFBYixhQUFhLHlJQ1oxQiw2OURBeUNxQjsyRkQ3QlIsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxnQkFBZ0I7OEJBT2pCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ01vZGUgfSBmcm9tICcuLi8uLi9tb2RlbC9jb25maXJtYXRpb24tZGlhbG9nLW1vZGUnO1xyXG5pbXBvcnQgeyBEaWFsb2dCYXNlRGF0YSB9IGZyb20gJy4uLy4uL21vZGVsL2RpYWxvZy1iYXNlLWRhdGEnO1xyXG5pbXBvcnQgeyBEaWFsb2dDaG9pY2VEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGlhbG9nLWNob2ljZS1kYXRhJztcclxuaW1wb3J0IHsgRGlhbG9nVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2RpYWxvZy10eXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3AtZGlhbG9nLWJhc2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iYXNlLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8gVGhpcyBpcyBzbyB0aGF0IERpYWxvZ1R5cGUgY2FuIGJlIHB1Ymxpc2ggYWNjZXNzaWJsZSBmcm9tIHRoZSBIVE1MIHRlbXBsYXRlXHJcbiAgRGlhbG9nVHlwZSA9IERpYWxvZ1R5cGU7XHJcbiAgQElucHV0KCkgZGlhbG9nVHlwZSA9IERpYWxvZ1R5cGUuTWVzc2FnZTtcclxuICBASW5wdXQoKSBkYXRhITogRGlhbG9nQmFzZURhdGE7XHJcbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBDb25maXJtYXRpb25EaWFsb2dNb2RlID0gQ29uZmlybWF0aW9uRGlhbG9nTW9kZTtcclxuXHJcbiAgLy8gRm9ybSB2YWx1ZXNcclxuICB1c2VySW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBjaGVja2JveFZhbHVlITogYm9vbGVhbjtcclxuXHJcbiAgZ2V0IGN1c3RvbVRydWVUZXh0KCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YS5jdXN0b21UcnVlRmFsc2VUZXh0ID9cclxuICAgICAgdGhpcy5kYXRhLmN1c3RvbVRydWVGYWxzZVRleHRbMF0gOlxyXG4gICAgICBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1c3RvbUZhbHNlVGV4dCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEuY3VzdG9tVHJ1ZUZhbHNlVGV4dCA/XHJcbiAgICAgIHRoaXMuZGF0YS5jdXN0b21UcnVlRmFsc2VUZXh0WzFdIDpcclxuICAgICAgbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCBjaG9pY2VzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dUeXBlID09PSBEaWFsb2dUeXBlLkNob2ljZSA/XHJcbiAgICAgICh0aGlzLmRhdGEgYXMgRGlhbG9nQ2hvaWNlRGF0YSkuY2hvaWNlcyA6XHJcbiAgICAgIG51bGw7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudXNlcklucHV0ID0gdGhpcy5kYXRhLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICBsZXQgZGF0YTogYW55O1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5kaWFsb2dUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBEaWFsb2dUeXBlLk1lc3NhZ2U6XHJcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmRhdGEuY2hlY2tib3hNZXNzYWdlID9cclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGVja2JveDogdGhpcy5jaGVja2JveFZhbHVlIHx8IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9IDpcclxuICAgICAgICAgICAgICAgIG51bGw7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGlhbG9nVHlwZS5JbnB1dDpcclxuICAgICAgICAgICAgZGF0YSA9IHRoaXMuZGF0YS5jaGVja2JveE1lc3NhZ2UgP1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLnVzZXJJbnB1dCxcclxuICAgICAgICAgICAgICAgICAgICBjaGVja2JveDogdGhpcy5jaGVja2JveFZhbHVlIHx8IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9IDpcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlcklucHV0O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERpYWxvZ1R5cGUuQ29uZmlybWF0aW9uOlxyXG4gICAgICAgICAgICBkYXRhID0gdGhpcy5kYXRhLmNoZWNrYm94TWVzc2FnZSA/XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tib3g6IHRoaXMuY2hlY2tib3hWYWx1ZSB8fCBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSA6XHJcbiAgICAgICAgICAgICAgICB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsb3NlZC5lbWl0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCk6IHZvaWQge1xyXG4gICAgbGV0IGRhdGE6IGFueTtcclxuXHJcbiAgICBpZiAodGhpcy5kaWFsb2dUeXBlID09PSBEaWFsb2dUeXBlLkNvbmZpcm1hdGlvbikge1xyXG4gICAgICAgIGRhdGEgPSB0aGlzLmRhdGEuY2hlY2tib3hNZXNzYWdlID9cclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY2hlY2tib3g6IHRoaXMuY2hlY2tib3hWYWx1ZSB8fCBmYWxzZVxyXG4gICAgICAgICAgICB9IDpcclxuICAgICAgICAgICAgZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbG9zZWQuZW1pdChkYXRhKTtcclxuICB9XHJcbn1cclxuIiwiPGgyICpuZ0lmPVwiZGF0YT8udGl0bGVcIiBtYXQtZGlhbG9nLXRpdGxlIFtpbm5lckhUTUxdPVwiZGF0YS50aXRsZVwiPjwvaDI+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPGRpdiAqbmdJZj1cImRhdGE/Lm1lc3NhZ2VcIiBbaW5uZXJIVE1MXT1cImRhdGEubWVzc2FnZVwiPjwvZGl2PlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZGlhbG9nVHlwZSA9PT0gRGlhbG9nVHlwZS5JbnB1dFwiPlxuICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cImRhdGEucGxhY2Vob2xkZXIgPz8gJydcIiBbKG5nTW9kZWwpXT1cInVzZXJJbnB1dFwiPjwvdGV4dGFyZWE+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDxkaXYgaWQ9XCJjaGVja2JveFwiICpuZ0lmPVwiZGF0YT8uY2hlY2tib3hNZXNzYWdlXCI+XG4gICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJjaGVja2JveFZhbHVlXCI+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImRhdGEuY2hlY2tib3hNZXNzYWdlXCI+PC9zcGFuPlxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaWFsb2dUeXBlICE9PSBEaWFsb2dUeXBlLkNob2ljZVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCIgW2Rpc2FibGVkXT1cImRpYWxvZ1R5cGUgPT09IERpYWxvZ1R5cGUuSW5wdXQgJiYgIXVzZXJJbnB1dFwiPlxuICAgICAgICAgICAgPHNwYW4gW25nU3dpdGNoXT1cImRhdGEubW9kZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJDb25maXJtYXRpb25EaWFsb2dNb2RlLlllc05vXCI+WWVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJDb25maXJtYXRpb25EaWFsb2dNb2RlLlRydWVGYWxzZVwiPlRydWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIkNvbmZpcm1hdGlvbkRpYWxvZ01vZGUuQ3VzdG9tXCI+e3sgY3VzdG9tVHJ1ZVRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD5PSzwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkaWFsb2dUeXBlICE9PSBEaWFsb2dUeXBlLk1lc3NhZ2VcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIj5cbiAgICAgICAgICAgIDxzcGFuIFtuZ1N3aXRjaF09XCJkYXRhLm1vZGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiQ29uZmlybWF0aW9uRGlhbG9nTW9kZS5ZZXNOb1wiPk5vPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJDb25maXJtYXRpb25EaWFsb2dNb2RlLlRydWVGYWxzZVwiPkZhbHNlPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJDb25maXJtYXRpb25EaWFsb2dNb2RlLkN1c3RvbVwiPnt7IGN1c3RvbUZhbHNlVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0PkNhbmNlbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlhbG9nVHlwZSA9PT0gRGlhbG9nVHlwZS5DaG9pY2VcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAqbmdGb3I9XCJsZXQgY2hvaWNlIG9mIGNob2ljZXM7IGxldCBpID0gaW5kZXhcIiBbbWF0RGlhbG9nQ2xvc2VdPVwiaVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgY2hvaWNlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPiJdfQ==
@@ -7,8 +7,8 @@ import { CommonModule } from '@angular/common';
7
7
  //import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';
8
8
  class ServiceConfig extends ServiceConfig$1 {
9
9
  // See the comment in the library's main service-config.ts file for an explanation
10
- constructor(useSsl_or_customApiUrl = false, storageMode = 'local', tokenName = 'user', authenticateEndpoint = '/authenticate') {
11
- super(useSsl_or_customApiUrl, storageMode, tokenName, authenticateEndpoint);
10
+ constructor(useSsl_or_customApiUrl = false, tokenName = 'user', authenticateEndpoint = '/authenticate') {
11
+ super(useSsl_or_customApiUrl, tokenName, authenticateEndpoint);
12
12
  }
13
13
  }
14
14
 
@@ -29,6 +29,16 @@ class AuthenticationService {
29
29
  this.checkForExistingToken();
30
30
  }
31
31
  //#endregion
32
+ //#region Properties
33
+ get useSessionStorage() {
34
+ return !!localStorage.getItem('storeTokenInSession');
35
+ }
36
+ get storage() {
37
+ return this.useSessionStorage ?
38
+ sessionStorage :
39
+ localStorage;
40
+ }
41
+ //#endregion
32
42
  //#region Utilities
33
43
  //Authenticate the user and store the token in Local Storage
34
44
  login(username, password, adminGroup) {
@@ -58,8 +68,8 @@ class AuthenticationService {
58
68
  }
59
69
  //Logout the user and delete the token from Local Storage
60
70
  logout() {
61
- if (this.config.storage.getItem(this.config.tokenName)) {
62
- this.config.storage.removeItem(this.config.tokenName);
71
+ if (this.storage.getItem(this.config.tokenName)) {
72
+ this.storage.removeItem(this.config.tokenName);
63
73
  }
64
74
  this.authenticatedUser = undefined;
65
75
  this.authenticated = false;
@@ -74,14 +84,14 @@ class AuthenticationService {
74
84
  employeeNumber: token.employeeNumber,
75
85
  memberOf: token.memberOf.join(',')
76
86
  };
77
- this.config.storage.setItem(this.config.tokenName, JSON.stringify(token));
87
+ this.storage.setItem(this.config.tokenName, JSON.stringify(token));
78
88
  this.authenticated = true;
79
89
  this.authenticatedChanged.emit(this.authenticated);
80
90
  this.authenticating = false;
81
91
  this.authenticatingChanged.emit(this.authenticating);
82
92
  }
83
93
  checkForExistingToken() {
84
- const token = this.config.storage.getItem(this.config.tokenName);
94
+ const token = this.storage.getItem(this.config.tokenName);
85
95
  if (token) {
86
96
  this.validateUser(JSON.parse(token));
87
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cleavelandprice-ngx-lib-authentication-object.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/authentication/object/src/model/service-config.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/object/src/services/authentication.service.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/object/src/object.module.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/object/src/cleavelandprice-ngx-lib-authentication-object.ts"],"sourcesContent":["//import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';\r\nimport { ServiceConfig as BaseServiceConfig } from '@cleavelandprice/ngx-lib/authentication';\r\n\r\nexport class ServiceConfig extends BaseServiceConfig {\r\n \r\n // See the comment in the library's main service-config.ts file for an explanation\r\n constructor(useSsl_or_customApiUrl: boolean | string = false,\r\n storageMode: 'local' | 'session' = 'local',\r\n tokenName = 'user',\r\n authenticateEndpoint = '/authenticate'\r\n ) {\r\n super(useSsl_or_customApiUrl, storageMode, tokenName, authenticateEndpoint);\r\n }\r\n}","import { EventEmitter, Injectable, Optional, Output } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { User } from '@cleavelandprice/ngx-lib/active-directory';\r\n\r\nimport {\r\n AbstractAuthenticationService,\r\n AuthenticatedUser,\r\n AuthenticationRequest\r\n} from '@cleavelandprice/ngx-lib/authentication';\r\n\r\nimport { ServiceConfig } from '../model/service-config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService implements AbstractAuthenticationService {\r\n //#region Fields\r\n @Output() authenticatedChanged = new EventEmitter<boolean>();\r\n @Output() authenticatingChanged = new EventEmitter<boolean>();\r\n @Output() authenticationError = new EventEmitter();\r\n authenticating = false; // Flag set to true while the service is attempting to authenticate the user\r\n authenticated = false; // Flag set to true when the user is successfully authenticated\r\n authenticatedUser: AuthenticatedUser | undefined; // Object representing the authenticated user\r\n //#endregion\r\n\r\n //#region Lifecycle\r\n constructor(@Optional() private config: ServiceConfig,\r\n private http: HttpClient) {\r\n\r\n this.config = this.config ?? new ServiceConfig();\r\n \r\n this.checkForExistingToken();\r\n }\r\n //#endregion\r\n\r\n //#region Utilities\r\n //Authenticate the user and store the token in Local Storage\r\n login(username: string, password: string, adminGroup?: string): void {\r\n const request: AuthenticationRequest = {\r\n username: username,\r\n password: password,\r\n adminGroup: adminGroup\r\n };\r\n\r\n this.authenticating = true;\r\n this.authenticatingChanged.emit(this.authenticating);\r\n\r\n this.http.post(`${this.config.apiUrl}${this.config.authenticateEndpoint}`, request)\r\n .subscribe({\r\n next: (user) => {\r\n if (user) {\r\n this.validateUser(user as User);\r\n } else {\r\n this.logout();\r\n }\r\n },\r\n error: (err) => {\r\n this.authenticating = false;\r\n this.authenticatingChanged.emit(this.authenticating);\r\n this.authenticationError.emit(err);\r\n }\r\n });\r\n }\r\n \r\n //Logout the user and delete the token from Local Storage\r\n logout(): void {\r\n if (this.config.storage.getItem(this.config.tokenName)) {\r\n this.config.storage.removeItem(this.config.tokenName);\r\n }\r\n\r\n this.authenticatedUser = undefined;\r\n this.authenticated = false;\r\n this.authenticatedChanged.emit(false);\r\n }\r\n \r\n validateUser(token: User): void {\r\n this.authenticatedUser = {\r\n admin: false, // This type of authentication has no concept of Admin\r\n displayName: token.displayName,\r\n accountName: token.sAMAccountName,\r\n distinguishedName: token.distinguishedName,\r\n employeeNumber: token.employeeNumber,\r\n memberOf: token.memberOf.join(',')\r\n };\r\n\r\n this.config.storage.setItem(this.config.tokenName, JSON.stringify(token));\r\n \r\n this.authenticated = true;\r\n this.authenticatedChanged.emit(this.authenticated);\r\n\r\n this.authenticating = false;\r\n this.authenticatingChanged.emit(this.authenticating);\r\n }\r\n\r\n checkForExistingToken(): void {\r\n const token = this.config.storage.getItem(this.config.tokenName);\r\n if (token) {\r\n this.validateUser(JSON.parse(token) as User);\r\n }\r\n }\r\n //#endregion\r\n}\r\n ","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ServiceConfig } from './model/service-config';\r\n\r\nimport { AuthenticationService } from './services/authentication.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: []\r\n})\r\nexport class ObjectModule {\r\n static forRoot(config: ServiceConfig): ModuleWithProviders<ObjectModule> {\r\n return {\r\n ngModule: ObjectModule,\r\n providers: [\r\n AuthenticationService,\r\n { provide: ServiceConfig, useValue: config }\r\n ]\r\n };\r\n }\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: ObjectModule) {\r\n if (parentModule) {\r\n throw new Error(\r\n 'ObjectModule is already loaded. Import it in the AppModule only');\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["BaseServiceConfig","i1.ServiceConfig"],"mappings":"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"}
1
+ {"version":3,"file":"cleavelandprice-ngx-lib-authentication-object.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/authentication/object/src/model/service-config.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/object/src/services/authentication.service.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/object/src/object.module.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/object/src/cleavelandprice-ngx-lib-authentication-object.ts"],"sourcesContent":["//import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';\r\nimport { ServiceConfig as BaseServiceConfig } from '@cleavelandprice/ngx-lib/authentication';\r\n\r\nexport class ServiceConfig extends BaseServiceConfig {\r\n \r\n // See the comment in the library's main service-config.ts file for an explanation\r\n constructor(useSsl_or_customApiUrl: boolean | string = false,\r\n tokenName = 'user',\r\n authenticateEndpoint = '/authenticate'\r\n ) {\r\n super(useSsl_or_customApiUrl, tokenName, authenticateEndpoint);\r\n }\r\n}","import { EventEmitter, Injectable, Optional, Output } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { User } from '@cleavelandprice/ngx-lib/active-directory';\r\n\r\nimport {\r\n AbstractAuthenticationService,\r\n AuthenticatedUser,\r\n AuthenticationRequest\r\n} from '@cleavelandprice/ngx-lib/authentication';\r\n\r\nimport { ServiceConfig } from '../model/service-config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService implements AbstractAuthenticationService {\r\n //#region Fields\r\n @Output() authenticatedChanged = new EventEmitter<boolean>();\r\n @Output() authenticatingChanged = new EventEmitter<boolean>();\r\n @Output() authenticationError = new EventEmitter();\r\n authenticating = false; // Flag set to true while the service is attempting to authenticate the user\r\n authenticated = false; // Flag set to true when the user is successfully authenticated\r\n authenticatedUser: AuthenticatedUser | undefined; // Object representing the authenticated user\r\n //#endregion\r\n\r\n //#region Properties\r\n get useSessionStorage(): boolean {\r\n return !!localStorage.getItem('storeTokenInSession');\r\n }\r\n\r\n get storage(): Storage {\r\n return this.useSessionStorage ?\r\n sessionStorage:\r\n localStorage;\r\n }\r\n //#endregion\r\n\r\n //#region Lifecycle\r\n constructor(@Optional() private config: ServiceConfig,\r\n private http: HttpClient) {\r\n\r\n this.config = this.config ?? new ServiceConfig();\r\n \r\n this.checkForExistingToken();\r\n }\r\n //#endregion\r\n\r\n //#region Utilities\r\n //Authenticate the user and store the token in Local Storage\r\n login(username: string, password: string, adminGroup?: string): void {\r\n const request: AuthenticationRequest = {\r\n username: username,\r\n password: password,\r\n adminGroup: adminGroup\r\n };\r\n\r\n this.authenticating = true;\r\n this.authenticatingChanged.emit(this.authenticating);\r\n\r\n this.http.post(`${this.config.apiUrl}${this.config.authenticateEndpoint}`, request)\r\n .subscribe({\r\n next: (user) => {\r\n if (user) {\r\n this.validateUser(user as User);\r\n } else {\r\n this.logout();\r\n }\r\n },\r\n error: (err) => {\r\n this.authenticating = false;\r\n this.authenticatingChanged.emit(this.authenticating);\r\n this.authenticationError.emit(err);\r\n }\r\n });\r\n }\r\n \r\n //Logout the user and delete the token from Local Storage\r\n logout(): void {\r\n if (this.storage.getItem(this.config.tokenName)) {\r\n this.storage.removeItem(this.config.tokenName);\r\n }\r\n\r\n this.authenticatedUser = undefined;\r\n this.authenticated = false;\r\n this.authenticatedChanged.emit(false);\r\n }\r\n \r\n validateUser(token: User): void {\r\n this.authenticatedUser = {\r\n admin: false, // This type of authentication has no concept of Admin\r\n displayName: token.displayName,\r\n accountName: token.sAMAccountName,\r\n distinguishedName: token.distinguishedName,\r\n employeeNumber: token.employeeNumber,\r\n memberOf: token.memberOf.join(',')\r\n };\r\n\r\n this.storage.setItem(this.config.tokenName, JSON.stringify(token));\r\n \r\n this.authenticated = true;\r\n this.authenticatedChanged.emit(this.authenticated);\r\n\r\n this.authenticating = false;\r\n this.authenticatingChanged.emit(this.authenticating);\r\n }\r\n\r\n checkForExistingToken(): void {\r\n const token = this.storage.getItem(this.config.tokenName);\r\n if (token) {\r\n this.validateUser(JSON.parse(token) as User);\r\n }\r\n }\r\n //#endregion\r\n}\r\n ","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ServiceConfig } from './model/service-config';\r\n\r\nimport { AuthenticationService } from './services/authentication.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: []\r\n})\r\nexport class ObjectModule {\r\n static forRoot(config: ServiceConfig): ModuleWithProviders<ObjectModule> {\r\n return {\r\n ngModule: ObjectModule,\r\n providers: [\r\n AuthenticationService,\r\n { provide: ServiceConfig, useValue: config }\r\n ]\r\n };\r\n }\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: ObjectModule) {\r\n if (parentModule) {\r\n throw new Error(\r\n 'ObjectModule is already loaded. Import it in the AppModule only');\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["BaseServiceConfig","i1.ServiceConfig"],"mappings":"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"}
@@ -6,7 +6,7 @@ import * as i2 from '@angular/common/http';
6
6
  import * as i3 from '@cleavelandprice/ngx-lib/sharepoint';
7
7
  import { ConfirmationComponent } from '@cleavelandprice/ngx-lib/dialog';
8
8
  import * as i4 from '@angular/forms';
9
- import { UntypedFormGroup, UntypedFormControl, Validators, ReactiveFormsModule } from '@angular/forms';
9
+ import { FormGroup, FormControl, Validators, ReactiveFormsModule } from '@angular/forms';
10
10
  import * as i1 from '@angular/material/dialog';
11
11
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
12
12
  import * as i3$1 from '@angular/common';
@@ -21,12 +21,15 @@ import * as i8 from '@angular/material/input';
21
21
  import { MatInputModule } from '@angular/material/input';
22
22
  import * as i9 from '@angular/material/progress-spinner';
23
23
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
24
+ import * as i10 from '@angular/material/slide-toggle';
25
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
24
26
 
25
27
  //import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';
26
28
  class ServiceConfig extends ServiceConfig$1 {
27
29
  // See the comment in the library's main service-config.ts file for an explanation
28
- constructor(useSsl_or_customApiUrl = false, storageMode = 'local', tokenName = 'token', authenticateEndpoint = '/authenticate/token') {
29
- super(useSsl_or_customApiUrl, storageMode, tokenName, authenticateEndpoint);
30
+ constructor(useSsl_or_customApiUrl = false, showRememberMeOption = true, tokenName = 'token', authenticateEndpoint = '/authenticate/token') {
31
+ super(useSsl_or_customApiUrl, tokenName, authenticateEndpoint);
32
+ this.showRememberMeOption = showRememberMeOption;
30
33
  }
31
34
  }
32
35
 
@@ -68,7 +71,7 @@ class AuthenticationService extends AuthenticationService$1 {
68
71
  employeeNumber: decoded.employeeNumber,
69
72
  memberOf: decoded.memberOf
70
73
  };
71
- this.config.storage.setItem(this.config.tokenName, token);
74
+ this.storage.setItem(this.config.tokenName, token);
72
75
  this.getPhoto();
73
76
  this.authenticated = true;
74
77
  this.authenticatedChanged.emit(this.authenticated);
@@ -108,10 +111,10 @@ class LoginFormComponent {
108
111
  var _a;
109
112
  this.dialogRef = dialogRef;
110
113
  this.authenticationService = authenticationService;
111
- this.form = new UntypedFormGroup({
112
- username: new UntypedFormControl(null, [Validators.required]),
113
- password: new UntypedFormControl(null, [Validators.required]),
114
- adminGroup: new UntypedFormControl()
114
+ this.form = new FormGroup({
115
+ username: new FormControl(null, [Validators.required]),
116
+ password: new FormControl(null, [Validators.required]),
117
+ adminGroup: new FormControl()
115
118
  });
116
119
  (_a = this.form.get('adminGroup')) === null || _a === void 0 ? void 0 : _a.setValue(data.adminGroup);
117
120
  }
@@ -139,12 +142,23 @@ class LoginFormComponent {
139
142
  console.log('Authentication error', err);
140
143
  this.errorMessage = `${err.name}: ${err.statusText}`;
141
144
  }
145
+ changeTokenStorageMode(checked) {
146
+ const keyName = 'storeTokenInSession';
147
+ if (checked) {
148
+ if (localStorage.getItem(keyName)) {
149
+ localStorage.removeItem(keyName);
150
+ }
151
+ }
152
+ else {
153
+ localStorage.setItem(keyName, 'true');
154
+ }
155
+ }
142
156
  }
143
157
  LoginFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoginFormComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
144
- LoginFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoginFormComponent, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>\r\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\r\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\r\n</h2>\r\n\r\n<mat-dialog-content>\r\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n\r\n <form *ngIf=\"!authenticationService.authenticating\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <input matInput formControlName=\"password\" type=\"password\" placeholder=\"Password\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating && errorMessage\" id=\"error\">\r\n {{ errorMessage }}\r\n </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\r\n <button mat-raised-button color=\"primary\" (click)=\"authenticate()\"\r\n [disabled]=\"form.invalid\">\r\n <mat-icon fontIcon=\"done\"></mat-icon>\r\n <span>OK</span>\r\n </button>\r\n\r\n <button mat-raised-button (click)=\"dialogRef.close()\">\r\n <mat-icon fontIcon=\"close\"></mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n</mat-dialog-actions>", styles: ["#spinner{width:100%;height:100%;display:flex;justify-content:center;align-items:center}form{display:grid;gap:1rem}mat-dialog-actions{display:grid;justify-content:center;grid-template-columns:auto auto;gap:1rem}#error{color:red}\n", ".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}\n"], dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
158
+ LoginFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoginFormComponent, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>\r\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\r\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\r\n</h2>\r\n\r\n<mat-dialog-content>\r\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n\r\n <form *ngIf=\"!authenticationService.authenticating\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <input matInput formControlName=\"password\" type=\"password\" placeholder=\"Password\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle *ngIf=\"authenticationService.config.showRememberMeOption\" [checked]=\"!authenticationService.useSessionStorage\" (change)=\"changeTokenStorageMode($event.checked)\">\r\n Remember me next time\r\n </mat-slide-toggle>\r\n </form>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating && errorMessage\" id=\"error\">\r\n {{ errorMessage }}\r\n </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\r\n <button mat-raised-button color=\"primary\" (click)=\"authenticate()\"\r\n [disabled]=\"form.invalid\">\r\n <mat-icon fontIcon=\"done\"></mat-icon>\r\n <span>OK</span>\r\n </button>\r\n\r\n <button mat-raised-button (click)=\"dialogRef.close()\">\r\n <mat-icon fontIcon=\"close\"></mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n</mat-dialog-actions>", styles: ["#spinner{width:100%;height:100%;display:flex;justify-content:center;align-items:center}form{display:grid;gap:1rem}mat-dialog-actions{display:grid;justify-content:center;grid-template-columns:auto auto;gap:1rem}#error{color:red}\n", ".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}\n"], dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }] });
145
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoginFormComponent, decorators: [{
146
160
  type: Component,
147
- args: [{ template: "<h2 mat-dialog-title>\r\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\r\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\r\n</h2>\r\n\r\n<mat-dialog-content>\r\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n\r\n <form *ngIf=\"!authenticationService.authenticating\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <input matInput formControlName=\"password\" type=\"password\" placeholder=\"Password\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating && errorMessage\" id=\"error\">\r\n {{ errorMessage }}\r\n </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\r\n <button mat-raised-button color=\"primary\" (click)=\"authenticate()\"\r\n [disabled]=\"form.invalid\">\r\n <mat-icon fontIcon=\"done\"></mat-icon>\r\n <span>OK</span>\r\n </button>\r\n\r\n <button mat-raised-button (click)=\"dialogRef.close()\">\r\n <mat-icon fontIcon=\"close\"></mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n</mat-dialog-actions>", styles: ["#spinner{width:100%;height:100%;display:flex;justify-content:center;align-items:center}form{display:grid;gap:1rem}mat-dialog-actions{display:grid;justify-content:center;grid-template-columns:auto auto;gap:1rem}#error{color:red}\n", ".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}\n"] }]
161
+ args: [{ template: "<h2 mat-dialog-title>\r\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\r\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\r\n</h2>\r\n\r\n<mat-dialog-content>\r\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n\r\n <form *ngIf=\"!authenticationService.authenticating\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <input matInput formControlName=\"password\" type=\"password\" placeholder=\"Password\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle *ngIf=\"authenticationService.config.showRememberMeOption\" [checked]=\"!authenticationService.useSessionStorage\" (change)=\"changeTokenStorageMode($event.checked)\">\r\n Remember me next time\r\n </mat-slide-toggle>\r\n </form>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating && errorMessage\" id=\"error\">\r\n {{ errorMessage }}\r\n </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\r\n <button mat-raised-button color=\"primary\" (click)=\"authenticate()\"\r\n [disabled]=\"form.invalid\">\r\n <mat-icon fontIcon=\"done\"></mat-icon>\r\n <span>OK</span>\r\n </button>\r\n\r\n <button mat-raised-button (click)=\"dialogRef.close()\">\r\n <mat-icon fontIcon=\"close\"></mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n</mat-dialog-actions>", styles: ["#spinner{width:100%;height:100%;display:flex;justify-content:center;align-items:center}form{display:grid;gap:1rem}mat-dialog-actions{display:grid;justify-content:center;grid-template-columns:auto auto;gap:1rem}#error{color:red}\n", ".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}\n"] }]
148
162
  }], ctorParameters: function () {
149
163
  return [{ type: undefined, decorators: [{
150
164
  type: Inject,
@@ -208,7 +222,8 @@ GuiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.
208
222
  MatFormFieldModule,
209
223
  MatIconModule,
210
224
  MatInputModule,
211
- MatProgressSpinnerModule], exports: [LoginComponent,
225
+ MatProgressSpinnerModule,
226
+ MatSlideToggleModule], exports: [LoginComponent,
212
227
  LoginFormComponent] });
213
228
  GuiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: GuiModule, imports: [CommonModule,
214
229
  ReactiveFormsModule,
@@ -217,7 +232,8 @@ GuiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.
217
232
  MatFormFieldModule,
218
233
  MatIconModule,
219
234
  MatInputModule,
220
- MatProgressSpinnerModule] });
235
+ MatProgressSpinnerModule,
236
+ MatSlideToggleModule] });
221
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: GuiModule, decorators: [{
222
238
  type: NgModule,
223
239
  args: [{
@@ -233,7 +249,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
233
249
  MatFormFieldModule,
234
250
  MatIconModule,
235
251
  MatInputModule,
236
- MatProgressSpinnerModule
252
+ MatProgressSpinnerModule,
253
+ MatSlideToggleModule
237
254
  ],
238
255
  exports: [
239
256
  LoginComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"cleavelandprice-ngx-lib-authentication-token-gui.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/model/service-config.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/services/authentication.service.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/components/login-form/login-form.component.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/components/login-form/login-form.component.html","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/components/login/login.component.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/components/login/login.component.html","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/token-gui.module.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/cleavelandprice-ngx-lib-authentication-token-gui.ts"],"sourcesContent":["//import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';\r\nimport { ServiceConfig as BaseServiceConfig } from '@cleavelandprice/ngx-lib/authentication/token';\r\n\r\nexport class ServiceConfig extends BaseServiceConfig {\r\n // See the comment in the library's main service-config.ts file for an explanation\r\n constructor(useSsl_or_customApiUrl: boolean | string = false,\r\n storageMode: 'local' | 'session' = 'local',\r\n tokenName = 'token',\r\n authenticateEndpoint = '/authenticate/token'\r\n ) {\r\n super(useSsl_or_customApiUrl, storageMode, tokenName, authenticateEndpoint);\r\n }\r\n}","import { Injectable, Optional } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\n\r\nimport { SharePointService } from '@cleavelandprice/ngx-lib/sharepoint';\r\n\r\nimport {\r\n AuthenticationService as TokenAuthenticationService,\r\n AuthenticationToken\r\n} from '@cleavelandprice/ngx-lib/authentication/token';\r\n\r\nimport { ServiceConfig } from '../model/service-config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService extends TokenAuthenticationService {\r\n //#region Lifecycle\r\n constructor(@Optional() override config: ServiceConfig,\r\n override http: HttpClient,\r\n private sharePointService: SharePointService) {\r\n\r\n config = config ?? new ServiceConfig();\r\n /*config = {\r\n ...new ServiceConfig(),\r\n ...config,\r\n\r\n // 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\r\n // If a custom config wasn't passed in, then deferTokenValidation would have been true from defaultConfig\r\n deferTokenValidation: true\r\n };*/\r\n\r\n // 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\r\n // If a custom config wasn't passed in, then deferTokenValidation would have been true from defaultConfig\r\n config.deferTokenValidation = true\r\n\r\n super(config, http);\r\n\r\n this.checkForExistingToken();\r\n }\r\n //#endregion\r\n\r\n //#region Utilities\r\n override validateUser(token: string): void {\r\n const jwtHelper = new JwtHelperService();\r\n const decoded = jwtHelper.decodeToken(token) as AuthenticationToken;\r\n\r\n if (jwtHelper.isTokenExpired(token)) {\r\n this.logout();\r\n return;\r\n }\r\n\r\n this.authenticatedUser = {\r\n admin: decoded.role === 'Admin',\r\n displayName: decoded.displayName,\r\n accountName: decoded.winaccountname,\r\n distinguishedName: decoded.distinguishedName,\r\n employeeNumber: decoded.employeeNumber,\r\n memberOf: decoded.memberOf\r\n };\r\n\r\n this.config.storage.setItem(this.config.tokenName, token);\r\n\r\n this.getPhoto();\r\n \r\n this.authenticated = true;\r\n this.authenticatedChanged.emit(this.authenticated);\r\n\r\n this.authenticating = false;\r\n this.authenticatingChanged.emit(this.authenticating);\r\n }\r\n\r\n private getPhoto(): void {\r\n this.sharePointService.getPhotos()\r\n .subscribe(photos => {\r\n // The user may have been logged out by the time the photos came back\r\n if (!this.authenticatedUser?.employeeNumber) {\r\n return;\r\n }\r\n\r\n const photo = photos.find(pic => pic.employeeNumber === +this.authenticatedUser!.employeeNumber);\r\n\r\n if (photo) {\r\n this.authenticatedUser.photoUrl = photo.encodedAbsUrl;\r\n }\r\n });\r\n }\r\n //#endregion\r\n}","import { Component, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LoginFormData } from '../../model/login-form-data';\r\nimport { AuthenticationService } from '../../services/authentication.service';\r\n\r\n@Component({\r\n templateUrl: './login-form.component.html',\r\n styleUrls: [\r\n './login-form.component.css',\r\n '../../../../../../styles/mat-icon.css'\r\n ]\r\n})\r\nexport class LoginFormComponent implements OnInit, OnDestroy {\r\n errorMessage: string | undefined;\r\n authenticatedChangedSubscription!: Subscription;\r\n authenticationErrorSubscription!: Subscription;\r\n\r\n form = new UntypedFormGroup({\r\n username: new UntypedFormControl(null, [ Validators.required ]),\r\n password: new UntypedFormControl(null, [ Validators.required ]),\r\n adminGroup: new UntypedFormControl()\r\n });\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) data: LoginFormData,\r\n public dialogRef: MatDialogRef<LoginFormComponent>,\r\n public authenticationService: AuthenticationService) {\r\n\r\n this.form.get('adminGroup')?.setValue(data.adminGroup);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.authenticatedChangedSubscription = this.authenticationService.authenticatedChanged\r\n .subscribe(this.authChangedHandler.bind(this));\r\n\r\n this.authenticationErrorSubscription = this.authenticationService.authenticationError\r\n .subscribe(this.errorHandler.bind(this));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.authenticationErrorSubscription.unsubscribe();\r\n this.authenticatedChangedSubscription.unsubscribe();\r\n }\r\n\r\n authenticate() {\r\n this.errorMessage = undefined;\r\n const { username, password, adminGroup } = this.form.value;\r\n this.authenticationService.login(username, password, adminGroup);\r\n }\r\n\r\n private authChangedHandler(authenticated: boolean): void {\r\n if (authenticated) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n private errorHandler(err: any): void {\r\n console.log('Authentication error', err);\r\n this.errorMessage = `${err.name}: ${err.statusText}`;\r\n }\r\n}\r\n","<h2 mat-dialog-title>\r\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\r\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\r\n</h2>\r\n\r\n<mat-dialog-content>\r\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n\r\n <form *ngIf=\"!authenticationService.authenticating\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <input matInput formControlName=\"password\" type=\"password\" placeholder=\"Password\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating && errorMessage\" id=\"error\">\r\n {{ errorMessage }}\r\n </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\r\n <button mat-raised-button color=\"primary\" (click)=\"authenticate()\"\r\n [disabled]=\"form.invalid\">\r\n <mat-icon fontIcon=\"done\"></mat-icon>\r\n <span>OK</span>\r\n </button>\r\n\r\n <button mat-raised-button (click)=\"dialogRef.close()\">\r\n <mat-icon fontIcon=\"close\"></mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n</mat-dialog-actions>","import { Component, Input } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationComponent } from '@cleavelandprice/ngx-lib/dialog';\r\n\r\nimport { LoginFormComponent } from '../login-form/login-form.component';\r\nimport { AuthenticationService } from '../../services/authentication.service';\r\n\r\n@Component({\r\n selector: 'cp-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: [\r\n './login.component.css',\r\n '../../../../../../styles/mat-icon.css'\r\n ]\r\n})\r\nexport class LoginComponent {\r\n @Input() adminGroup!: string;\r\n\r\n constructor(private dialog: MatDialog,\r\n public authenticationService: AuthenticationService) {\r\n }\r\n\r\n login(): void {\r\n this.dialog.open(LoginFormComponent, {\r\n data: { adminGroup: this.adminGroup }\r\n });\r\n }\r\n\r\n confirmLogout(): void {\r\n this.dialog.open(ConfirmationComponent, {\r\n data: { message: `Are you sure you want to logout?` }\r\n })\r\n .afterClosed()\r\n .subscribe(result => {\r\n if (result) {\r\n this.authenticationService.logout();\r\n }\r\n });\r\n }\r\n}\r\n","<div id=\"user-id\">\r\n <!-- Logged out -->\r\n <mat-icon *ngIf=\"!authenticationService.authenticated\"\r\n fontIcon=\"account_circle\"\r\n matTooltip=\"Login\"\r\n (click)=\"login()\">\r\n </mat-icon>\r\n\r\n <!-- Logged in -->\r\n <ng-container *ngIf=\"authenticationService.authenticated\">\r\n <!-- With photo -->\r\n <img *ngIf=\"authenticationService.authenticatedUser?.photoUrl\"\r\n id=\"authenticated-user-image\"\r\n [src]=\"authenticationService.authenticatedUser?.photoUrl\"\r\n matTooltip=\"Logout\"\r\n (click)=\"confirmLogout()\" />\r\n \r\n <!-- Without photo -->\r\n <mat-icon *ngIf=\"!authenticationService.authenticatedUser?.photoUrl\"\r\n fontIcon=\"account_circle\"\r\n matTooltip=\"Logout\"\r\n (click)=\"confirmLogout()\">\r\n </mat-icon>\r\n \r\n <!-- Name -->\r\n <div id=\"user-name\">\r\n {{ authenticationService.authenticatedUser?.displayName }}\r\n </div>\r\n </ng-container>\r\n</div>","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\nimport { ServiceConfig } from './model/service-config';\r\n\r\nimport { AuthenticationService } from './services/authentication.service';\r\n\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { LoginFormComponent } from './components/login-form/login-form.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n LoginFormComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n \r\n MatButtonModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule\r\n ],\r\n exports: [\r\n LoginComponent,\r\n LoginFormComponent\r\n ]\r\n})\r\nexport class GuiModule {\r\n static forRoot(config: ServiceConfig): ModuleWithProviders<GuiModule> {\r\n return {\r\n ngModule: GuiModule,\r\n providers: [\r\n AuthenticationService,\r\n { provide: ServiceConfig, useValue: config }\r\n ]\r\n };\r\n }\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: GuiModule) {\r\n if (parentModule) {\r\n throw new Error(\r\n 'GuiModule is already loaded. Import it in the AppModule only');\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["BaseServiceConfig","TokenAuthenticationService","i1.ServiceConfig","i2.AuthenticationService","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"cleavelandprice-ngx-lib-authentication-token-gui.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/model/service-config.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/services/authentication.service.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/components/login-form/login-form.component.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/components/login-form/login-form.component.html","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/components/login/login.component.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/components/login/login.component.html","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/token-gui.module.ts","../../../../projects/cleavelandprice/ngx-lib/authentication/token/gui/src/cleavelandprice-ngx-lib-authentication-token-gui.ts"],"sourcesContent":["//import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';\r\nimport { ServiceConfig as BaseServiceConfig } from '@cleavelandprice/ngx-lib/authentication/token';\r\n\r\nexport class ServiceConfig extends BaseServiceConfig {\r\n // See the comment in the library's main service-config.ts file for an explanation\r\n constructor(useSsl_or_customApiUrl: boolean | string = false,\r\n public showRememberMeOption = true,\r\n tokenName = 'token',\r\n authenticateEndpoint = '/authenticate/token'\r\n ) {\r\n super(useSsl_or_customApiUrl, tokenName, authenticateEndpoint);\r\n }\r\n}","import { Injectable, Optional } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\n\r\nimport { SharePointService } from '@cleavelandprice/ngx-lib/sharepoint';\r\n\r\nimport {\r\n AuthenticationService as TokenAuthenticationService,\r\n AuthenticationToken\r\n} from '@cleavelandprice/ngx-lib/authentication/token';\r\n\r\nimport { ServiceConfig } from '../model/service-config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService extends TokenAuthenticationService {\r\n //#region Lifecycle\r\n constructor(@Optional() override config: ServiceConfig,\r\n override http: HttpClient,\r\n private sharePointService: SharePointService) {\r\n\r\n config = config ?? new ServiceConfig();\r\n /*config = {\r\n ...new ServiceConfig(),\r\n ...config,\r\n\r\n // 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\r\n // If a custom config wasn't passed in, then deferTokenValidation would have been true from defaultConfig\r\n deferTokenValidation: true\r\n };*/\r\n\r\n // 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\r\n // If a custom config wasn't passed in, then deferTokenValidation would have been true from defaultConfig\r\n config.deferTokenValidation = true\r\n\r\n super(config, http);\r\n\r\n this.checkForExistingToken();\r\n }\r\n //#endregion\r\n\r\n //#region Utilities\r\n override validateUser(token: string): void {\r\n const jwtHelper = new JwtHelperService();\r\n const decoded = jwtHelper.decodeToken(token) as AuthenticationToken;\r\n\r\n if (jwtHelper.isTokenExpired(token)) {\r\n this.logout();\r\n return;\r\n }\r\n\r\n this.authenticatedUser = {\r\n admin: decoded.role === 'Admin',\r\n displayName: decoded.displayName,\r\n accountName: decoded.winaccountname,\r\n distinguishedName: decoded.distinguishedName,\r\n employeeNumber: decoded.employeeNumber,\r\n memberOf: decoded.memberOf\r\n };\r\n\r\n this.storage.setItem(this.config.tokenName, token);\r\n\r\n this.getPhoto();\r\n \r\n this.authenticated = true;\r\n this.authenticatedChanged.emit(this.authenticated);\r\n\r\n this.authenticating = false;\r\n this.authenticatingChanged.emit(this.authenticating);\r\n }\r\n\r\n private getPhoto(): void {\r\n this.sharePointService.getPhotos()\r\n .subscribe(photos => {\r\n // The user may have been logged out by the time the photos came back\r\n if (!this.authenticatedUser?.employeeNumber) {\r\n return;\r\n }\r\n\r\n const photo = photos.find(pic => pic.employeeNumber === +this.authenticatedUser!.employeeNumber);\r\n\r\n if (photo) {\r\n this.authenticatedUser.photoUrl = photo.encodedAbsUrl;\r\n }\r\n });\r\n }\r\n //#endregion\r\n}","import { Component, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LoginFormData } from '../../model/login-form-data';\r\nimport { AuthenticationService } from '../../services/authentication.service';\r\n\r\n@Component({\r\n templateUrl: './login-form.component.html',\r\n styleUrls: [\r\n './login-form.component.css',\r\n '../../../../../../styles/mat-icon.css'\r\n ]\r\n})\r\nexport class LoginFormComponent implements OnInit, OnDestroy {\r\n errorMessage: string | undefined;\r\n authenticatedChangedSubscription!: Subscription;\r\n authenticationErrorSubscription!: Subscription;\r\n\r\n form = new FormGroup({\r\n username: new FormControl(null, [ Validators.required ]),\r\n password: new FormControl(null, [ Validators.required ]),\r\n adminGroup: new FormControl()\r\n });\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) data: LoginFormData,\r\n public dialogRef: MatDialogRef<LoginFormComponent>,\r\n public authenticationService: AuthenticationService) {\r\n\r\n this.form.get('adminGroup')?.setValue(data.adminGroup);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.authenticatedChangedSubscription = this.authenticationService.authenticatedChanged\r\n .subscribe(this.authChangedHandler.bind(this));\r\n\r\n this.authenticationErrorSubscription = this.authenticationService.authenticationError\r\n .subscribe(this.errorHandler.bind(this));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.authenticationErrorSubscription.unsubscribe();\r\n this.authenticatedChangedSubscription.unsubscribe();\r\n }\r\n\r\n authenticate() {\r\n this.errorMessage = undefined;\r\n const { username, password, adminGroup } = this.form.value;\r\n this.authenticationService.login(username!, password!, adminGroup);\r\n }\r\n\r\n private authChangedHandler(authenticated: boolean): void {\r\n if (authenticated) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n private errorHandler(err: any): void {\r\n console.log('Authentication error', err);\r\n this.errorMessage = `${err.name}: ${err.statusText}`;\r\n }\r\n\r\n changeTokenStorageMode(checked: boolean): void {\r\n const keyName = 'storeTokenInSession';\r\n\r\n if (checked) {\r\n if (localStorage.getItem(keyName)) {\r\n localStorage.removeItem(keyName);\r\n }\r\n } else {\r\n localStorage.setItem(keyName, 'true');\r\n }\r\n }\r\n}\r\n","<h2 mat-dialog-title>\r\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\r\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\r\n</h2>\r\n\r\n<mat-dialog-content>\r\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n\r\n <form *ngIf=\"!authenticationService.authenticating\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <input matInput formControlName=\"password\" type=\"password\" placeholder=\"Password\" (keyup.enter)=\"authenticate()\">\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle *ngIf=\"authenticationService.config.showRememberMeOption\" [checked]=\"!authenticationService.useSessionStorage\" (change)=\"changeTokenStorageMode($event.checked)\">\r\n Remember me next time\r\n </mat-slide-toggle>\r\n </form>\r\n\r\n <div *ngIf=\"!authenticationService.authenticating && errorMessage\" id=\"error\">\r\n {{ errorMessage }}\r\n </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\r\n <button mat-raised-button color=\"primary\" (click)=\"authenticate()\"\r\n [disabled]=\"form.invalid\">\r\n <mat-icon fontIcon=\"done\"></mat-icon>\r\n <span>OK</span>\r\n </button>\r\n\r\n <button mat-raised-button (click)=\"dialogRef.close()\">\r\n <mat-icon fontIcon=\"close\"></mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n</mat-dialog-actions>","import { Component, Input } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationComponent } from '@cleavelandprice/ngx-lib/dialog';\r\n\r\nimport { LoginFormComponent } from '../login-form/login-form.component';\r\nimport { AuthenticationService } from '../../services/authentication.service';\r\n\r\n@Component({\r\n selector: 'cp-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: [\r\n './login.component.css',\r\n '../../../../../../styles/mat-icon.css'\r\n ]\r\n})\r\nexport class LoginComponent {\r\n @Input() adminGroup!: string;\r\n\r\n constructor(private dialog: MatDialog,\r\n public authenticationService: AuthenticationService) {\r\n }\r\n\r\n login(): void {\r\n this.dialog.open(LoginFormComponent, {\r\n data: { adminGroup: this.adminGroup }\r\n });\r\n }\r\n\r\n confirmLogout(): void {\r\n this.dialog.open(ConfirmationComponent, {\r\n data: { message: `Are you sure you want to logout?` }\r\n })\r\n .afterClosed()\r\n .subscribe(result => {\r\n if (result) {\r\n this.authenticationService.logout();\r\n }\r\n });\r\n }\r\n}\r\n","<div id=\"user-id\">\r\n <!-- Logged out -->\r\n <mat-icon *ngIf=\"!authenticationService.authenticated\"\r\n fontIcon=\"account_circle\"\r\n matTooltip=\"Login\"\r\n (click)=\"login()\">\r\n </mat-icon>\r\n\r\n <!-- Logged in -->\r\n <ng-container *ngIf=\"authenticationService.authenticated\">\r\n <!-- With photo -->\r\n <img *ngIf=\"authenticationService.authenticatedUser?.photoUrl\"\r\n id=\"authenticated-user-image\"\r\n [src]=\"authenticationService.authenticatedUser?.photoUrl\"\r\n matTooltip=\"Logout\"\r\n (click)=\"confirmLogout()\" />\r\n \r\n <!-- Without photo -->\r\n <mat-icon *ngIf=\"!authenticationService.authenticatedUser?.photoUrl\"\r\n fontIcon=\"account_circle\"\r\n matTooltip=\"Logout\"\r\n (click)=\"confirmLogout()\">\r\n </mat-icon>\r\n \r\n <!-- Name -->\r\n <div id=\"user-name\">\r\n {{ authenticationService.authenticatedUser?.displayName }}\r\n </div>\r\n </ng-container>\r\n</div>","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\nimport { ServiceConfig } from './model/service-config';\r\n\r\nimport { AuthenticationService } from './services/authentication.service';\r\n\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { LoginFormComponent } from './components/login-form/login-form.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n LoginFormComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n \r\n MatButtonModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule,\r\n MatSlideToggleModule\r\n ],\r\n exports: [\r\n LoginComponent,\r\n LoginFormComponent\r\n ]\r\n})\r\nexport class GuiModule {\r\n static forRoot(config: ServiceConfig): ModuleWithProviders<GuiModule> {\r\n return {\r\n ngModule: GuiModule,\r\n providers: [\r\n AuthenticationService,\r\n { provide: ServiceConfig, useValue: config }\r\n ]\r\n };\r\n }\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: GuiModule) {\r\n if (parentModule) {\r\n throw new Error(\r\n 'GuiModule is already loaded. Import it in the AppModule only');\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["BaseServiceConfig","TokenAuthenticationService","i1.ServiceConfig","i2.AuthenticationService","i3","i4"],"mappings":"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"}
@@ -8,8 +8,8 @@ import { CommonModule } from '@angular/common';
8
8
  //import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';
9
9
  class ServiceConfig extends ServiceConfig$1 {
10
10
  // See the comment in the library's main service-config.ts file for an explanation
11
- constructor(useSsl_or_customApiUrl = false, storageMode = 'local', tokenName = 'token', authenticateEndpoint = '/authenticate/token') {
12
- super(useSsl_or_customApiUrl, storageMode, tokenName, authenticateEndpoint);
11
+ constructor(useSsl_or_customApiUrl = false, tokenName = 'token', authenticateEndpoint = '/authenticate/token') {
12
+ super(useSsl_or_customApiUrl, tokenName, authenticateEndpoint);
13
13
  this.deferTokenValidation = false;
14
14
  }
15
15
  }
@@ -33,6 +33,16 @@ class AuthenticationService {
33
33
  }
34
34
  }
35
35
  //#endregion
36
+ //#region Properties
37
+ get useSessionStorage() {
38
+ return !!localStorage.getItem('storeTokenInSession');
39
+ }
40
+ get storage() {
41
+ return this.useSessionStorage ?
42
+ sessionStorage :
43
+ localStorage;
44
+ }
45
+ //#endregion
36
46
  //#region Utilities
37
47
  //Authenticate the user and store the token in Local Storage
38
48
  login(username, password, adminGroup) {
@@ -64,8 +74,8 @@ class AuthenticationService {
64
74
  }
65
75
  //Logout the user and delete the token from Local Storage
66
76
  logout() {
67
- if (this.config.storage.getItem(this.config.tokenName)) {
68
- this.config.storage.removeItem(this.config.tokenName);
77
+ if (this.storage.getItem(this.config.tokenName)) {
78
+ this.storage.removeItem(this.config.tokenName);
69
79
  }
70
80
  this.authenticatedUser = undefined;
71
81
  this.authenticated = false;
@@ -86,14 +96,14 @@ class AuthenticationService {
86
96
  employeeNumber: decoded.employeeNumber,
87
97
  memberOf: decoded.memberOf
88
98
  };
89
- this.config.storage.setItem(this.config.tokenName, token);
99
+ this.storage.setItem(this.config.tokenName, token);
90
100
  this.authenticated = true;
91
101
  this.authenticatedChanged.emit(this.authenticated);
92
102
  this.authenticating = false;
93
103
  this.authenticatingChanged.emit(this.authenticating);
94
104
  }
95
105
  checkForExistingToken() {
96
- const token = this.config.storage.getItem(this.config.tokenName);
106
+ const token = this.storage.getItem(this.config.tokenName);
97
107
  if (token) {
98
108
  this.validateUser(token);
99
109
  }