@igo2/auth 17.0.0-next.2 → 17.0.0-next.3

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 (109) 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 +95 -0
  13. package/esm2022/form/igo2-auth-form.mjs +5 -0
  14. package/esm2022/form/public_api.mjs +9 -0
  15. package/esm2022/form/shared/auth-form.interface.mjs +2 -0
  16. package/esm2022/form/shared/auth-storage.interface.mjs +2 -0
  17. package/esm2022/form/shared/auth-storage.service.mjs +98 -0
  18. package/esm2022/form/shared/index.mjs +4 -0
  19. package/esm2022/google/auth-google/auth-google.component.mjs +108 -0
  20. package/esm2022/google/igo2-auth-google.mjs +5 -0
  21. package/esm2022/google/public_api.mjs +3 -0
  22. package/esm2022/google/shared/auth-google.interface.mjs +2 -0
  23. package/esm2022/google/shared/index.mjs +2 -0
  24. package/esm2022/internal/auth-intern/auth-intern.component.mjs +84 -0
  25. package/esm2022/internal/igo2-auth-internal.mjs +5 -0
  26. package/esm2022/internal/public_api.mjs +2 -0
  27. package/esm2022/lib/shared/auth.interface.mjs +1 -1
  28. package/esm2022/lib/shared/index.mjs +1 -5
  29. package/esm2022/microsoft/auth-microsoft/auth-microsoft.component.mjs +100 -0
  30. package/esm2022/microsoft/auth-microsoft.provider.mjs +92 -0
  31. package/esm2022/microsoft/auth-microsoftb2c/auth-microsoftb2c.component.mjs +98 -0
  32. package/esm2022/microsoft/auth-microsoftb2c/auth-msalBroadcastServiceb2c.service.mjs +47 -0
  33. package/esm2022/microsoft/auth-microsoftb2c/auth-msalServiceb2c.service.mjs +85 -0
  34. package/esm2022/microsoft/igo2-auth-microsoft.mjs +5 -0
  35. package/esm2022/microsoft/public_api.mjs +5 -0
  36. package/esm2022/microsoft/shared/auth-microsoft.interface.mjs +2 -0
  37. package/esm2022/microsoft/shared/index.mjs +2 -0
  38. package/esm2022/public_api.mjs +1 -8
  39. package/{lib/auth-form → facebook/auth-facebook}/auth-facebook.component.d.ts +1 -1
  40. package/facebook/index.d.ts +5 -0
  41. package/facebook/public_api.d.ts +2 -0
  42. package/facebook/shared/auth-facebook.interface.d.ts +4 -0
  43. package/facebook/shared/index.d.ts +1 -0
  44. package/fesm2022/igo2-auth-environment.mjs +4 -0
  45. package/fesm2022/igo2-auth-environment.mjs.map +1 -0
  46. package/fesm2022/igo2-auth-facebook.mjs +70 -0
  47. package/fesm2022/igo2-auth-facebook.mjs.map +1 -0
  48. package/fesm2022/igo2-auth-form.mjs +350 -0
  49. package/fesm2022/igo2-auth-form.mjs.map +1 -0
  50. package/fesm2022/igo2-auth-google.mjs +112 -0
  51. package/fesm2022/igo2-auth-google.mjs.map +1 -0
  52. package/fesm2022/igo2-auth-internal.mjs +89 -0
  53. package/fesm2022/igo2-auth-internal.mjs.map +1 -0
  54. package/fesm2022/igo2-auth-microsoft.mjs +390 -0
  55. package/fesm2022/igo2-auth-microsoft.mjs.map +1 -0
  56. package/fesm2022/igo2-auth.mjs +7 -956
  57. package/fesm2022/igo2-auth.mjs.map +1 -1
  58. package/{lib → form}/auth-form/auth-form.component.d.ts +3 -4
  59. package/form/auth-form.module.d.ts +22 -0
  60. package/form/index.d.ts +5 -0
  61. package/form/public_api.d.ts +5 -0
  62. package/form/shared/auth-form.interface.d.ts +9 -0
  63. package/{lib → form}/shared/auth-storage.service.d.ts +1 -2
  64. package/form/shared/index.d.ts +3 -0
  65. package/{lib/auth-form → google/auth-google}/auth-google.component.d.ts +1 -1
  66. package/google/index.d.ts +5 -0
  67. package/google/public_api.d.ts +2 -0
  68. package/google/shared/auth-google.interface.d.ts +5 -0
  69. package/google/shared/index.d.ts +1 -0
  70. package/{lib/auth-form → internal/auth-intern}/auth-intern.component.d.ts +1 -1
  71. package/internal/index.d.ts +5 -0
  72. package/internal/public_api.d.ts +1 -0
  73. package/lib/shared/auth.interface.d.ts +14 -71
  74. package/lib/shared/index.d.ts +0 -4
  75. package/{lib/auth-form → microsoft/auth-microsoft}/auth-microsoft.component.d.ts +2 -2
  76. package/{lib/shared → microsoft}/auth-microsoft.provider.d.ts +5 -2
  77. package/{lib/auth-form → microsoft/auth-microsoftb2c}/auth-microsoftb2c.component.d.ts +3 -3
  78. package/{lib/shared → microsoft/auth-microsoftb2c}/auth-msalBroadcastServiceb2c.service.d.ts +1 -1
  79. package/microsoft/index.d.ts +5 -0
  80. package/microsoft/public_api.d.ts +4 -0
  81. package/microsoft/shared/auth-microsoft.interface.d.ts +32 -0
  82. package/microsoft/shared/index.d.ts +1 -0
  83. package/package.json +39 -3
  84. package/public_api.d.ts +0 -7
  85. package/src/auth.theme.scss +9 -9
  86. package/esm2022/lib/auth-form/auth-facebook.component.mjs +0 -65
  87. package/esm2022/lib/auth-form/auth-form.component.mjs +0 -170
  88. package/esm2022/lib/auth-form/auth-google.component.mjs +0 -108
  89. package/esm2022/lib/auth-form/auth-intern.component.mjs +0 -84
  90. package/esm2022/lib/auth-form/auth-microsoft.component.mjs +0 -100
  91. package/esm2022/lib/auth-form/auth-microsoftb2c.component.mjs +0 -98
  92. package/esm2022/lib/auth-form/index.mjs +0 -19
  93. package/esm2022/lib/auth.module.mjs +0 -98
  94. package/esm2022/lib/environment/environment.interface.mjs +0 -2
  95. package/esm2022/lib/environment/index.mjs +0 -2
  96. package/esm2022/lib/shared/auth-microsoft.provider.mjs +0 -86
  97. package/esm2022/lib/shared/auth-msalBroadcastServiceb2c.service.mjs +0 -47
  98. package/esm2022/lib/shared/auth-msalServiceb2c.service..mjs +0 -85
  99. package/esm2022/lib/shared/auth-storage.interface.mjs +0 -2
  100. package/esm2022/lib/shared/auth-storage.service.mjs +0 -100
  101. package/esm2022/lib/shared/protected.directive.mjs +0 -21
  102. package/lib/auth-form/index.d.ts +0 -11
  103. package/lib/auth.module.d.ts +0 -24
  104. package/lib/environment/environment.interface.d.ts +0 -5
  105. package/lib/shared/protected.directive.d.ts +0 -8
  106. package/src/lib/auth-form/auth-intern.theme.scss +0 -19
  107. /package/{lib/environment/index.d.ts → environment/public_api.d.ts} +0 -0
  108. /package/{lib → form}/shared/auth-storage.interface.d.ts +0 -0
  109. /package/{lib/shared/auth-msalServiceb2c.service..d.ts → microsoft/auth-microsoftb2c/auth-msalServiceb2c.service.d.ts} +0 -0
@@ -0,0 +1,350 @@
1
+ import * as i2 from '@angular/common/http';
2
+ import { HTTP_INTERCEPTORS } from '@angular/common/http';
3
+ import * as i0 from '@angular/core';
4
+ import { Injectable, EventEmitter, Component, ChangeDetectionStrategy, Optional, Input, Output, NgModule } from '@angular/core';
5
+ import * as i3 from '@igo2/auth';
6
+ import { AuthInterceptor } from '@igo2/auth';
7
+ import * as i1 from '@igo2/core/config';
8
+ import { BaseStorage, StorageScope, StorageService } from '@igo2/core/storage';
9
+ import { NgIf, CommonModule } from '@angular/common';
10
+ import { ReactiveFormsModule } from '@angular/forms';
11
+ import * as i4 from '@angular/material/button';
12
+ import { MatButtonModule } from '@angular/material/button';
13
+ import { MatFormFieldModule } from '@angular/material/form-field';
14
+ import { MatIconModule } from '@angular/material/icon';
15
+ import { MatInputModule } from '@angular/material/input';
16
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
17
+ import { AuthFacebookComponent } from '@igo2/auth/facebook';
18
+ import { AuthGoogleComponent } from '@igo2/auth/google';
19
+ import { AuthInternComponent } from '@igo2/auth/internal';
20
+ import { AuthMicrosoftComponent, AuthMicrosoftb2cComponent, provideAuthMicrosoft } from '@igo2/auth/microsoft';
21
+ import { IgoLanguageModule } from '@igo2/core/language';
22
+ import { MsalModule } from '@azure/msal-angular';
23
+ import * as i3$1 from '@angular/router';
24
+ import { NavigationStart } from '@angular/router';
25
+ import * as i5 from '@ngx-translate/core';
26
+ import { TranslateModule } from '@ngx-translate/core';
27
+ import { filter } from 'rxjs/operators';
28
+
29
+ class AuthStorageService extends BaseStorage {
30
+ http;
31
+ authService;
32
+ tokenService;
33
+ constructor(config, http, authService, tokenService) {
34
+ super(config);
35
+ this.http = http;
36
+ this.authService = authService;
37
+ this.tokenService = tokenService;
38
+ this.authService.authenticate$.subscribe((isAuthenticated) => {
39
+ if (isAuthenticated && this.options.url) {
40
+ this.http
41
+ .get(this.options.url)
42
+ .subscribe((userIgo) => {
43
+ if (userIgo && userIgo.preference) {
44
+ for (const key of Object.keys(userIgo.preference)) {
45
+ const value = userIgo.preference[key];
46
+ super.set(key, value);
47
+ }
48
+ }
49
+ });
50
+ }
51
+ });
52
+ }
53
+ set(key, value, scope = StorageScope.LOCAL) {
54
+ if (scope === StorageScope.LOCAL &&
55
+ this.authService.authenticated &&
56
+ this.options.url) {
57
+ const preference = {};
58
+ preference[key] = value;
59
+ this.http.patch(this.options.url, { preference }).subscribe();
60
+ }
61
+ super.set(key, value, scope);
62
+ }
63
+ remove(key, scope = StorageScope.LOCAL) {
64
+ if (scope === StorageScope.LOCAL &&
65
+ this.authService.authenticated &&
66
+ this.options.url) {
67
+ const preference = {};
68
+ preference[key] = undefined;
69
+ this.http.patch(this.options.url, { preference }).subscribe();
70
+ }
71
+ super.remove(key, scope);
72
+ }
73
+ clear(scope = StorageScope.LOCAL) {
74
+ if (scope === StorageScope.LOCAL &&
75
+ this.authService.authenticated &&
76
+ this.options.url) {
77
+ this.http
78
+ .patch(this.options.url, { preference: {} }, {
79
+ params: {
80
+ mergePreference: 'false'
81
+ }
82
+ })
83
+ .subscribe();
84
+ }
85
+ let token;
86
+ if (scope === StorageScope.LOCAL) {
87
+ token = this.tokenService.get();
88
+ }
89
+ super.clear(scope);
90
+ if (token) {
91
+ this.tokenService.set(token);
92
+ }
93
+ if (scope === StorageScope.LOCAL &&
94
+ this.authService.authenticated &&
95
+ this.options.url) {
96
+ this.http
97
+ .get(this.options.url)
98
+ .subscribe((userIgo) => {
99
+ if (userIgo && userIgo.preference) {
100
+ for (const key of Object.keys(userIgo.preference)) {
101
+ const value = userIgo.preference[key];
102
+ super.set(key, value);
103
+ }
104
+ }
105
+ });
106
+ }
107
+ }
108
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthStorageService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }, { token: i3.AuthService }, { token: i3.TokenService }], target: i0.ɵɵFactoryTarget.Injectable });
109
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthStorageService, providedIn: 'root' });
110
+ }
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthStorageService, decorators: [{
112
+ type: Injectable,
113
+ args: [{
114
+ providedIn: 'root'
115
+ }]
116
+ }], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.HttpClient }, { type: i3.AuthService }, { type: i3.TokenService }] });
117
+
118
+ class AuthFormComponent {
119
+ auth;
120
+ config;
121
+ router;
122
+ get backgroundDisable() {
123
+ if (this.isLogoutRoute || this.isLogoutRoute) {
124
+ return false;
125
+ }
126
+ return this._backgroundDisable;
127
+ }
128
+ set backgroundDisable(value) {
129
+ this._backgroundDisable = value.toString() === 'true';
130
+ }
131
+ _backgroundDisable = true;
132
+ get hasAlreadyConnectedDiv() {
133
+ return this._hasAlreadyConnectedDiv;
134
+ }
135
+ set hasAlreadyConnectedDiv(value) {
136
+ this._hasAlreadyConnectedDiv = value.toString() === 'true';
137
+ }
138
+ _hasAlreadyConnectedDiv = true;
139
+ get hasLogoutDiv() {
140
+ return this._hasLogoutDiv;
141
+ }
142
+ set hasLogoutDiv(value) {
143
+ this._hasLogoutDiv = value.toString() === 'true';
144
+ }
145
+ _hasLogoutDiv = true;
146
+ get showAlreadyConnectedDiv() {
147
+ if (this.isLogoutRoute) {
148
+ return this.hasAlreadyConnectedDiv;
149
+ }
150
+ return this._showAlreadyConnectedDiv;
151
+ }
152
+ set showAlreadyConnectedDiv(value) {
153
+ this._showAlreadyConnectedDiv = value.toString() === 'true';
154
+ }
155
+ _showAlreadyConnectedDiv = false;
156
+ get showLogoutDiv() {
157
+ if (this.isLogoutRoute) {
158
+ return this.hasLogoutDiv;
159
+ }
160
+ return this._showLogoutDiv;
161
+ }
162
+ set showLogoutDiv(value) {
163
+ this._showLogoutDiv = value.toString() === 'true';
164
+ }
165
+ _showLogoutDiv = false;
166
+ get showLoginDiv() {
167
+ if (!this.isLogoutRoute) {
168
+ return true;
169
+ }
170
+ }
171
+ login = new EventEmitter();
172
+ options;
173
+ user;
174
+ visible = true;
175
+ isLogoutRoute;
176
+ constructor(auth, config, router) {
177
+ this.auth = auth;
178
+ this.config = config;
179
+ this.router = router;
180
+ this.options = this.config.getConfig('auth');
181
+ this.visible = Object.getOwnPropertyNames(this.options).length !== 0;
182
+ }
183
+ ngOnInit() {
184
+ this.analyzeRoute();
185
+ this.getName();
186
+ }
187
+ onLogin() {
188
+ this.auth.goToRedirectUrl();
189
+ this.getName();
190
+ this.login.emit(true);
191
+ }
192
+ logout() {
193
+ this.auth.logout().subscribe(() => {
194
+ this.user = undefined;
195
+ if (this.router) {
196
+ if (this.options?.logoutRoute) {
197
+ this.router.navigate([this.options?.logoutRoute]);
198
+ }
199
+ else if (this.options?.homeRoute) {
200
+ this.router.navigate([this.options?.homeRoute]);
201
+ }
202
+ }
203
+ });
204
+ }
205
+ home() {
206
+ if (this.router && this.options?.homeRoute) {
207
+ this.router.navigate([this.options?.homeRoute]);
208
+ }
209
+ }
210
+ getName() {
211
+ const tokenDecoded = this.auth.decodeToken();
212
+ if (tokenDecoded) {
213
+ this.user = {
214
+ name: tokenDecoded.user.firstName || tokenDecoded.user.sourceId
215
+ };
216
+ }
217
+ }
218
+ analyzeRoute() {
219
+ if (!this.router) {
220
+ return;
221
+ }
222
+ this.router.events
223
+ .pipe(filter((event) => event instanceof NavigationStart))
224
+ .subscribe((changeEvent) => {
225
+ if (changeEvent.url) {
226
+ const currentRoute = changeEvent.url;
227
+ const logoutRoute = this.options?.logoutRoute;
228
+ this.isLogoutRoute = currentRoute === logoutRoute;
229
+ if (this.isLogoutRoute) {
230
+ this.auth.logout();
231
+ }
232
+ }
233
+ });
234
+ }
235
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthFormComponent, deps: [{ token: i3.AuthService }, { token: i1.ConfigService }, { token: i3$1.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component });
236
+ 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\">\n <div\n *ngIf=\"!auth.logged && backgroundDisable\"\n class=\"backgroundDisable\"\n ></div>\n\n <div *ngIf=\"!auth.logged && showLoginDiv\" class=\"login center-block\">\n <h1>{{ 'igo.auth.connection' | translate }}</h1>\n\n <igo-auth-google\n *ngIf=\"options.google && options.google.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-google>\n\n <igo-auth-microsoft\n *ngIf=\"options.microsoft && options.microsoft.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-microsoft>\n\n <igo-auth-microsoftb2c\n *ngIf=\"options.microsoftb2c && options.microsoftb2c.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-microsoftb2c>\n\n <igo-auth-facebook\n *ngIf=\"options.facebook && options.facebook.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-facebook>\n\n <igo-auth-intern\n *ngIf=\"!options.intern || options.intern.enabled !== false\"\n [allowAnonymous]=\"options.allowAnonymous\"\n (login)=\"onLogin()\"\n >\n </igo-auth-intern>\n </div>\n\n <div\n *ngIf=\"auth.logged && showAlreadyConnectedDiv\"\n class=\"login center-block\"\n >\n <p>{{ 'igo.auth.welcome' | translate: user }}</p>\n <button mat-raised-button type=\"button\" (click)=\"logout()\">\n {{ 'igo.auth.signOut' | translate }}\n </button>\n </div>\n\n <div *ngIf=\"showLogoutDiv\" class=\"login center-block\">\n <p>{{ 'igo.auth.deconnection' | translate }}</p>\n <button\n *ngIf=\"options.homeRoute\"\n mat-raised-button\n type=\"button\"\n (click)=\"home()\"\n >\n {{ 'igo.auth.home' | translate }}\n </button>\n </div>\n</div>\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 });
237
+ }
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthFormComponent, decorators: [{
239
+ type: Component,
240
+ args: [{ selector: 'igo-auth-form', changeDetection: ChangeDetectionStrategy.Default, standalone: true, imports: [
241
+ NgIf,
242
+ AuthGoogleComponent,
243
+ AuthMicrosoftComponent,
244
+ AuthMicrosoftb2cComponent,
245
+ AuthFacebookComponent,
246
+ AuthInternComponent,
247
+ MatButtonModule,
248
+ TranslateModule
249
+ ], template: "<div *ngIf=\"visible\">\n <div\n *ngIf=\"!auth.logged && backgroundDisable\"\n class=\"backgroundDisable\"\n ></div>\n\n <div *ngIf=\"!auth.logged && showLoginDiv\" class=\"login center-block\">\n <h1>{{ 'igo.auth.connection' | translate }}</h1>\n\n <igo-auth-google\n *ngIf=\"options.google && options.google.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-google>\n\n <igo-auth-microsoft\n *ngIf=\"options.microsoft && options.microsoft.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-microsoft>\n\n <igo-auth-microsoftb2c\n *ngIf=\"options.microsoftb2c && options.microsoftb2c.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-microsoftb2c>\n\n <igo-auth-facebook\n *ngIf=\"options.facebook && options.facebook.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-facebook>\n\n <igo-auth-intern\n *ngIf=\"!options.intern || options.intern.enabled !== false\"\n [allowAnonymous]=\"options.allowAnonymous\"\n (login)=\"onLogin()\"\n >\n </igo-auth-intern>\n </div>\n\n <div\n *ngIf=\"auth.logged && showAlreadyConnectedDiv\"\n class=\"login center-block\"\n >\n <p>{{ 'igo.auth.welcome' | translate: user }}</p>\n <button mat-raised-button type=\"button\" (click)=\"logout()\">\n {{ 'igo.auth.signOut' | translate }}\n </button>\n </div>\n\n <div *ngIf=\"showLogoutDiv\" class=\"login center-block\">\n <p>{{ 'igo.auth.deconnection' | translate }}</p>\n <button\n *ngIf=\"options.homeRoute\"\n mat-raised-button\n type=\"button\"\n (click)=\"home()\"\n >\n {{ 'igo.auth.home' | translate }}\n </button>\n </div>\n</div>\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"] }]
250
+ }], ctorParameters: () => [{ type: i3.AuthService }, { type: i1.ConfigService }, { type: i3$1.Router, decorators: [{
251
+ type: Optional
252
+ }] }], propDecorators: { backgroundDisable: [{
253
+ type: Input
254
+ }], hasAlreadyConnectedDiv: [{
255
+ type: Input
256
+ }], hasLogoutDiv: [{
257
+ type: Input
258
+ }], showAlreadyConnectedDiv: [{
259
+ type: Input
260
+ }], showLogoutDiv: [{
261
+ type: Input
262
+ }], login: [{
263
+ type: Output
264
+ }] } });
265
+
266
+ class IgoAuthFormModule {
267
+ static forRoot() {
268
+ return {
269
+ ngModule: IgoAuthFormModule,
270
+ providers: [
271
+ {
272
+ provide: HTTP_INTERCEPTORS,
273
+ useClass: AuthInterceptor,
274
+ multi: true
275
+ },
276
+ {
277
+ provide: StorageService,
278
+ useClass: AuthStorageService
279
+ },
280
+ ...provideAuthMicrosoft('add'),
281
+ ...provideAuthMicrosoft('b2c')
282
+ ]
283
+ };
284
+ }
285
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoAuthFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
286
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IgoAuthFormModule, imports: [CommonModule,
287
+ ReactiveFormsModule,
288
+ MatFormFieldModule,
289
+ MatInputModule,
290
+ MatIconModule,
291
+ MatProgressSpinnerModule,
292
+ MatButtonModule,
293
+ IgoLanguageModule,
294
+ MsalModule,
295
+ AuthFormComponent,
296
+ AuthGoogleComponent,
297
+ AuthInternComponent,
298
+ AuthFacebookComponent,
299
+ AuthMicrosoftComponent,
300
+ AuthMicrosoftb2cComponent], exports: [AuthFormComponent] });
301
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoAuthFormModule, imports: [CommonModule,
302
+ ReactiveFormsModule,
303
+ MatFormFieldModule,
304
+ MatInputModule,
305
+ MatIconModule,
306
+ MatProgressSpinnerModule,
307
+ MatButtonModule,
308
+ IgoLanguageModule,
309
+ MsalModule,
310
+ AuthFormComponent,
311
+ AuthGoogleComponent,
312
+ AuthInternComponent,
313
+ AuthFacebookComponent,
314
+ AuthMicrosoftComponent,
315
+ AuthMicrosoftb2cComponent] });
316
+ }
317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoAuthFormModule, decorators: [{
318
+ type: NgModule,
319
+ args: [{
320
+ imports: [
321
+ CommonModule,
322
+ ReactiveFormsModule,
323
+ MatFormFieldModule,
324
+ MatInputModule,
325
+ MatIconModule,
326
+ MatProgressSpinnerModule,
327
+ MatButtonModule,
328
+ IgoLanguageModule,
329
+ MsalModule,
330
+ AuthFormComponent,
331
+ AuthGoogleComponent,
332
+ AuthInternComponent,
333
+ AuthFacebookComponent,
334
+ AuthMicrosoftComponent,
335
+ AuthMicrosoftb2cComponent
336
+ ],
337
+ exports: [AuthFormComponent]
338
+ }]
339
+ }] });
340
+
341
+ /*
342
+ * Public API Surface of auth
343
+ */
344
+
345
+ /**
346
+ * Generated bundle index. Do not edit.
347
+ */
348
+
349
+ export { AuthFormComponent, AuthStorageService, IgoAuthFormModule };
350
+ //# sourceMappingURL=igo2-auth-form.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"igo2-auth-form.mjs","sources":["../../../packages/auth/form/src/shared/auth-storage.service.ts","../../../packages/auth/form/src/auth-form/auth-form.component.ts","../../../packages/auth/form/src/auth-form/auth-form.component.html","../../../packages/auth/form/src/auth-form.module.ts","../../../packages/auth/form/src/public_api.ts","../../../packages/auth/form/src/igo2-auth-form.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { AuthService, TokenService } from '@igo2/auth';\nimport { ConfigService } from '@igo2/core/config';\nimport { BaseStorage, StorageScope } from '@igo2/core/storage';\n\nimport { AuthStorageOptions } from './auth-storage.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthStorageService extends BaseStorage<AuthStorageOptions> {\n constructor(\n config: ConfigService,\n private http: HttpClient,\n private authService: AuthService,\n private tokenService: TokenService\n ) {\n super(config);\n\n this.authService.authenticate$.subscribe((isAuthenticated) => {\n if (isAuthenticated && this.options.url) {\n this.http\n .get(this.options.url)\n .subscribe((userIgo: { preference: object }) => {\n if (userIgo && userIgo.preference) {\n for (const key of Object.keys(userIgo.preference)) {\n const value = userIgo.preference[key];\n super.set(key, value);\n }\n }\n });\n }\n });\n }\n\n set(\n key: string,\n value: string | object | boolean | number,\n scope: StorageScope = StorageScope.LOCAL\n ) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n const preference = {};\n preference[key] = value;\n this.http.patch(this.options.url, { preference }).subscribe();\n }\n super.set(key, value, scope);\n }\n\n remove(key: string, scope: StorageScope = StorageScope.LOCAL) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n const preference = {};\n preference[key] = undefined;\n this.http.patch(this.options.url, { preference }).subscribe();\n }\n super.remove(key, scope);\n }\n\n clear(scope: StorageScope = StorageScope.LOCAL) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n this.http\n .patch(\n this.options.url,\n { preference: {} },\n {\n params: {\n mergePreference: 'false'\n }\n }\n )\n .subscribe();\n }\n\n let token: string;\n if (scope === StorageScope.LOCAL) {\n token = this.tokenService.get();\n }\n\n super.clear(scope);\n\n if (token) {\n this.tokenService.set(token);\n }\n\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n this.http\n .get(this.options.url)\n .subscribe((userIgo: { preference: object }) => {\n if (userIgo && userIgo.preference) {\n for (const key of Object.keys(userIgo.preference)) {\n const value = userIgo.preference[key];\n super.set(key, value);\n }\n }\n });\n }\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavigationStart, Router } from '@angular/router';\n\nimport { AuthOptions, AuthService } from '@igo2/auth';\nimport { AuthFacebookComponent } from '@igo2/auth/facebook';\nimport { AuthGoogleComponent } from '@igo2/auth/google';\nimport { AuthInternComponent } from '@igo2/auth/internal';\nimport {\n AuthMicrosoftComponent,\n AuthMicrosoftb2cComponent\n} from '@igo2/auth/microsoft';\nimport { ConfigService } from '@igo2/core/config';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { filter } from 'rxjs/operators';\n\nimport { AuthFormOptions } from '../shared';\n\n@Component({\n selector: 'igo-auth-form',\n templateUrl: './auth-form.component.html',\n styleUrls: ['./auth-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [\n NgIf,\n AuthGoogleComponent,\n AuthMicrosoftComponent,\n AuthMicrosoftb2cComponent,\n AuthFacebookComponent,\n AuthInternComponent,\n MatButtonModule,\n TranslateModule\n ]\n})\nexport class AuthFormComponent implements OnInit {\n @Input()\n get backgroundDisable(): boolean {\n if (this.isLogoutRoute || this.isLogoutRoute) {\n return false;\n }\n return this._backgroundDisable;\n }\n set backgroundDisable(value: boolean) {\n this._backgroundDisable = value.toString() === 'true';\n }\n private _backgroundDisable = true;\n\n @Input()\n get hasAlreadyConnectedDiv(): boolean {\n return this._hasAlreadyConnectedDiv;\n }\n set hasAlreadyConnectedDiv(value: boolean) {\n this._hasAlreadyConnectedDiv = value.toString() === 'true';\n }\n private _hasAlreadyConnectedDiv = true;\n\n @Input()\n get hasLogoutDiv(): boolean {\n return this._hasLogoutDiv;\n }\n set hasLogoutDiv(value: boolean) {\n this._hasLogoutDiv = value.toString() === 'true';\n }\n private _hasLogoutDiv = true;\n\n @Input()\n get showAlreadyConnectedDiv(): boolean {\n if (this.isLogoutRoute) {\n return this.hasAlreadyConnectedDiv;\n }\n return this._showAlreadyConnectedDiv;\n }\n set showAlreadyConnectedDiv(value: boolean) {\n this._showAlreadyConnectedDiv = value.toString() === 'true';\n }\n private _showAlreadyConnectedDiv = false;\n\n @Input()\n get showLogoutDiv(): boolean {\n if (this.isLogoutRoute) {\n return this.hasLogoutDiv;\n }\n return this._showLogoutDiv;\n }\n set showLogoutDiv(value: boolean) {\n this._showLogoutDiv = value.toString() === 'true';\n }\n private _showLogoutDiv = false;\n\n get showLoginDiv(): boolean {\n if (!this.isLogoutRoute) {\n return true;\n }\n }\n\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n public options?: AuthOptions & AuthFormOptions;\n public user;\n\n public visible = true;\n\n private isLogoutRoute: boolean;\n\n constructor(\n public auth: AuthService,\n private config: ConfigService,\n @Optional() private router: Router\n ) {\n this.options = this.config.getConfig('auth');\n this.visible = Object.getOwnPropertyNames(this.options).length !== 0;\n }\n\n public ngOnInit() {\n this.analyzeRoute();\n this.getName();\n }\n\n public onLogin() {\n this.auth.goToRedirectUrl();\n this.getName();\n this.login.emit(true);\n }\n\n public logout() {\n this.auth.logout().subscribe(() => {\n this.user = undefined;\n if (this.router) {\n if (this.options?.logoutRoute) {\n this.router.navigate([this.options?.logoutRoute]);\n } else if (this.options?.homeRoute) {\n this.router.navigate([this.options?.homeRoute]);\n }\n }\n });\n }\n\n public home() {\n if (this.router && this.options?.homeRoute) {\n this.router.navigate([this.options?.homeRoute]);\n }\n }\n\n private getName() {\n const tokenDecoded = this.auth.decodeToken();\n if (tokenDecoded) {\n this.user = {\n name: tokenDecoded.user.firstName || tokenDecoded.user.sourceId\n };\n }\n }\n\n private analyzeRoute() {\n if (!this.router) {\n return;\n }\n\n this.router.events\n .pipe(filter((event) => event instanceof NavigationStart))\n .subscribe((changeEvent: any) => {\n if (changeEvent.url) {\n const currentRoute = changeEvent.url;\n const logoutRoute = this.options?.logoutRoute;\n\n this.isLogoutRoute = currentRoute === logoutRoute;\n\n if (this.isLogoutRoute) {\n this.auth.logout();\n }\n }\n });\n }\n}\n","<div *ngIf=\"visible\">\n <div\n *ngIf=\"!auth.logged && backgroundDisable\"\n class=\"backgroundDisable\"\n ></div>\n\n <div *ngIf=\"!auth.logged && showLoginDiv\" class=\"login center-block\">\n <h1>{{ 'igo.auth.connection' | translate }}</h1>\n\n <igo-auth-google\n *ngIf=\"options.google && options.google.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-google>\n\n <igo-auth-microsoft\n *ngIf=\"options.microsoft && options.microsoft.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-microsoft>\n\n <igo-auth-microsoftb2c\n *ngIf=\"options.microsoftb2c && options.microsoftb2c.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-microsoftb2c>\n\n <igo-auth-facebook\n *ngIf=\"options.facebook && options.facebook.enabled !== false\"\n (login)=\"onLogin()\"\n >\n </igo-auth-facebook>\n\n <igo-auth-intern\n *ngIf=\"!options.intern || options.intern.enabled !== false\"\n [allowAnonymous]=\"options.allowAnonymous\"\n (login)=\"onLogin()\"\n >\n </igo-auth-intern>\n </div>\n\n <div\n *ngIf=\"auth.logged && showAlreadyConnectedDiv\"\n class=\"login center-block\"\n >\n <p>{{ 'igo.auth.welcome' | translate: user }}</p>\n <button mat-raised-button type=\"button\" (click)=\"logout()\">\n {{ 'igo.auth.signOut' | translate }}\n </button>\n </div>\n\n <div *ngIf=\"showLogoutDiv\" class=\"login center-block\">\n <p>{{ 'igo.auth.deconnection' | translate }}</p>\n <button\n *ngIf=\"options.homeRoute\"\n mat-raised-button\n type=\"button\"\n (click)=\"home()\"\n >\n {{ 'igo.auth.home' | translate }}\n </button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { AuthInterceptor } from '@igo2/auth';\nimport { AuthFacebookComponent } from '@igo2/auth/facebook';\nimport { AuthGoogleComponent } from '@igo2/auth/google';\nimport { AuthInternComponent } from '@igo2/auth/internal';\nimport {\n AuthMicrosoftComponent,\n AuthMicrosoftb2cComponent,\n provideAuthMicrosoft\n} from '@igo2/auth/microsoft';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { StorageService } from '@igo2/core/storage';\n\nimport { MsalModule } from '@azure/msal-angular';\n\nimport { AuthFormComponent } from './auth-form/auth-form.component';\nimport { AuthStorageService } from './shared/auth-storage.service';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n IgoLanguageModule,\n MsalModule,\n AuthFormComponent,\n AuthGoogleComponent,\n AuthInternComponent,\n AuthFacebookComponent,\n AuthMicrosoftComponent,\n AuthMicrosoftb2cComponent\n ],\n exports: [AuthFormComponent]\n})\nexport class IgoAuthFormModule {\n static forRoot(): ModuleWithProviders<IgoAuthFormModule> {\n return {\n ngModule: IgoAuthFormModule,\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n {\n provide: StorageService,\n useClass: AuthStorageService\n },\n ...provideAuthMicrosoft('add'),\n ...provideAuthMicrosoft('b2c')\n ]\n };\n }\n}\n","/*\n * Public API Surface of auth\n */\n\nexport * from './shared/auth-form.interface';\nexport * from './shared/auth-storage.interface';\nexport * from './shared/auth-storage.service';\nexport * from './auth-form.module';\n\nexport * from './auth-form/auth-form.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3"],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Component, ChangeDetectionStrategy, Output } from '@angular/core';
3
+ import * as i1 from '@igo2/auth';
4
+ import * as i2 from '@igo2/core/config';
5
+ import * as i3 from '@igo2/core/language';
6
+
7
+ class AuthGoogleComponent {
8
+ authService;
9
+ config;
10
+ languageService;
11
+ appRef;
12
+ options;
13
+ login = new EventEmitter();
14
+ constructor(authService, config, languageService, appRef) {
15
+ this.authService = authService;
16
+ this.config = config;
17
+ this.languageService = languageService;
18
+ this.appRef = appRef;
19
+ this.options = this.config.getConfig('auth.google');
20
+ if (this.options?.apiKey && this.options?.clientId) {
21
+ this.loadSDKGoogle();
22
+ this.loadPlatform();
23
+ }
24
+ else {
25
+ console.warn('Google authentification needs "apiKey" and "clientId" options');
26
+ }
27
+ }
28
+ handleSignInClick() {
29
+ window.gapi.auth2.getAuthInstance().signIn();
30
+ }
31
+ handleSignOutClick() {
32
+ window.gapi.auth2.getAuthInstance().signOut();
33
+ }
34
+ handleClientLoad() {
35
+ window.gapi.load('client:auth2', () => this.initClient());
36
+ }
37
+ initClient() {
38
+ window.gapi.client
39
+ .init({
40
+ apiKey: this.options?.apiKey,
41
+ clientId: this.options?.clientId,
42
+ discoveryDocs: [
43
+ 'https://people.googleapis.com/$discovery/rest?version=v1'
44
+ ],
45
+ scope: 'profile'
46
+ })
47
+ .then(() => {
48
+ this.handleSignOutClick();
49
+ this.updateTextButton();
50
+ window.gapi.auth2
51
+ .getAuthInstance()
52
+ .isSignedIn.listen((rep) => {
53
+ this.updateSigninStatus(rep);
54
+ });
55
+ });
56
+ }
57
+ updateSigninStatus(isSignedIn) {
58
+ this.updateTextButton();
59
+ if (isSignedIn) {
60
+ this.loginGoogle(window.gapi.client.getToken().access_token);
61
+ }
62
+ }
63
+ updateTextButton() {
64
+ const btn = document.querySelector('span[id^="not_signed_"]');
65
+ if (btn && this.languageService.getLanguage() !== 'en') {
66
+ if (btn.innerHTML === 'Sign in with Google') {
67
+ btn.innerHTML = this.languageService.translate.instant('igo.auth.google.login');
68
+ }
69
+ else if (btn.innerHTML === 'Signed in with Google') {
70
+ btn.innerHTML = this.languageService.translate.instant('igo.auth.google.logged');
71
+ }
72
+ }
73
+ }
74
+ loginGoogle(token) {
75
+ this.authService.loginWithToken(token, 'google').subscribe(() => {
76
+ this.appRef.tick();
77
+ this.login.emit(true);
78
+ });
79
+ }
80
+ loadSDKGoogle() {
81
+ const fjs = document.getElementsByTagName('script')[0];
82
+ const js = document.createElement('script');
83
+ js.id = 'google-jssdk';
84
+ js.src = 'https://apis.google.com/js/api.js';
85
+ js.onload = () => {
86
+ this.handleClientLoad();
87
+ };
88
+ fjs.parentNode.insertBefore(js, fjs);
89
+ }
90
+ loadPlatform() {
91
+ const fjs = document.getElementsByTagName('script')[0];
92
+ const js = document.createElement('script');
93
+ js.id = 'google-platform';
94
+ js.src = 'https://apis.google.com/js/platform.js';
95
+ fjs.parentNode.insertBefore(js, fjs);
96
+ }
97
+ 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 });
98
+ 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\n class=\"g-signin2 google-login-button\"\n data-height=\"40\"\n data-width=\"265\"\n data-longtitle=\"true\"\n></div>\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block}.google-login-button ::ng-deep .abcRioButton{color:#000000de}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthGoogleComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ selector: 'igo-auth-google', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div\n class=\"g-signin2 google-login-button\"\n data-height=\"40\"\n data-width=\"265\"\n data-longtitle=\"true\"\n></div>\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block}.google-login-button ::ng-deep .abcRioButton{color:#000000de}\n"] }]
103
+ }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.LanguageService }, { type: i0.ApplicationRef }], propDecorators: { login: [{
104
+ type: Output
105
+ }] } });
106
+
107
+ /**
108
+ * Generated bundle index. Do not edit.
109
+ */
110
+
111
+ export { AuthGoogleComponent };
112
+ //# sourceMappingURL=igo2-auth-google.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"igo2-auth-google.mjs","sources":["../../../packages/auth/google/src/auth-google/auth-google.component.ts","../../../packages/auth/google/src/auth-google/auth-google.component.html","../../../packages/auth/google/src/igo2-auth-google.ts"],"sourcesContent":["import {\n ApplicationRef,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Output\n} from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\n\nimport { AuthGoogleOptions } from '../shared/auth-google.interface';\n\n@Component({\n selector: 'igo-auth-google',\n templateUrl: './auth-google.component.html',\n styleUrls: ['./auth-google.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class AuthGoogleComponent {\n private options?: AuthGoogleOptions;\n\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private languageService: LanguageService,\n private appRef: ApplicationRef\n ) {\n this.options = this.config.getConfig('auth.google');\n\n if (this.options?.apiKey && this.options?.clientId) {\n this.loadSDKGoogle();\n this.loadPlatform();\n } else {\n console.warn(\n 'Google authentification needs \"apiKey\" and \"clientId\" options'\n );\n }\n }\n\n public handleSignInClick() {\n (window as any).gapi.auth2.getAuthInstance().signIn();\n }\n\n public handleSignOutClick() {\n (window as any).gapi.auth2.getAuthInstance().signOut();\n }\n\n private handleClientLoad() {\n (window as any).gapi.load('client:auth2', () => this.initClient());\n }\n\n private initClient() {\n (window as any).gapi.client\n .init({\n apiKey: this.options?.apiKey,\n clientId: this.options?.clientId,\n discoveryDocs: [\n 'https://people.googleapis.com/$discovery/rest?version=v1'\n ],\n scope: 'profile'\n })\n .then(() => {\n this.handleSignOutClick();\n this.updateTextButton();\n (window as any).gapi.auth2\n .getAuthInstance()\n .isSignedIn.listen((rep) => {\n this.updateSigninStatus(rep);\n });\n });\n }\n\n private updateSigninStatus(isSignedIn) {\n this.updateTextButton();\n if (isSignedIn) {\n this.loginGoogle((window as any).gapi.client.getToken().access_token);\n }\n }\n\n private updateTextButton() {\n const btn = document.querySelector('span[id^=\"not_signed_\"]');\n if (btn && this.languageService.getLanguage() !== 'en') {\n if (btn.innerHTML === 'Sign in with Google') {\n btn.innerHTML = this.languageService.translate.instant(\n 'igo.auth.google.login'\n );\n } else if (btn.innerHTML === 'Signed in with Google') {\n btn.innerHTML = this.languageService.translate.instant(\n 'igo.auth.google.logged'\n );\n }\n }\n }\n\n private loginGoogle(token) {\n this.authService.loginWithToken(token, 'google').subscribe(() => {\n this.appRef.tick();\n this.login.emit(true);\n });\n }\n\n private loadSDKGoogle() {\n const fjs = document.getElementsByTagName('script')[0];\n const js = document.createElement('script');\n js.id = 'google-jssdk';\n js.src = 'https://apis.google.com/js/api.js';\n js.onload = () => {\n this.handleClientLoad();\n };\n fjs.parentNode.insertBefore(js, fjs);\n }\n\n private loadPlatform() {\n const fjs = document.getElementsByTagName('script')[0];\n const js = document.createElement('script');\n js.id = 'google-platform';\n js.src = 'https://apis.google.com/js/platform.js';\n fjs.parentNode.insertBefore(js, fjs);\n }\n}\n","<div\n class=\"g-signin2 google-login-button\"\n data-height=\"40\"\n data-width=\"265\"\n data-longtitle=\"true\"\n></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { NgIf } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output } from '@angular/core';
4
+ import * as i3 from '@angular/forms';
5
+ import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
6
+ import * as i6 from '@angular/material/button';
7
+ import { MatButtonModule } from '@angular/material/button';
8
+ import * as i4 from '@angular/material/form-field';
9
+ import { MatFormFieldModule } from '@angular/material/form-field';
10
+ import * as i5 from '@angular/material/input';
11
+ import { MatInputModule } from '@angular/material/input';
12
+ import { MatProgressSpinner } from '@angular/material/progress-spinner';
13
+ import * as i1 from '@igo2/auth';
14
+ import * as i2 from '@igo2/core/language';
15
+ import * as i7 from '@ngx-translate/core';
16
+ import { TranslateModule } from '@ngx-translate/core';
17
+
18
+ class AuthInternComponent {
19
+ auth;
20
+ languageService;
21
+ get allowAnonymous() {
22
+ return this._allowAnonymous;
23
+ }
24
+ set allowAnonymous(value) {
25
+ this._allowAnonymous = value;
26
+ }
27
+ _allowAnonymous = true;
28
+ error = '';
29
+ form;
30
+ loading = false;
31
+ login = new EventEmitter();
32
+ constructor(auth, languageService, fb) {
33
+ this.auth = auth;
34
+ this.languageService = languageService;
35
+ this.form = fb.group({
36
+ username: ['', Validators.required],
37
+ password: ['', Validators.required]
38
+ });
39
+ }
40
+ loginUser(values) {
41
+ this.loading = true;
42
+ this.auth.login(values.username, values.password).subscribe(() => {
43
+ this.login.emit(true);
44
+ this.loading = false;
45
+ }, (error) => {
46
+ try {
47
+ this.languageService.translate
48
+ .get('igo.auth.error.' + error.error.message)
49
+ .subscribe((errorMsg) => (this.error = errorMsg));
50
+ }
51
+ catch (e) {
52
+ this.error = error.error.message;
53
+ }
54
+ this.loading = false;
55
+ });
56
+ return false;
57
+ }
58
+ loginAnonymous() {
59
+ this.auth.loginAnonymous().subscribe(() => {
60
+ this.login.emit(true);
61
+ });
62
+ }
63
+ 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 });
64
+ 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)\">\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>{{ 'igo.auth.user' | translate }}</mat-label>\n <input\n matInput\n required\n placeholder=\"{{ 'igo.auth.user' | translate }}\"\n formControlName=\"username\"\n />\n </mat-form-field>\n </div>\n\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>{{ 'igo.auth.password' | translate }}</mat-label>\n <input\n matInput\n required\n type=\"password\"\n placeholder=\"{{ 'igo.auth.password' | translate }}\"\n formControlName=\"password\"\n />\n </mat-form-field>\n </div>\n\n <button mat-raised-button type=\"submit\">\n {{ 'igo.auth.login' | translate }}\n </button>\n <button\n *ngIf=\"allowAnonymous\"\n mat-raised-button\n class=\"anonymous\"\n type=\"button\"\n (click)=\"loginAnonymous()\"\n >\n {{ 'igo.auth.accessAnonymous' | translate }}\n </button>\n <div *ngIf=\"error\">\n <br />\n <font size=\"3\" color=\"red\">{{ error }}</font>\n </div>\n</form>\n\n<div *ngIf=\"loading\" class=\"loading-container\">\n <mat-spinner [diameter]=\"40\"></mat-spinner>\n</div>\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 });
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthInternComponent, decorators: [{
67
+ type: Component,
68
+ args: [{ selector: 'igo-auth-intern', changeDetection: ChangeDetectionStrategy.Default, standalone: true, imports: [
69
+ FormsModule,
70
+ ReactiveFormsModule,
71
+ MatFormFieldModule,
72
+ MatInputModule,
73
+ MatButtonModule,
74
+ MatProgressSpinner,
75
+ NgIf,
76
+ TranslateModule
77
+ ], template: "<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>{{ 'igo.auth.user' | translate }}</mat-label>\n <input\n matInput\n required\n placeholder=\"{{ 'igo.auth.user' | translate }}\"\n formControlName=\"username\"\n />\n </mat-form-field>\n </div>\n\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>{{ 'igo.auth.password' | translate }}</mat-label>\n <input\n matInput\n required\n type=\"password\"\n placeholder=\"{{ 'igo.auth.password' | translate }}\"\n formControlName=\"password\"\n />\n </mat-form-field>\n </div>\n\n <button mat-raised-button type=\"submit\">\n {{ 'igo.auth.login' | translate }}\n </button>\n <button\n *ngIf=\"allowAnonymous\"\n mat-raised-button\n class=\"anonymous\"\n type=\"button\"\n (click)=\"loginAnonymous()\"\n >\n {{ 'igo.auth.accessAnonymous' | translate }}\n </button>\n <div *ngIf=\"error\">\n <br />\n <font size=\"3\" color=\"red\">{{ error }}</font>\n </div>\n</form>\n\n<div *ngIf=\"loading\" class=\"loading-container\">\n <mat-spinner [diameter]=\"40\"></mat-spinner>\n</div>\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"] }]
78
+ }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.LanguageService }, { type: i3.UntypedFormBuilder }], propDecorators: { allowAnonymous: [{
79
+ type: Input
80
+ }], login: [{
81
+ type: Output
82
+ }] } });
83
+
84
+ /**
85
+ * Generated bundle index. Do not edit.
86
+ */
87
+
88
+ export { AuthInternComponent };
89
+ //# sourceMappingURL=igo2-auth-internal.mjs.map