@igo2/auth 17.0.0-next.1 → 17.0.0-next.11

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 (130) hide show
  1. package/environment/environment.interface.d.ts +6 -0
  2. package/environment/index.d.ts +5 -0
  3. package/esm2022/environment/environment.interface.mjs +2 -0
  4. package/esm2022/environment/igo2-auth-environment.mjs +5 -0
  5. package/esm2022/environment/public_api.mjs +2 -0
  6. package/esm2022/facebook/auth-facebook/auth-facebook.component.mjs +65 -0
  7. package/esm2022/facebook/igo2-auth-facebook.mjs +5 -0
  8. package/esm2022/facebook/public_api.mjs +3 -0
  9. package/esm2022/facebook/shared/auth-facebook.interface.mjs +2 -0
  10. package/esm2022/facebook/shared/index.mjs +2 -0
  11. package/esm2022/form/auth-form/auth-form.component.mjs +166 -0
  12. package/esm2022/form/auth-form.module.mjs +73 -0
  13. package/esm2022/form/igo2-auth-form.mjs +5 -0
  14. package/esm2022/form/public_api.mjs +7 -0
  15. package/esm2022/form/shared/auth-form.interface.mjs +2 -0
  16. package/esm2022/form/shared/index.mjs +2 -0
  17. package/esm2022/google/auth-google/auth-google.component.mjs +108 -0
  18. package/esm2022/google/igo2-auth-google.mjs +5 -0
  19. package/esm2022/google/public_api.mjs +3 -0
  20. package/esm2022/google/shared/auth-google.interface.mjs +2 -0
  21. package/esm2022/google/shared/index.mjs +2 -0
  22. package/esm2022/internal/auth-intern/auth-intern.component.mjs +84 -0
  23. package/esm2022/internal/igo2-auth-internal.mjs +5 -0
  24. package/esm2022/internal/public_api.mjs +2 -0
  25. package/esm2022/lib/auth.provider.mjs +22 -0
  26. package/esm2022/lib/shared/admin.guard.mjs +4 -4
  27. package/esm2022/lib/shared/auth-storage.interface.mjs +1 -1
  28. package/esm2022/lib/shared/auth-storage.service.mjs +4 -4
  29. package/esm2022/lib/shared/auth.guard.mjs +4 -4
  30. package/esm2022/lib/shared/auth.interceptor.mjs +4 -4
  31. package/esm2022/lib/shared/auth.interface.mjs +5 -2
  32. package/esm2022/lib/shared/auth.service.mjs +4 -4
  33. package/esm2022/lib/shared/index.mjs +3 -5
  34. package/esm2022/lib/shared/logged.guard.mjs +4 -4
  35. package/esm2022/lib/shared/profils.guard.mjs +4 -4
  36. package/esm2022/lib/shared/token.service.mjs +4 -4
  37. package/esm2022/microsoft/auth-microsoft/auth-microsoft.component.mjs +100 -0
  38. package/esm2022/microsoft/auth-microsoft.provider.mjs +105 -0
  39. package/esm2022/microsoft/auth-microsoftb2c/auth-microsoftb2c.component.mjs +98 -0
  40. package/esm2022/microsoft/auth-microsoftb2c/auth-msalBroadcastServiceb2c.service.mjs +47 -0
  41. package/esm2022/microsoft/auth-microsoftb2c/auth-msalServiceb2c.service.mjs +85 -0
  42. package/esm2022/microsoft/igo2-auth-microsoft.mjs +5 -0
  43. package/esm2022/microsoft/public_api.mjs +5 -0
  44. package/esm2022/microsoft/shared/auth-microsoft.interface.mjs +2 -0
  45. package/esm2022/microsoft/shared/index.mjs +2 -0
  46. package/esm2022/monitoring/auth-monitoring/auth-monitoring.provider.mjs +24 -0
  47. package/esm2022/monitoring/auth-monitoring/auth-monitoring.service.mjs +54 -0
  48. package/esm2022/monitoring/igo2-auth-monitoring.mjs +5 -0
  49. package/esm2022/monitoring/public_api.mjs +3 -0
  50. package/esm2022/public_api.mjs +3 -19
  51. package/{lib/auth-form → facebook/auth-facebook}/auth-facebook.component.d.ts +1 -1
  52. package/facebook/index.d.ts +5 -0
  53. package/facebook/public_api.d.ts +2 -0
  54. package/facebook/shared/auth-facebook.interface.d.ts +4 -0
  55. package/facebook/shared/index.d.ts +1 -0
  56. package/fesm2022/igo2-auth-environment.mjs +4 -0
  57. package/fesm2022/igo2-auth-environment.mjs.map +1 -0
  58. package/fesm2022/igo2-auth-facebook.mjs +70 -0
  59. package/fesm2022/igo2-auth-facebook.mjs.map +1 -0
  60. package/fesm2022/igo2-auth-form.mjs +238 -0
  61. package/fesm2022/igo2-auth-form.mjs.map +1 -0
  62. package/fesm2022/igo2-auth-google.mjs +112 -0
  63. package/fesm2022/igo2-auth-google.mjs.map +1 -0
  64. package/fesm2022/igo2-auth-internal.mjs +89 -0
  65. package/fesm2022/igo2-auth-internal.mjs.map +1 -0
  66. package/fesm2022/igo2-auth-microsoft.mjs +404 -0
  67. package/fesm2022/igo2-auth-microsoft.mjs.map +1 -0
  68. package/fesm2022/igo2-auth-monitoring.mjs +81 -0
  69. package/fesm2022/igo2-auth-monitoring.mjs.map +1 -0
  70. package/fesm2022/igo2-auth.mjs +241 -1145
  71. package/fesm2022/igo2-auth.mjs.map +1 -1
  72. package/{lib → form}/auth-form/auth-form.component.d.ts +3 -4
  73. package/form/auth-form.module.d.ts +20 -0
  74. package/form/index.d.ts +5 -0
  75. package/form/public_api.d.ts +3 -0
  76. package/form/shared/auth-form.interface.d.ts +9 -0
  77. package/form/shared/index.d.ts +1 -0
  78. package/{src/lib → form/src}/auth-form/auth-intern.theme.scss +19 -19
  79. package/form/src/auth-form.theme.scss +9 -0
  80. package/{lib/auth-form → google/auth-google}/auth-google.component.d.ts +1 -1
  81. package/google/index.d.ts +5 -0
  82. package/google/public_api.d.ts +2 -0
  83. package/google/shared/auth-google.interface.d.ts +5 -0
  84. package/google/shared/index.d.ts +1 -0
  85. package/{lib/auth-form → internal/auth-intern}/auth-intern.component.d.ts +1 -1
  86. package/internal/index.d.ts +5 -0
  87. package/internal/public_api.d.ts +1 -0
  88. package/lib/auth.provider.d.ts +3 -0
  89. package/lib/shared/auth.interface.d.ts +20 -69
  90. package/lib/shared/index.d.ts +2 -4
  91. package/locale/en.auth.json +29 -29
  92. package/locale/fr.auth.json +33 -33
  93. package/{lib/auth-form → microsoft/auth-microsoft}/auth-microsoft.component.d.ts +4 -2
  94. package/microsoft/auth-microsoft.provider.d.ts +12 -0
  95. package/{lib/auth-form → microsoft/auth-microsoftb2c}/auth-microsoftb2c.component.d.ts +5 -3
  96. package/{lib/shared → microsoft/auth-microsoftb2c}/auth-msalBroadcastServiceb2c.service.d.ts +1 -1
  97. package/microsoft/index.d.ts +5 -0
  98. package/microsoft/public_api.d.ts +4 -0
  99. package/microsoft/shared/auth-microsoft.interface.d.ts +32 -0
  100. package/microsoft/shared/index.d.ts +1 -0
  101. package/{lib → monitoring}/auth-monitoring/auth-monitoring.service.d.ts +1 -1
  102. package/monitoring/index.d.ts +5 -0
  103. package/monitoring/public_api.d.ts +2 -0
  104. package/package.json +46 -3
  105. package/public_api.d.ts +2 -18
  106. package/src/auth.theme.scss +9 -9
  107. package/esm2022/lib/auth-form/auth-facebook.component.mjs +0 -65
  108. package/esm2022/lib/auth-form/auth-form.component.mjs +0 -170
  109. package/esm2022/lib/auth-form/auth-google.component.mjs +0 -108
  110. package/esm2022/lib/auth-form/auth-intern.component.mjs +0 -84
  111. package/esm2022/lib/auth-form/auth-microsoft.component.mjs +0 -100
  112. package/esm2022/lib/auth-form/auth-microsoftb2c.component.mjs +0 -98
  113. package/esm2022/lib/auth-form/index.mjs +0 -19
  114. package/esm2022/lib/auth-monitoring/auth-monitoring.provider.mjs +0 -24
  115. package/esm2022/lib/auth-monitoring/auth-monitoring.service.mjs +0 -54
  116. package/esm2022/lib/auth.module.mjs +0 -98
  117. package/esm2022/lib/environment/environment.interface.mjs +0 -2
  118. package/esm2022/lib/environment/index.mjs +0 -2
  119. package/esm2022/lib/shared/auth-microsoft.provider.mjs +0 -86
  120. package/esm2022/lib/shared/auth-msalBroadcastServiceb2c.service.mjs +0 -47
  121. package/esm2022/lib/shared/auth-msalServiceb2c.service..mjs +0 -85
  122. package/esm2022/lib/shared/protected.directive.mjs +0 -21
  123. package/lib/auth-form/index.d.ts +0 -11
  124. package/lib/auth.module.d.ts +0 -24
  125. package/lib/environment/environment.interface.d.ts +0 -5
  126. package/lib/shared/auth-microsoft.provider.d.ts +0 -30
  127. package/lib/shared/protected.directive.d.ts +0 -8
  128. /package/{lib/environment/index.d.ts → environment/public_api.d.ts} +0 -0
  129. /package/{lib/shared/auth-msalServiceb2c.service..d.ts → microsoft/auth-microsoftb2c/auth-msalServiceb2c.service.d.ts} +0 -0
  130. /package/{lib → monitoring}/auth-monitoring/auth-monitoring.provider.d.ts +0 -0
@@ -1,170 +0,0 @@
1
- import { NgIf } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output } from '@angular/core';
3
- import { MatButtonModule } from '@angular/material/button';
4
- import { NavigationStart, Router } from '@angular/router';
5
- import { ConfigService } from '@igo2/core/config';
6
- import { TranslateModule } from '@ngx-translate/core';
7
- import { filter } from 'rxjs/operators';
8
- import { AuthService } from '../shared/auth.service';
9
- import { AuthFacebookComponent } from './auth-facebook.component';
10
- import { AuthGoogleComponent } from './auth-google.component';
11
- import { AuthInternComponent } from './auth-intern.component';
12
- import { AuthMicrosoftComponent } from './auth-microsoft.component';
13
- import { AuthMicrosoftb2cComponent } from './auth-microsoftb2c.component';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "../shared/auth.service";
16
- import * as i2 from "@igo2/core/config";
17
- import * as i3 from "@angular/router";
18
- import * as i4 from "@angular/material/button";
19
- import * as i5 from "@ngx-translate/core";
20
- export class AuthFormComponent {
21
- auth;
22
- config;
23
- router;
24
- get backgroundDisable() {
25
- if (this.isLogoutRoute || this.isLogoutRoute) {
26
- return false;
27
- }
28
- return this._backgroundDisable;
29
- }
30
- set backgroundDisable(value) {
31
- this._backgroundDisable = value.toString() === 'true';
32
- }
33
- _backgroundDisable = true;
34
- get hasAlreadyConnectedDiv() {
35
- return this._hasAlreadyConnectedDiv;
36
- }
37
- set hasAlreadyConnectedDiv(value) {
38
- this._hasAlreadyConnectedDiv = value.toString() === 'true';
39
- }
40
- _hasAlreadyConnectedDiv = true;
41
- get hasLogoutDiv() {
42
- return this._hasLogoutDiv;
43
- }
44
- set hasLogoutDiv(value) {
45
- this._hasLogoutDiv = value.toString() === 'true';
46
- }
47
- _hasLogoutDiv = true;
48
- get showAlreadyConnectedDiv() {
49
- if (this.isLogoutRoute) {
50
- return this.hasAlreadyConnectedDiv;
51
- }
52
- return this._showAlreadyConnectedDiv;
53
- }
54
- set showAlreadyConnectedDiv(value) {
55
- this._showAlreadyConnectedDiv = value.toString() === 'true';
56
- }
57
- _showAlreadyConnectedDiv = false;
58
- get showLogoutDiv() {
59
- if (this.isLogoutRoute) {
60
- return this.hasLogoutDiv;
61
- }
62
- return this._showLogoutDiv;
63
- }
64
- set showLogoutDiv(value) {
65
- this._showLogoutDiv = value.toString() === 'true';
66
- }
67
- _showLogoutDiv = false;
68
- get showLoginDiv() {
69
- if (!this.isLogoutRoute) {
70
- return true;
71
- }
72
- }
73
- login = new EventEmitter();
74
- options;
75
- user;
76
- visible = true;
77
- isLoginRoute;
78
- isLogoutRoute;
79
- constructor(auth, config, router) {
80
- this.auth = auth;
81
- this.config = config;
82
- this.router = router;
83
- this.options = this.config.getConfig('auth');
84
- this.visible = Object.getOwnPropertyNames(this.options).length !== 0;
85
- }
86
- ngOnInit() {
87
- this.analyzeRoute();
88
- this.getName();
89
- }
90
- onLogin() {
91
- this.auth.goToRedirectUrl();
92
- this.getName();
93
- this.login.emit(true);
94
- }
95
- logout() {
96
- this.auth.logout().subscribe(() => {
97
- this.user = undefined;
98
- if (this.router) {
99
- if (this.options?.logoutRoute) {
100
- this.router.navigate([this.options?.logoutRoute]);
101
- }
102
- else if (this.options?.homeRoute) {
103
- this.router.navigate([this.options?.homeRoute]);
104
- }
105
- }
106
- });
107
- }
108
- home() {
109
- if (this.router && this.options?.homeRoute) {
110
- this.router.navigate([this.options?.homeRoute]);
111
- }
112
- }
113
- getName() {
114
- const tokenDecoded = this.auth.decodeToken();
115
- if (tokenDecoded) {
116
- this.user = {
117
- name: tokenDecoded.user.firstName || tokenDecoded.user.sourceId
118
- };
119
- }
120
- }
121
- analyzeRoute() {
122
- if (!this.router) {
123
- return;
124
- }
125
- this.router.events
126
- .pipe(filter((event) => event instanceof NavigationStart))
127
- .subscribe((changeEvent) => {
128
- if (changeEvent.url) {
129
- const currentRoute = changeEvent.url;
130
- const logoutRoute = this.options?.logoutRoute;
131
- const loginRoute = this.options?.loginRoute;
132
- this.isLogoutRoute = currentRoute === logoutRoute;
133
- this.isLoginRoute = currentRoute === loginRoute;
134
- if (this.isLogoutRoute) {
135
- this.auth.logout();
136
- }
137
- }
138
- });
139
- }
140
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthFormComponent, deps: [{ token: i1.AuthService }, { token: i2.ConfigService }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component });
141
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AuthFormComponent, isStandalone: true, selector: "igo-auth-form", inputs: { backgroundDisable: "backgroundDisable", hasAlreadyConnectedDiv: "hasAlreadyConnectedDiv", hasLogoutDiv: "hasLogoutDiv", showAlreadyConnectedDiv: "showAlreadyConnectedDiv", showLogoutDiv: "showLogoutDiv" }, outputs: { login: "login" }, ngImport: i0, template: "<div *ngIf=\"visible\">\r\n <div\r\n *ngIf=\"!auth.logged && backgroundDisable\"\r\n class=\"backgroundDisable\"\r\n ></div>\r\n\r\n <div *ngIf=\"!auth.logged && showLoginDiv\" class=\"login center-block\">\r\n <h1>{{ 'igo.auth.connection' | translate }}</h1>\r\n\r\n <igo-auth-google\r\n *ngIf=\"options.google && options.google.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-google>\r\n <igo-auth-microsoft\r\n *ngIf=\"options.microsoft && options.microsoft.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-microsoft>\r\n <igo-auth-microsoftb2c\r\n *ngIf=\"options.microsoftb2c && options.microsoftb2c.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-microsoftb2c>\r\n <igo-auth-facebook\r\n *ngIf=\"options.facebook && options.facebook.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-facebook>\r\n <igo-auth-intern\r\n *ngIf=\"!options.intern || options.intern.enabled !== false\"\r\n [allowAnonymous]=\"options.allowAnonymous\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-intern>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"auth.logged && showAlreadyConnectedDiv\"\r\n class=\"login center-block\"\r\n >\r\n <p>{{ 'igo.auth.welcome' | translate: user }}</p>\r\n <button mat-raised-button type=\"button\" (click)=\"logout()\">\r\n {{ 'igo.auth.signOut' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showLogoutDiv\" class=\"login center-block\">\r\n <p>{{ 'igo.auth.deconnection' | translate }}</p>\r\n <button\r\n *ngIf=\"options.homeRoute\"\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"home()\"\r\n >\r\n {{ 'igo.auth.home' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{z-index:999}div.login{z-index:200;width:90%;min-width:360px;max-width:600px;padding:25px 50px;border:1px solid;background-color:#fff;border-color:#888}.center-block{position:fixed;top:20%;left:50%;transform:translate(-50%)}.backgroundDisable{position:fixed;top:0;left:0;background:#000;opacity:.8;z-index:100;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AuthGoogleComponent, selector: "igo-auth-google", outputs: ["login"] }, { kind: "component", type: AuthMicrosoftComponent, selector: "igo-auth-microsoft", outputs: ["login"] }, { kind: "component", type: AuthMicrosoftb2cComponent, selector: "igo-auth-microsoftb2c", outputs: ["login"] }, { kind: "component", type: AuthFacebookComponent, selector: "igo-auth-facebook", outputs: ["login"] }, { kind: "component", type: AuthInternComponent, selector: "igo-auth-intern", inputs: ["allowAnonymous"], outputs: ["login"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
142
- }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthFormComponent, decorators: [{
144
- type: Component,
145
- args: [{ selector: 'igo-auth-form', changeDetection: ChangeDetectionStrategy.Default, standalone: true, imports: [
146
- NgIf,
147
- AuthGoogleComponent,
148
- AuthMicrosoftComponent,
149
- AuthMicrosoftb2cComponent,
150
- AuthFacebookComponent,
151
- AuthInternComponent,
152
- MatButtonModule,
153
- TranslateModule
154
- ], template: "<div *ngIf=\"visible\">\r\n <div\r\n *ngIf=\"!auth.logged && backgroundDisable\"\r\n class=\"backgroundDisable\"\r\n ></div>\r\n\r\n <div *ngIf=\"!auth.logged && showLoginDiv\" class=\"login center-block\">\r\n <h1>{{ 'igo.auth.connection' | translate }}</h1>\r\n\r\n <igo-auth-google\r\n *ngIf=\"options.google && options.google.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-google>\r\n <igo-auth-microsoft\r\n *ngIf=\"options.microsoft && options.microsoft.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-microsoft>\r\n <igo-auth-microsoftb2c\r\n *ngIf=\"options.microsoftb2c && options.microsoftb2c.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-microsoftb2c>\r\n <igo-auth-facebook\r\n *ngIf=\"options.facebook && options.facebook.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-facebook>\r\n <igo-auth-intern\r\n *ngIf=\"!options.intern || options.intern.enabled !== false\"\r\n [allowAnonymous]=\"options.allowAnonymous\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-intern>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"auth.logged && showAlreadyConnectedDiv\"\r\n class=\"login center-block\"\r\n >\r\n <p>{{ 'igo.auth.welcome' | translate: user }}</p>\r\n <button mat-raised-button type=\"button\" (click)=\"logout()\">\r\n {{ 'igo.auth.signOut' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showLogoutDiv\" class=\"login center-block\">\r\n <p>{{ 'igo.auth.deconnection' | translate }}</p>\r\n <button\r\n *ngIf=\"options.homeRoute\"\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"home()\"\r\n >\r\n {{ 'igo.auth.home' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{z-index:999}div.login{z-index:200;width:90%;min-width:360px;max-width:600px;padding:25px 50px;border:1px solid;background-color:#fff;border-color:#888}.center-block{position:fixed;top:20%;left:50%;transform:translate(-50%)}.backgroundDisable{position:fixed;top:0;left:0;background:#000;opacity:.8;z-index:100;height:100%;width:100%}\n"] }]
155
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.Router, decorators: [{
156
- type: Optional
157
- }] }], propDecorators: { backgroundDisable: [{
158
- type: Input
159
- }], hasAlreadyConnectedDiv: [{
160
- type: Input
161
- }], hasLogoutDiv: [{
162
- type: Input
163
- }], showAlreadyConnectedDiv: [{
164
- type: Input
165
- }], showLogoutDiv: [{
166
- type: Input
167
- }], login: [{
168
- type: Output
169
- }] } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9hdXRoLWZvcm0vYXV0aC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9hdXRoLWZvcm0vYXV0aC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBbUIxRSxNQUFNLE9BQU8saUJBQWlC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QXVCLENBQUMsT0FBTyxjQUNwQyxJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIseUJBQXlCO3dCQUN6QixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3FCQUNoQjs7MEJBNEVFLFFBQVE7eUNBeEVQLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFhRixzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBVUYsWUFBWTtzQkFEZixLQUFLO2dCQVVGLHVCQUF1QjtzQkFEMUIsS0FBSztnQkFhRixhQUFhO3NCQURoQixLQUFLO2dCQWtCSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBBdXRoT3B0aW9ucyB9IGZyb20gJy4uL3NoYXJlZC9hdXRoLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhGYWNlYm9va0NvbXBvbmVudCB9IGZyb20gJy4vYXV0aC1mYWNlYm9vay5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdXRoR29vZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRoLWdvb2dsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdXRoSW50ZXJuQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRoLWludGVybi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdXRoTWljcm9zb2Z0Q29tcG9uZW50IH0gZnJvbSAnLi9hdXRoLW1pY3Jvc29mdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdXRoTWljcm9zb2Z0YjJjQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRoLW1pY3Jvc29mdGIyYy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tYXV0aC1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdXRoLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0lmLFxyXG4gICAgQXV0aEdvb2dsZUNvbXBvbmVudCxcclxuICAgIEF1dGhNaWNyb3NvZnRDb21wb25lbnQsXHJcbiAgICBBdXRoTWljcm9zb2Z0YjJjQ29tcG9uZW50LFxyXG4gICAgQXV0aEZhY2Vib29rQ29tcG9uZW50LFxyXG4gICAgQXV0aEludGVybkNvbXBvbmVudCxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKVxyXG4gIGdldCBiYWNrZ3JvdW5kRGlzYWJsZSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmlzTG9nb3V0Um91dGUgfHwgdGhpcy5pc0xvZ291dFJvdXRlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9iYWNrZ3JvdW5kRGlzYWJsZTtcclxuICB9XHJcbiAgc2V0IGJhY2tncm91bmREaXNhYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9iYWNrZ3JvdW5kRGlzYWJsZSA9IHZhbHVlLnRvU3RyaW5nKCkgPT09ICd0cnVlJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfYmFja2dyb3VuZERpc2FibGUgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBoYXNBbHJlYWR5Q29ubmVjdGVkRGl2KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhc0FscmVhZHlDb25uZWN0ZWREaXY7XHJcbiAgfVxyXG4gIHNldCBoYXNBbHJlYWR5Q29ubmVjdGVkRGl2KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9oYXNBbHJlYWR5Q29ubmVjdGVkRGl2ID0gdmFsdWUudG9TdHJpbmcoKSA9PT0gJ3RydWUnO1xyXG4gIH1cclxuICBwcml2YXRlIF9oYXNBbHJlYWR5Q29ubmVjdGVkRGl2ID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgaGFzTG9nb3V0RGl2KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhc0xvZ291dERpdjtcclxuICB9XHJcbiAgc2V0IGhhc0xvZ291dERpdih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faGFzTG9nb3V0RGl2ID0gdmFsdWUudG9TdHJpbmcoKSA9PT0gJ3RydWUnO1xyXG4gIH1cclxuICBwcml2YXRlIF9oYXNMb2dvdXREaXYgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBzaG93QWxyZWFkeUNvbm5lY3RlZERpdigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmlzTG9nb3V0Um91dGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGFzQWxyZWFkeUNvbm5lY3RlZERpdjtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9zaG93QWxyZWFkeUNvbm5lY3RlZERpdjtcclxuICB9XHJcbiAgc2V0IHNob3dBbHJlYWR5Q29ubmVjdGVkRGl2KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93QWxyZWFkeUNvbm5lY3RlZERpdiA9IHZhbHVlLnRvU3RyaW5nKCkgPT09ICd0cnVlJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2hvd0FscmVhZHlDb25uZWN0ZWREaXYgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgc2hvd0xvZ291dERpdigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmlzTG9nb3V0Um91dGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGFzTG9nb3V0RGl2O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3Nob3dMb2dvdXREaXY7XHJcbiAgfVxyXG4gIHNldCBzaG93TG9nb3V0RGl2KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93TG9nb3V0RGl2ID0gdmFsdWUudG9TdHJpbmcoKSA9PT0gJ3RydWUnO1xyXG4gIH1cclxuICBwcml2YXRlIF9zaG93TG9nb3V0RGl2ID0gZmFsc2U7XHJcblxyXG4gIGdldCBzaG93TG9naW5EaXYoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuaXNMb2dvdXRSb3V0ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBsb2dpbjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBwdWJsaWMgb3B0aW9ucz86IEF1dGhPcHRpb25zO1xyXG4gIHB1YmxpYyB1c2VyO1xyXG5cclxuICBwdWJsaWMgdmlzaWJsZSA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgaXNMb2dpblJvdXRlOiBib29sZWFuO1xyXG4gIHByaXZhdGUgaXNMb2dvdXRSb3V0ZTogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXV0aDogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY29uZmlnLmdldENvbmZpZygnYXV0aCcpO1xyXG4gICAgdGhpcy52aXNpYmxlID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5vcHRpb25zKS5sZW5ndGggIT09IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFuYWx5emVSb3V0ZSgpO1xyXG4gICAgdGhpcy5nZXROYW1lKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Mb2dpbigpIHtcclxuICAgIHRoaXMuYXV0aC5nb1RvUmVkaXJlY3RVcmwoKTtcclxuICAgIHRoaXMuZ2V0TmFtZSgpO1xyXG4gICAgdGhpcy5sb2dpbi5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ291dCgpIHtcclxuICAgIHRoaXMuYXV0aC5sb2dvdXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVzZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgIGlmICh0aGlzLnJvdXRlcikge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnM/LmxvZ291dFJvdXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5vcHRpb25zPy5sb2dvdXRSb3V0ZV0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zPy5ob21lUm91dGUpIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLm9wdGlvbnM/LmhvbWVSb3V0ZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaG9tZSgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlciAmJiB0aGlzLm9wdGlvbnM/LmhvbWVSb3V0ZSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5vcHRpb25zPy5ob21lUm91dGVdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TmFtZSgpIHtcclxuICAgIGNvbnN0IHRva2VuRGVjb2RlZCA9IHRoaXMuYXV0aC5kZWNvZGVUb2tlbigpO1xyXG4gICAgaWYgKHRva2VuRGVjb2RlZCkge1xyXG4gICAgICB0aGlzLnVzZXIgPSB7XHJcbiAgICAgICAgbmFtZTogdG9rZW5EZWNvZGVkLnVzZXIuZmlyc3ROYW1lIHx8IHRva2VuRGVjb2RlZC51c2VyLnNvdXJjZUlkXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFuYWx5emVSb3V0ZSgpIHtcclxuICAgIGlmICghdGhpcy5yb3V0ZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZUV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoY2hhbmdlRXZlbnQudXJsKSB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50Um91dGUgPSBjaGFuZ2VFdmVudC51cmw7XHJcbiAgICAgICAgICBjb25zdCBsb2dvdXRSb3V0ZSA9IHRoaXMub3B0aW9ucz8ubG9nb3V0Um91dGU7XHJcbiAgICAgICAgICBjb25zdCBsb2dpblJvdXRlID0gdGhpcy5vcHRpb25zPy5sb2dpblJvdXRlO1xyXG5cclxuICAgICAgICAgIHRoaXMuaXNMb2dvdXRSb3V0ZSA9IGN1cnJlbnRSb3V0ZSA9PT0gbG9nb3V0Um91dGU7XHJcbiAgICAgICAgICB0aGlzLmlzTG9naW5Sb3V0ZSA9IGN1cnJlbnRSb3V0ZSA9PT0gbG9naW5Sb3V0ZTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5pc0xvZ291dFJvdXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aC5sb2dvdXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwidmlzaWJsZVwiPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiIWF1dGgubG9nZ2VkICYmIGJhY2tncm91bmREaXNhYmxlXCJcclxuICAgIGNsYXNzPVwiYmFja2dyb3VuZERpc2FibGVcIlxyXG4gID48L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cIiFhdXRoLmxvZ2dlZCAmJiBzaG93TG9naW5EaXZcIiBjbGFzcz1cImxvZ2luIGNlbnRlci1ibG9ja1wiPlxyXG4gICAgPGgxPnt7ICdpZ28uYXV0aC5jb25uZWN0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvaDE+XHJcblxyXG4gICAgPGlnby1hdXRoLWdvb2dsZVxyXG4gICAgICAqbmdJZj1cIm9wdGlvbnMuZ29vZ2xlICYmIG9wdGlvbnMuZ29vZ2xlLmVuYWJsZWQgIT09IGZhbHNlXCJcclxuICAgICAgKGxvZ2luKT1cIm9uTG9naW4oKVwiXHJcbiAgICA+XHJcbiAgICA8L2lnby1hdXRoLWdvb2dsZT5cclxuICAgIDxpZ28tYXV0aC1taWNyb3NvZnRcclxuICAgICAgKm5nSWY9XCJvcHRpb25zLm1pY3Jvc29mdCAmJiBvcHRpb25zLm1pY3Jvc29mdC5lbmFibGVkICE9PSBmYWxzZVwiXHJcbiAgICAgIChsb2dpbik9XCJvbkxvZ2luKClcIlxyXG4gICAgPlxyXG4gICAgPC9pZ28tYXV0aC1taWNyb3NvZnQ+XHJcbiAgICA8aWdvLWF1dGgtbWljcm9zb2Z0YjJjXHJcbiAgICAgICpuZ0lmPVwib3B0aW9ucy5taWNyb3NvZnRiMmMgJiYgb3B0aW9ucy5taWNyb3NvZnRiMmMuZW5hYmxlZCAhPT0gZmFsc2VcIlxyXG4gICAgICAobG9naW4pPVwib25Mb2dpbigpXCJcclxuICAgID5cclxuICAgIDwvaWdvLWF1dGgtbWljcm9zb2Z0YjJjPlxyXG4gICAgPGlnby1hdXRoLWZhY2Vib29rXHJcbiAgICAgICpuZ0lmPVwib3B0aW9ucy5mYWNlYm9vayAmJiBvcHRpb25zLmZhY2Vib29rLmVuYWJsZWQgIT09IGZhbHNlXCJcclxuICAgICAgKGxvZ2luKT1cIm9uTG9naW4oKVwiXHJcbiAgICA+XHJcbiAgICA8L2lnby1hdXRoLWZhY2Vib29rPlxyXG4gICAgPGlnby1hdXRoLWludGVyblxyXG4gICAgICAqbmdJZj1cIiFvcHRpb25zLmludGVybiB8fCBvcHRpb25zLmludGVybi5lbmFibGVkICE9PSBmYWxzZVwiXHJcbiAgICAgIFthbGxvd0Fub255bW91c109XCJvcHRpb25zLmFsbG93QW5vbnltb3VzXCJcclxuICAgICAgKGxvZ2luKT1cIm9uTG9naW4oKVwiXHJcbiAgICA+XHJcbiAgICA8L2lnby1hdXRoLWludGVybj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJhdXRoLmxvZ2dlZCAmJiBzaG93QWxyZWFkeUNvbm5lY3RlZERpdlwiXHJcbiAgICBjbGFzcz1cImxvZ2luIGNlbnRlci1ibG9ja1wiXHJcbiAgPlxyXG4gICAgPHA+e3sgJ2lnby5hdXRoLndlbGNvbWUnIHwgdHJhbnNsYXRlOiB1c2VyIH19PC9wPlxyXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxvZ291dCgpXCI+XHJcbiAgICAgIHt7ICdpZ28uYXV0aC5zaWduT3V0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJzaG93TG9nb3V0RGl2XCIgY2xhc3M9XCJsb2dpbiBjZW50ZXItYmxvY2tcIj5cclxuICAgIDxwPnt7ICdpZ28uYXV0aC5kZWNvbm5lY3Rpb24nIHwgdHJhbnNsYXRlIH19PC9wPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cIm9wdGlvbnMuaG9tZVJvdXRlXCJcclxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIChjbGljayk9XCJob21lKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyAnaWdvLmF1dGguaG9tZScgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -1,108 +0,0 @@
1
- import { ApplicationRef, ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';
2
- import { ConfigService } from '@igo2/core/config';
3
- import { LanguageService } from '@igo2/core/language';
4
- import { AuthService } from '../shared/auth.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../shared/auth.service";
7
- import * as i2 from "@igo2/core/config";
8
- import * as i3 from "@igo2/core/language";
9
- export class AuthGoogleComponent {
10
- authService;
11
- config;
12
- languageService;
13
- appRef;
14
- options;
15
- login = new EventEmitter();
16
- constructor(authService, config, languageService, appRef) {
17
- this.authService = authService;
18
- this.config = config;
19
- this.languageService = languageService;
20
- this.appRef = appRef;
21
- this.options = this.config.getConfig('auth.google');
22
- if (this.options?.apiKey && this.options?.clientId) {
23
- this.loadSDKGoogle();
24
- this.loadPlatform();
25
- }
26
- else {
27
- console.warn('Google authentification needs "apiKey" and "clientId" options');
28
- }
29
- }
30
- handleSignInClick() {
31
- window.gapi.auth2.getAuthInstance().signIn();
32
- }
33
- handleSignOutClick() {
34
- window.gapi.auth2.getAuthInstance().signOut();
35
- }
36
- handleClientLoad() {
37
- window.gapi.load('client:auth2', () => this.initClient());
38
- }
39
- initClient() {
40
- window.gapi.client
41
- .init({
42
- apiKey: this.options?.apiKey,
43
- clientId: this.options?.clientId,
44
- discoveryDocs: [
45
- 'https://people.googleapis.com/$discovery/rest?version=v1'
46
- ],
47
- scope: 'profile'
48
- })
49
- .then(() => {
50
- this.handleSignOutClick();
51
- this.updateTextButton();
52
- window.gapi.auth2
53
- .getAuthInstance()
54
- .isSignedIn.listen((rep) => {
55
- this.updateSigninStatus(rep);
56
- });
57
- });
58
- }
59
- updateSigninStatus(isSignedIn) {
60
- this.updateTextButton();
61
- if (isSignedIn) {
62
- this.loginGoogle(window.gapi.client.getToken().access_token);
63
- }
64
- }
65
- updateTextButton() {
66
- const btn = document.querySelector('span[id^="not_signed_"]');
67
- if (btn && this.languageService.getLanguage() !== 'en') {
68
- if (btn.innerHTML === 'Sign in with Google') {
69
- btn.innerHTML = this.languageService.translate.instant('igo.auth.google.login');
70
- }
71
- else if (btn.innerHTML === 'Signed in with Google') {
72
- btn.innerHTML = this.languageService.translate.instant('igo.auth.google.logged');
73
- }
74
- }
75
- }
76
- loginGoogle(token) {
77
- this.authService.loginWithToken(token, 'google').subscribe(() => {
78
- this.appRef.tick();
79
- this.login.emit(true);
80
- });
81
- }
82
- loadSDKGoogle() {
83
- const fjs = document.getElementsByTagName('script')[0];
84
- const js = document.createElement('script');
85
- js.id = 'google-jssdk';
86
- js.src = 'https://apis.google.com/js/api.js';
87
- js.onload = () => {
88
- this.handleClientLoad();
89
- };
90
- fjs.parentNode.insertBefore(js, fjs);
91
- }
92
- loadPlatform() {
93
- const fjs = document.getElementsByTagName('script')[0];
94
- const js = document.createElement('script');
95
- js.id = 'google-platform';
96
- js.src = 'https://apis.google.com/js/platform.js';
97
- fjs.parentNode.insertBefore(js, fjs);
98
- }
99
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthGoogleComponent, deps: [{ token: i1.AuthService }, { token: i2.ConfigService }, { token: i3.LanguageService }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Component });
100
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AuthGoogleComponent, isStandalone: true, selector: "igo-auth-google", outputs: { login: "login" }, ngImport: i0, template: "<div\r\n class=\"g-signin2 google-login-button\"\r\n data-height=\"40\"\r\n data-width=\"265\"\r\n data-longtitle=\"true\"\r\n></div>\r\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block}.google-login-button ::ng-deep .abcRioButton{color:#000000de}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
101
- }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthGoogleComponent, decorators: [{
103
- type: Component,
104
- args: [{ selector: 'igo-auth-google', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div\r\n class=\"g-signin2 google-login-button\"\r\n data-height=\"40\"\r\n data-width=\"265\"\r\n data-longtitle=\"true\"\r\n></div>\r\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block}.google-login-button ::ng-deep .abcRioButton{color:#000000de}\n"] }]
105
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.LanguageService }, { type: i0.ApplicationRef }], propDecorators: { login: [{
106
- type: Output
107
- }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1nb29nbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGgtZm9ybS9hdXRoLWdvb2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC1mb3JtL2F1dGgtZ29vZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQVNyRCxNQUFNLE9BQU8sbUJBQW1CO0lBTXBCO0lBQ0E7SUFDQTtJQUNBO0lBUkYsT0FBTyxDQUFxQjtJQUUxQixLQUFLLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7SUFFckUsWUFDVSxXQUF3QixFQUN4QixNQUFxQixFQUNyQixlQUFnQyxFQUNoQyxNQUFzQjtRQUh0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUU5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXBELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7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QUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxFQUFFLENBQUMsRUFBRSxHQUFHLGNBQWMsQ0FBQztRQUN2QixFQUFFLENBQUMsR0FBRyxHQUFHLG1DQUFtQyxDQUFDO1FBQzdDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDO1FBQ0YsR0FBRyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLENBQUM7UUFDMUIsRUFBRSxDQUFDLEdBQUcsR0FBRyx3Q0FBd0MsQ0FBQztRQUNsRCxHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQzt1R0F0R1UsbUJBQW1COzJGQUFuQixtQkFBbUIsd0dDckJoQywrSUFNQTs7MkZEZWEsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUk7dUtBS04sS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBcHBsaWNhdGlvblJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XHJcblxyXG5pbXBvcnQgeyBBdXRoR29vZ2xlT3B0aW9ucyB9IGZyb20gJy4uL3NoYXJlZC9hdXRoLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2F1dGguc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1hdXRoLWdvb2dsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dGgtZ29vZ2xlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdXRoLWdvb2dsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhHb29nbGVDb21wb25lbnQge1xyXG4gIHByaXZhdGUgb3B0aW9ucz86IEF1dGhHb29nbGVPcHRpb25zO1xyXG5cclxuICBAT3V0cHV0KCkgbG9naW46IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoLmdvb2dsZScpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnM/LmFwaUtleSAmJiB0aGlzLm9wdGlvbnM/LmNsaWVudElkKSB7XHJcbiAgICAgIHRoaXMubG9hZFNES0dvb2dsZSgpO1xyXG4gICAgICB0aGlzLmxvYWRQbGF0Zm9ybSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICdHb29nbGUgYXV0aGVudGlmaWNhdGlvbiBuZWVkcyBcImFwaUtleVwiIGFuZCBcImNsaWVudElkXCIgb3B0aW9ucydcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTaWduSW5DbGljaygpIHtcclxuICAgICh3aW5kb3cgYXMgYW55KS5nYXBpLmF1dGgyLmdldEF1dGhJbnN0YW5jZSgpLnNpZ25JbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNpZ25PdXRDbGljaygpIHtcclxuICAgICh3aW5kb3cgYXMgYW55KS5nYXBpLmF1dGgyLmdldEF1dGhJbnN0YW5jZSgpLnNpZ25PdXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ2xpZW50TG9hZCgpIHtcclxuICAgICh3aW5kb3cgYXMgYW55KS5nYXBpLmxvYWQoJ2NsaWVudDphdXRoMicsICgpID0+IHRoaXMuaW5pdENsaWVudCgpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENsaWVudCgpIHtcclxuICAgICh3aW5kb3cgYXMgYW55KS5nYXBpLmNsaWVudFxyXG4gICAgICAuaW5pdCh7XHJcbiAgICAgICAgYXBpS2V5OiB0aGlzLm9wdGlvbnM/LmFwaUtleSxcclxuICAgICAgICBjbGllbnRJZDogdGhpcy5vcHRpb25zPy5jbGllbnRJZCxcclxuICAgICAgICBkaXNjb3ZlcnlEb2NzOiBbXHJcbiAgICAgICAgICAnaHR0cHM6Ly9wZW9wbGUuZ29vZ2xlYXBpcy5jb20vJGRpc2NvdmVyeS9yZXN0P3ZlcnNpb249djEnXHJcbiAgICAgICAgXSxcclxuICAgICAgICBzY29wZTogJ3Byb2ZpbGUnXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVNpZ25PdXRDbGljaygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVGV4dEJ1dHRvbigpO1xyXG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5nYXBpLmF1dGgyXHJcbiAgICAgICAgICAuZ2V0QXV0aEluc3RhbmNlKClcclxuICAgICAgICAgIC5pc1NpZ25lZEluLmxpc3RlbigocmVwKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2lnbmluU3RhdHVzKHJlcCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNpZ25pblN0YXR1cyhpc1NpZ25lZEluKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVRleHRCdXR0b24oKTtcclxuICAgIGlmIChpc1NpZ25lZEluKSB7XHJcbiAgICAgIHRoaXMubG9naW5Hb29nbGUoKHdpbmRvdyBhcyBhbnkpLmdhcGkuY2xpZW50LmdldFRva2VuKCkuYWNjZXNzX3Rva2VuKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVGV4dEJ1dHRvbigpIHtcclxuICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW5baWRePVwibm90X3NpZ25lZF9cIl0nKTtcclxuICAgIGlmIChidG4gJiYgdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKSAhPT0gJ2VuJykge1xyXG4gICAgICBpZiAoYnRuLmlubmVySFRNTCA9PT0gJ1NpZ24gaW4gd2l0aCBHb29nbGUnKSB7XHJcbiAgICAgICAgYnRuLmlubmVySFRNTCA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5hdXRoLmdvb2dsZS5sb2dpbidcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGJ0bi5pbm5lckhUTUwgPT09ICdTaWduZWQgaW4gd2l0aCBHb29nbGUnKSB7XHJcbiAgICAgICAgYnRuLmlubmVySFRNTCA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5hdXRoLmdvb2dsZS5sb2dnZWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2dpbkdvb2dsZSh0b2tlbikge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dpbldpdGhUb2tlbih0b2tlbiwgJ2dvb2dsZScpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcclxuICAgICAgdGhpcy5sb2dpbi5lbWl0KHRydWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRTREtHb29nbGUoKSB7XHJcbiAgICBjb25zdCBmanMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07XHJcbiAgICBjb25zdCBqcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAganMuaWQgPSAnZ29vZ2xlLWpzc2RrJztcclxuICAgIGpzLnNyYyA9ICdodHRwczovL2FwaXMuZ29vZ2xlLmNvbS9qcy9hcGkuanMnO1xyXG4gICAganMub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZUNsaWVudExvYWQoKTtcclxuICAgIH07XHJcbiAgICBmanMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoanMsIGZqcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRQbGF0Zm9ybSgpIHtcclxuICAgIGNvbnN0IGZqcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcclxuICAgIGNvbnN0IGpzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICBqcy5pZCA9ICdnb29nbGUtcGxhdGZvcm0nO1xyXG4gICAganMuc3JjID0gJ2h0dHBzOi8vYXBpcy5nb29nbGUuY29tL2pzL3BsYXRmb3JtLmpzJztcclxuICAgIGZqcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShqcywgZmpzKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiZy1zaWduaW4yIGdvb2dsZS1sb2dpbi1idXR0b25cIlxyXG4gIGRhdGEtaGVpZ2h0PVwiNDBcIlxyXG4gIGRhdGEtd2lkdGg9XCIyNjVcIlxyXG4gIGRhdGEtbG9uZ3RpdGxlPVwidHJ1ZVwiXHJcbj48L2Rpdj5cclxuIl19
@@ -1,84 +0,0 @@
1
- import { NgIf } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { FormsModule, ReactiveFormsModule, UntypedFormBuilder, Validators } from '@angular/forms';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MatFormFieldModule } from '@angular/material/form-field';
6
- import { MatInputModule } from '@angular/material/input';
7
- import { MatProgressSpinner } from '@angular/material/progress-spinner';
8
- import { LanguageService } from '@igo2/core/language';
9
- import { TranslateModule } from '@ngx-translate/core';
10
- import { AuthService } from '../shared/auth.service';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../shared/auth.service";
13
- import * as i2 from "@igo2/core/language";
14
- import * as i3 from "@angular/forms";
15
- import * as i4 from "@angular/material/form-field";
16
- import * as i5 from "@angular/material/input";
17
- import * as i6 from "@angular/material/button";
18
- import * as i7 from "@ngx-translate/core";
19
- export class AuthInternComponent {
20
- auth;
21
- languageService;
22
- get allowAnonymous() {
23
- return this._allowAnonymous;
24
- }
25
- set allowAnonymous(value) {
26
- this._allowAnonymous = value;
27
- }
28
- _allowAnonymous = true;
29
- error = '';
30
- form;
31
- loading = false;
32
- login = new EventEmitter();
33
- constructor(auth, languageService, fb) {
34
- this.auth = auth;
35
- this.languageService = languageService;
36
- this.form = fb.group({
37
- username: ['', Validators.required],
38
- password: ['', Validators.required]
39
- });
40
- }
41
- loginUser(values) {
42
- this.loading = true;
43
- this.auth.login(values.username, values.password).subscribe(() => {
44
- this.login.emit(true);
45
- this.loading = false;
46
- }, (error) => {
47
- try {
48
- this.languageService.translate
49
- .get('igo.auth.error.' + error.error.message)
50
- .subscribe((errorMsg) => (this.error = errorMsg));
51
- }
52
- catch (e) {
53
- this.error = error.error.message;
54
- }
55
- this.loading = false;
56
- });
57
- return false;
58
- }
59
- loginAnonymous() {
60
- this.auth.loginAnonymous().subscribe(() => {
61
- this.login.emit(true);
62
- });
63
- }
64
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthInternComponent, deps: [{ token: i1.AuthService }, { token: i2.LanguageService }, { token: i3.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
65
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AuthInternComponent, isStandalone: true, selector: "igo-auth-intern", inputs: { allowAnonymous: "allowAnonymous" }, outputs: { login: "login" }, ngImport: i0, template: "<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <mat-label>{{ 'igo.auth.user' | translate }}</mat-label>\r\n <input\r\n matInput\r\n required\r\n placeholder=\"{{ 'igo.auth.user' | translate }}\"\r\n formControlName=\"username\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <mat-label>{{ 'igo.auth.password' | translate }}</mat-label>\r\n <input\r\n matInput\r\n required\r\n type=\"password\"\r\n placeholder=\"{{ 'igo.auth.password' | translate }}\"\r\n formControlName=\"password\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <button mat-raised-button type=\"submit\">\r\n {{ 'igo.auth.login' | translate }}\r\n </button>\r\n <button\r\n *ngIf=\"allowAnonymous\"\r\n mat-raised-button\r\n class=\"anonymous\"\r\n type=\"button\"\r\n (click)=\"loginAnonymous()\"\r\n >\r\n {{ 'igo.auth.accessAnonymous' | translate }}\r\n </button>\r\n <div *ngIf=\"error\">\r\n <br />\r\n <font size=\"3\" color=\"red\">{{ error }}</font>\r\n </div>\r\n</form>\r\n\r\n<div *ngIf=\"loading\" class=\"loading-container\">\r\n <mat-spinner [diameter]=\"40\"></mat-spinner>\r\n</div>\r\n", styles: [".full-width{width:100%}.anonymous{margin-left:10px}.loading-container{position:absolute;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000;top:0;left:0;padding:24px;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.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: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
66
- }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthInternComponent, decorators: [{
68
- type: Component,
69
- args: [{ selector: 'igo-auth-intern', changeDetection: ChangeDetectionStrategy.Default, standalone: true, imports: [
70
- FormsModule,
71
- ReactiveFormsModule,
72
- MatFormFieldModule,
73
- MatInputModule,
74
- MatButtonModule,
75
- MatProgressSpinner,
76
- NgIf,
77
- TranslateModule
78
- ], template: "<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <mat-label>{{ 'igo.auth.user' | translate }}</mat-label>\r\n <input\r\n matInput\r\n required\r\n placeholder=\"{{ 'igo.auth.user' | translate }}\"\r\n formControlName=\"username\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <mat-label>{{ 'igo.auth.password' | translate }}</mat-label>\r\n <input\r\n matInput\r\n required\r\n type=\"password\"\r\n placeholder=\"{{ 'igo.auth.password' | translate }}\"\r\n formControlName=\"password\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <button mat-raised-button type=\"submit\">\r\n {{ 'igo.auth.login' | translate }}\r\n </button>\r\n <button\r\n *ngIf=\"allowAnonymous\"\r\n mat-raised-button\r\n class=\"anonymous\"\r\n type=\"button\"\r\n (click)=\"loginAnonymous()\"\r\n >\r\n {{ 'igo.auth.accessAnonymous' | translate }}\r\n </button>\r\n <div *ngIf=\"error\">\r\n <br />\r\n <font size=\"3\" color=\"red\">{{ error }}</font>\r\n </div>\r\n</form>\r\n\r\n<div *ngIf=\"loading\" class=\"loading-container\">\r\n <mat-spinner [diameter]=\"40\"></mat-spinner>\r\n</div>\r\n", styles: [".full-width{width:100%}.anonymous{margin-left:10px}.loading-container{position:absolute;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000;top:0;left:0;padding:24px;box-sizing:border-box}\n"] }]
79
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.LanguageService }, { type: i3.UntypedFormBuilder }], propDecorators: { allowAnonymous: [{
80
- type: Input
81
- }], login: [{
82
- type: Output
83
- }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcm4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGgtZm9ybS9hdXRoLWludGVybi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC1mb3JtL2F1dGgtaW50ZXJuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixrQkFBa0IsRUFFbEIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7O0FBbUJyRCxNQUFNLE9BQU8sbUJBQW1CO0lBaUJyQjtJQUNDO0lBakJWLElBQ0ksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLEtBQWM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUNPLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFeEIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLElBQUksQ0FBbUI7SUFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUViLEtBQUssR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUVyRSxZQUNTLElBQWlCLEVBQ2hCLGVBQWdDLEVBQ3hDLEVBQXNCO1FBRmYsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFHeEMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25CLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ25DLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBVztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQ3pELEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUztxQkFDM0IsR0FBRyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO3FCQUM1QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDbkMsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBcERVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLHNKQzNDaEMsaTFDQStDQSw4UkRkSSxXQUFXLHczQkFDWCxtQkFBbUIsK1VBQ25CLGtCQUFrQiwwU0FDbEIsY0FBYywwV0FDZCxlQUFlLDROQUNmLGtCQUFrQiwrS0FDbEIsSUFBSSw0RkFDSixlQUFlOzsyRkFHTixtQkFBbUI7a0JBakIvQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxPQUFPLGNBQ3BDLElBQUksV0FDUDt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixJQUFJO3dCQUNKLGVBQWU7cUJBQ2hCOytJQUlHLGNBQWM7c0JBRGpCLEtBQUs7Z0JBYUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3Jtc01vZHVsZSxcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG4gIFZhbGlkYXRvcnNcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWF1dGgtaW50ZXJuJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC1pbnRlcm4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F1dGgtaW50ZXJuLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXIsXHJcbiAgICBOZ0lmLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aEludGVybkNvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICBnZXQgYWxsb3dBbm9ueW1vdXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dBbm9ueW1vdXM7XHJcbiAgfVxyXG4gIHNldCBhbGxvd0Fub255bW91cyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fYWxsb3dBbm9ueW1vdXMgPSB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWxsb3dBbm9ueW1vdXMgPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgZXJyb3IgPSAnJztcclxuICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgbG9naW46IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXV0aDogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgZmI6IFVudHlwZWRGb3JtQnVpbGRlclxyXG4gICkge1xyXG4gICAgdGhpcy5mb3JtID0gZmIuZ3JvdXAoe1xyXG4gICAgICB1c2VybmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9naW5Vc2VyKHZhbHVlczogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hdXRoLmxvZ2luKHZhbHVlcy51c2VybmFtZSwgdmFsdWVzLnBhc3N3b3JkKS5zdWJzY3JpYmUoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvZ2luLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAuZ2V0KCdpZ28uYXV0aC5lcnJvci4nICsgZXJyb3IuZXJyb3IubWVzc2FnZSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXJyb3JNc2cpID0+ICh0aGlzLmVycm9yID0gZXJyb3JNc2cpKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yID0gZXJyb3IuZXJyb3IubWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBsb2dpbkFub255bW91cygpIHtcclxuICAgIHRoaXMuYXV0aC5sb2dpbkFub255bW91cygpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9naW4uZW1pdCh0cnVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiByb2xlPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJsb2dpblVzZXIoZm9ybS52YWx1ZSlcIj5cclxuICA8ZGl2PlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uYXV0aC51c2VyJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnaWdvLmF1dGgudXNlcicgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZXJuYW1lXCJcclxuICAgICAgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXY+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5hdXRoLnBhc3N3b3JkJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdpZ28uYXV0aC5wYXNzd29yZCcgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcclxuICAgICAgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAge3sgJ2lnby5hdXRoLmxvZ2luJyB8IHRyYW5zbGF0ZSB9fVxyXG4gIDwvYnV0dG9uPlxyXG4gIDxidXR0b25cclxuICAgICpuZ0lmPVwiYWxsb3dBbm9ueW1vdXNcIlxyXG4gICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgIGNsYXNzPVwiYW5vbnltb3VzXCJcclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgKGNsaWNrKT1cImxvZ2luQW5vbnltb3VzKClcIlxyXG4gID5cclxuICAgIHt7ICdpZ28uYXV0aC5hY2Nlc3NBbm9ueW1vdXMnIHwgdHJhbnNsYXRlIH19XHJcbiAgPC9idXR0b24+XHJcbiAgPGRpdiAqbmdJZj1cImVycm9yXCI+XHJcbiAgICA8YnIgLz5cclxuICAgIDxmb250IHNpemU9XCIzXCIgY29sb3I9XCJyZWRcIj57eyBlcnJvciB9fTwvZm9udD5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XHJcbiAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI0MFwiPjwvbWF0LXNwaW5uZXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,100 +0,0 @@
1
- import { ApplicationRef, ChangeDetectionStrategy, Component, EventEmitter, Inject, Output } from '@angular/core';
2
- import { MatButtonModule } from '@angular/material/button';
3
- import { MatIconModule } from '@angular/material/icon';
4
- import { ConfigService } from '@igo2/core/config';
5
- import { MSAL_GUARD_CONFIG, MsalBroadcastService, MsalService } from '@azure/msal-angular';
6
- import { InteractionRequiredAuthError, InteractionStatus, PublicClientApplication } from '@azure/msal-browser';
7
- import { TranslateModule } from '@ngx-translate/core';
8
- import { Subject } from 'rxjs';
9
- import { filter, takeUntil } from 'rxjs/operators';
10
- import { AuthService } from '../shared/auth.service';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../shared/auth.service";
13
- import * as i2 from "@igo2/core/config";
14
- import * as i3 from "@azure/msal-angular";
15
- import * as i4 from "@angular/material/button";
16
- import * as i5 from "@angular/material/icon";
17
- import * as i6 from "@ngx-translate/core";
18
- export class AuthMicrosoftComponent {
19
- authService;
20
- config;
21
- appRef;
22
- msalService;
23
- msalGuardConfig;
24
- options;
25
- _destroying$ = new Subject();
26
- login = new EventEmitter();
27
- broadcastService;
28
- constructor(authService, config, appRef, msalService, msalGuardConfig) {
29
- this.authService = authService;
30
- this.config = config;
31
- this.appRef = appRef;
32
- this.msalService = msalService;
33
- this.msalGuardConfig = msalGuardConfig;
34
- this.options = this.config.getConfig('auth.microsoft');
35
- this.msalService.instance = new PublicClientApplication({
36
- auth: this.options,
37
- cache: {
38
- cacheLocation: 'sessionStorage'
39
- }
40
- });
41
- this.broadcastService = new MsalBroadcastService(this.msalService.instance, this.msalService);
42
- if (this.options?.clientId) {
43
- this.broadcastService.inProgress$
44
- .pipe(filter((status) => status === InteractionStatus.None), takeUntil(this._destroying$))
45
- .subscribe(() => {
46
- this.checkAccount();
47
- });
48
- }
49
- else {
50
- console.warn('Microsoft authentification needs "clientId" option');
51
- }
52
- }
53
- loginMicrosoft() {
54
- this.msalService
55
- .loginPopup({ ...this.getConf().authRequest })
56
- .subscribe((response) => {
57
- this.msalService.instance.setActiveAccount(response.account);
58
- this.checkAccount();
59
- });
60
- }
61
- checkAccount() {
62
- this.msalService.instance
63
- .acquireTokenSilent(this.getConf().authRequest)
64
- .then((response) => {
65
- const tokenAccess = response.accessToken;
66
- const tokenId = response.idToken;
67
- this.authService
68
- .loginWithToken(tokenAccess, 'microsoft', { tokenId })
69
- .subscribe(() => {
70
- this.appRef.tick();
71
- this.login.emit(true);
72
- });
73
- })
74
- .catch(async (error) => {
75
- if (error instanceof InteractionRequiredAuthError) {
76
- // fallback to interaction when silent call fails
77
- return this.msalService.acquireTokenPopup(this.getConf().authRequest);
78
- }
79
- console.log(error);
80
- })
81
- .catch((error) => {
82
- console.log('Silent token fails');
83
- });
84
- }
85
- getConf() {
86
- return this.msalGuardConfig.filter((conf) => conf.type === 'add')[0];
87
- }
88
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthMicrosoftComponent, deps: [{ token: i1.AuthService }, { token: i2.ConfigService }, { token: i0.ApplicationRef }, { token: i3.MsalService }, { token: MSAL_GUARD_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
89
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AuthMicrosoftComponent, isStandalone: true, selector: "igo-auth-microsoft", outputs: { login: "login" }, ngImport: i0, template: "<button\r\n class=\"microsoft-login-button\"\r\n mat-raised-button\r\n (click)=\"loginMicrosoft()\"\r\n>\r\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\r\n {{ 'igo.auth.microsoft.login' | translate }}\r\n</button>\r\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block;position:relative;top:-15px}:host>button{font-size:15px;height:40px;width:265px}mat-icon{margin-right:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
90
- }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthMicrosoftComponent, decorators: [{
92
- type: Component,
93
- args: [{ selector: 'igo-auth-microsoft', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatButtonModule, MatIconModule, TranslateModule], template: "<button\r\n class=\"microsoft-login-button\"\r\n mat-raised-button\r\n (click)=\"loginMicrosoft()\"\r\n>\r\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\r\n {{ 'igo.auth.microsoft.login' | translate }}\r\n</button>\r\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block;position:relative;top:-15px}:host>button{font-size:15px;height:40px;width:265px}mat-icon{margin-right:10px}\n"] }]
94
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i0.ApplicationRef }, { type: i3.MsalService }, { type: undefined, decorators: [{
95
- type: Inject,
96
- args: [MSAL_GUARD_CONFIG]
97
- }] }], propDecorators: { login: [{
98
- type: Output
99
- }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1taWNyb3NvZnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGgtZm9ybS9hdXRoLW1pY3Jvc29mdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC1mb3JtL2F1dGgtbWljcm9zb2Z0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsNEJBQTRCLEVBQzVCLGlCQUFpQixFQUVqQix1QkFBdUIsRUFFeEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7QUFVckQsTUFBTSxPQUFPLHNCQUFzQjtJQU92QjtJQUNBO0lBQ0E7SUFDQTtJQUVBO0lBWEYsT0FBTyxDQUF3QjtJQUN0QixZQUFZLEdBQUcsSUFBSSxPQUFPLEVB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QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBNEIsQ0FDNUMsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLE9BQU87UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7dUdBbEZVLHNCQUFzQixtSUFXdkIsaUJBQWlCOzJGQVhoQixzQkFBc0IsMkdDNUNuQyxpT0FRQSwwTkRrQ1ksZUFBZSwyTkFBRSxhQUFhLG1MQUFFLGVBQWU7OzJGQUU5QyxzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7OzBCQWF2RCxNQUFNOzJCQUFDLGlCQUFpQjt5Q0FSakIsS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBcHBsaWNhdGlvblJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTVNBTF9HVUFSRF9DT05GSUcsXHJcbiAgTXNhbEJyb2FkY2FzdFNlcnZpY2UsXHJcbiAgTXNhbFNlcnZpY2VcclxufSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBBdXRoZW50aWNhdGlvblJlc3VsdCxcclxuICBJbnRlcmFjdGlvblJlcXVpcmVkQXV0aEVycm9yLFxyXG4gIEludGVyYWN0aW9uU3RhdHVzLFxyXG4gIFBvcHVwUmVxdWVzdCxcclxuICBQdWJsaWNDbGllbnRBcHBsaWNhdGlvbixcclxuICBTaWxlbnRSZXF1ZXN0XHJcbn0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBdXRoTWljcm9zb2Z0T3B0aW9ucyxcclxuICBNU1BNc2FsR3VhcmRDb25maWd1cmF0aW9uXHJcbn0gZnJvbSAnLi4vc2hhcmVkL2F1dGguaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWF1dGgtbWljcm9zb2Z0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC1taWNyb3NvZnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F1dGgtbWljcm9zb2Z0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoTWljcm9zb2Z0Q29tcG9uZW50IHtcclxuICBwcml2YXRlIG9wdGlvbnM/OiBBdXRoTWljcm9zb2Z0T3B0aW9ucztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95aW5nJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGxvZ2luOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlOiBNc2FsQnJvYWRjYXN0U2VydmljZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSBtc2FsU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgICBASW5qZWN0KE1TQUxfR1VBUkRfQ09ORklHKVxyXG4gICAgcHJpdmF0ZSBtc2FsR3VhcmRDb25maWc6IE1TUE1zYWxHdWFyZENvbmZpZ3VyYXRpb25bXVxyXG4gICkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoLm1pY3Jvc29mdCcpO1xyXG5cclxuICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UgPSBuZXcgUHVibGljQ2xpZW50QXBwbGljYXRpb24oe1xyXG4gICAgICBhdXRoOiB0aGlzLm9wdGlvbnMsXHJcbiAgICAgIGNhY2hlOiB7XHJcbiAgICAgICAgY2FjaGVMb2NhdGlvbjogJ3Nlc3Npb25TdG9yYWdlJ1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UgPSBuZXcgTXNhbEJyb2FkY2FzdFNlcnZpY2UoXHJcbiAgICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UsXHJcbiAgICAgIHRoaXMubXNhbFNlcnZpY2VcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uY2xpZW50SWQpIHtcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmluUHJvZ3Jlc3MkXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICAgIChzdGF0dXM6IEludGVyYWN0aW9uU3RhdHVzKSA9PiBzdGF0dXMgPT09IEludGVyYWN0aW9uU3RhdHVzLk5vbmVcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWluZyQpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGVja0FjY291bnQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignTWljcm9zb2Z0IGF1dGhlbnRpZmljYXRpb24gbmVlZHMgXCJjbGllbnRJZFwiIG9wdGlvbicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ2luTWljcm9zb2Z0KCkge1xyXG4gICAgdGhpcy5tc2FsU2VydmljZVxyXG4gICAgICAubG9naW5Qb3B1cCh7IC4uLnRoaXMuZ2V0Q29uZigpLmF1dGhSZXF1ZXN0IH0gYXMgUG9wdXBSZXF1ZXN0KVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogQXV0aGVudGljYXRpb25SZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLnNldEFjdGl2ZUFjY291bnQocmVzcG9uc2UuYWNjb3VudCk7XHJcbiAgICAgICAgdGhpcy5jaGVja0FjY291bnQoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrQWNjb3VudCgpIHtcclxuICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2VcclxuICAgICAgLmFjcXVpcmVUb2tlblNpbGVudCh0aGlzLmdldENvbmYoKS5hdXRoUmVxdWVzdCBhcyBTaWxlbnRSZXF1ZXN0KVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IEF1dGhlbnRpY2F0aW9uUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdG9rZW5BY2Nlc3MgPSByZXNwb25zZS5hY2Nlc3NUb2tlbjtcclxuICAgICAgICBjb25zdCB0b2tlbklkID0gcmVzcG9uc2UuaWRUb2tlbjtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlXHJcbiAgICAgICAgICAubG9naW5XaXRoVG9rZW4odG9rZW5BY2Nlc3MsICdtaWNyb3NvZnQnLCB7IHRva2VuSWQgfSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW4uZW1pdCh0cnVlKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goYXN5bmMgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSW50ZXJhY3Rpb25SZXF1aXJlZEF1dGhFcnJvcikge1xyXG4gICAgICAgICAgLy8gZmFsbGJhY2sgdG8gaW50ZXJhY3Rpb24gd2hlbiBzaWxlbnQgY2FsbCBmYWlsc1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubXNhbFNlcnZpY2UuYWNxdWlyZVRva2VuUG9wdXAoXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29uZigpLmF1dGhSZXF1ZXN0IGFzIFNpbGVudFJlcXVlc3RcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdTaWxlbnQgdG9rZW4gZmFpbHMnKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbmYoKTogTVNQTXNhbEd1YXJkQ29uZmlndXJhdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tc2FsR3VhcmRDb25maWcuZmlsdGVyKChjb25mKSA9PiBjb25mLnR5cGUgPT09ICdhZGQnKVswXTtcclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvblxyXG4gIGNsYXNzPVwibWljcm9zb2Z0LWxvZ2luLWJ1dHRvblwiXHJcbiAgbWF0LXJhaXNlZC1idXR0b25cclxuICAoY2xpY2spPVwibG9naW5NaWNyb3NvZnQoKVwiXHJcbj5cclxuICA8bWF0LWljb24gc3ZnSWNvbj1cIm1pY3Jvc29mdFwiPjwvbWF0LWljb24+XHJcbiAge3sgJ2lnby5hdXRoLm1pY3Jvc29mdC5sb2dpbicgfCB0cmFuc2xhdGUgfX1cclxuPC9idXR0b24+XHJcbiJdfQ==