@igo2/auth 19.0.3 → 20.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/environment/index.d.ts +9 -5
  2. package/facebook/index.d.ts +25 -5
  3. package/fesm2022/igo2-auth-facebook.mjs +11 -14
  4. package/fesm2022/igo2-auth-facebook.mjs.map +1 -1
  5. package/fesm2022/igo2-auth-form.mjs +20 -27
  6. package/fesm2022/igo2-auth-form.mjs.map +1 -1
  7. package/fesm2022/igo2-auth-google.mjs +13 -17
  8. package/fesm2022/igo2-auth-google.mjs.map +1 -1
  9. package/fesm2022/igo2-auth-internal.mjs +18 -22
  10. package/fesm2022/igo2-auth-internal.mjs.map +1 -1
  11. package/fesm2022/igo2-auth-microsoft.mjs +44 -73
  12. package/fesm2022/igo2-auth-microsoft.mjs.map +1 -1
  13. package/fesm2022/igo2-auth-monitoring.mjs +10 -19
  14. package/fesm2022/igo2-auth-monitoring.mjs.map +1 -1
  15. package/fesm2022/igo2-auth.mjs +67 -103
  16. package/fesm2022/igo2-auth.mjs.map +1 -1
  17. package/form/index.d.ts +71 -5
  18. package/google/index.d.ts +32 -5
  19. package/index.d.ts +188 -5
  20. package/internal/index.d.ts +23 -5
  21. package/microsoft/index.d.ts +86 -5
  22. package/monitoring/index.d.ts +19 -5
  23. package/package.json +12 -12
  24. package/environment/environment.interface.d.ts +0 -6
  25. package/environment/public_api.d.ts +0 -1
  26. package/facebook/auth-facebook/auth-facebook.component.d.ts +0 -18
  27. package/facebook/public_api.d.ts +0 -2
  28. package/facebook/shared/auth-facebook.interface.d.ts +0 -4
  29. package/facebook/shared/index.d.ts +0 -1
  30. package/form/auth-form/auth-form.component.d.ts +0 -41
  31. package/form/auth-form.module.d.ts +0 -20
  32. package/form/public_api.d.ts +0 -3
  33. package/form/shared/auth-form.interface.d.ts +0 -9
  34. package/form/shared/index.d.ts +0 -1
  35. package/google/auth-google/auth-google.component.d.ts +0 -25
  36. package/google/public_api.d.ts +0 -2
  37. package/google/shared/auth-google.interface.d.ts +0 -5
  38. package/google/shared/index.d.ts +0 -1
  39. package/internal/auth-intern/auth-intern.component.d.ts +0 -21
  40. package/internal/public_api.d.ts +0 -1
  41. package/lib/auth.provider.d.ts +0 -3
  42. package/lib/shared/admin.guard.d.ts +0 -13
  43. package/lib/shared/auth-storage.interface.d.ts +0 -4
  44. package/lib/shared/auth-storage.service.d.ts +0 -18
  45. package/lib/shared/auth.guard.d.ts +0 -13
  46. package/lib/shared/auth.interceptor.d.ts +0 -25
  47. package/lib/shared/auth.interface.d.ts +0 -45
  48. package/lib/shared/auth.service.d.ts +0 -49
  49. package/lib/shared/index.d.ts +0 -11
  50. package/lib/shared/logged.guard.d.ts +0 -13
  51. package/lib/shared/profils.guard.d.ts +0 -13
  52. package/lib/shared/token.interface.d.ts +0 -5
  53. package/lib/shared/token.service.d.ts +0 -16
  54. package/microsoft/auth-microsoft/auth-microsoft.component.d.ts +0 -25
  55. package/microsoft/auth-microsoft.provider.d.ts +0 -12
  56. package/microsoft/auth-microsoftb2c/auth-microsoftb2c.component.d.ts +0 -25
  57. package/microsoft/auth-microsoftb2c/auth-msalBroadcastServiceb2c.service.d.ts +0 -15
  58. package/microsoft/auth-microsoftb2c/auth-msalServiceb2c.service.d.ts +0 -33
  59. package/microsoft/public_api.d.ts +0 -4
  60. package/microsoft/shared/auth-microsoft.interface.d.ts +0 -32
  61. package/microsoft/shared/index.d.ts +0 -1
  62. package/monitoring/auth-monitoring/auth-monitoring.provider.d.ts +0 -3
  63. package/monitoring/auth-monitoring/auth-monitoring.service.d.ts +0 -15
  64. package/monitoring/public_api.d.ts +0 -2
  65. package/public_api.d.ts +0 -2
@@ -1,14 +1,12 @@
1
- import * as i1 from '@angular/common/http';
2
- import { HttpHeaders, HTTP_INTERCEPTORS } from '@angular/common/http';
1
+ import { HttpClient, HttpHeaders, HTTP_INTERCEPTORS } from '@angular/common/http';
3
2
  import * as i0 from '@angular/core';
4
- import { Injectable, Optional, makeEnvironmentProviders } from '@angular/core';
3
+ import { inject, Injector, Injectable, makeEnvironmentProviders } from '@angular/core';
5
4
  import { BaseStorage, StorageScope, StorageService } from '@igo2/core/storage';
6
- import * as i2 from '@igo2/core/config';
7
5
  import { ConfigService } from '@igo2/core/config';
8
6
  import { jwtDecode } from 'jwt-decode';
9
- import * as i3 from '@angular/router';
10
- import * as i4 from '@igo2/core/language';
11
- import * as i5 from '@igo2/core/message';
7
+ import { Router } from '@angular/router';
8
+ import { LanguageService } from '@igo2/core/language';
9
+ import { MessageService } from '@igo2/core/message';
12
10
  import { Base64 } from '@igo2/utils';
13
11
  import { BehaviorSubject, of } from 'rxjs';
14
12
  import { tap, catchError, map } from 'rxjs/operators';
@@ -16,11 +14,10 @@ import { globalCacheBusterNotifier } from 'ts-cacheable';
16
14
  import { Md5 } from 'ts-md5';
17
15
 
18
16
  class TokenService {
19
- injector;
17
+ injector = inject(Injector);
20
18
  options;
21
19
  tokenKey;
22
- constructor(injector) {
23
- this.injector = injector;
20
+ constructor() {
24
21
  const config = this.injector.get(ConfigService);
25
22
  this.options = config.getConfig('auth');
26
23
  this.tokenKey = this.options?.tokenKey;
@@ -49,23 +46,23 @@ class TokenService {
49
46
  }
50
47
  return true;
51
48
  }
52
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TokenService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
53
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TokenService, providedIn: 'root' });
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TokenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
50
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TokenService, providedIn: 'root' });
54
51
  }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TokenService, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TokenService, decorators: [{
56
53
  type: Injectable,
57
54
  args: [{
58
55
  providedIn: 'root'
59
56
  }]
60
- }], ctorParameters: () => [{ type: i0.Injector }] });
57
+ }], ctorParameters: () => [] });
61
58
 
62
59
  class AuthService {
63
- http;
64
- tokenService;
65
- config;
66
- languageService;
67
- messageService;
68
- router;
60
+ http = inject(HttpClient);
61
+ tokenService = inject(TokenService);
62
+ config = inject(ConfigService);
63
+ languageService = inject(LanguageService);
64
+ messageService = inject(MessageService);
65
+ router = inject(Router, { optional: true });
69
66
  authenticate$ = new BehaviorSubject(undefined);
70
67
  logged$ = new BehaviorSubject(undefined);
71
68
  redirectUrl;
@@ -79,13 +76,7 @@ class AuthService {
79
76
  const decodedToken = this.decodeToken();
80
77
  return decodedToken?.user ? decodedToken.user : null;
81
78
  }
82
- constructor(http, tokenService, config, languageService, messageService, router) {
83
- this.http = http;
84
- this.tokenService = tokenService;
85
- this.config = config;
86
- this.languageService = languageService;
87
- this.messageService = messageService;
88
- this.router = router;
79
+ constructor() {
89
80
  this.authOptions = this.config.getConfig('auth');
90
81
  this.authenticate$.next(this.authenticated);
91
82
  this.authenticate$.subscribe((authenticated) => {
@@ -204,27 +195,23 @@ class AuthService {
204
195
  throw err;
205
196
  }));
206
197
  }
207
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthService, deps: [{ token: i1.HttpClient }, { token: TokenService }, { token: i2.ConfigService }, { token: i4.LanguageService }, { token: i5.MessageService }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
208
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthService, providedIn: 'root' });
198
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
199
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthService, providedIn: 'root' });
209
200
  }
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthService, decorators: [{
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthService, decorators: [{
211
202
  type: Injectable,
212
203
  args: [{
213
204
  providedIn: 'root'
214
205
  }]
215
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: TokenService }, { type: i2.ConfigService }, { type: i4.LanguageService }, { type: i5.MessageService }, { type: i3.Router, decorators: [{
216
- type: Optional
217
- }] }] });
206
+ }], ctorParameters: () => [] });
218
207
 
219
208
  class AuthStorageService extends BaseStorage {
220
- http;
221
- authService;
222
- tokenService;
223
- constructor(config, http, authService, tokenService) {
209
+ http = inject(HttpClient);
210
+ authService = inject(AuthService);
211
+ tokenService = inject(TokenService);
212
+ constructor() {
213
+ const config = inject(ConfigService);
224
214
  super(config);
225
- this.http = http;
226
- this.authService = authService;
227
- this.tokenService = tokenService;
228
215
  this.authService.authenticate$.subscribe((isAuthenticated) => {
229
216
  if (isAuthenticated && this.options.url) {
230
217
  this.http
@@ -295,15 +282,15 @@ class AuthStorageService extends BaseStorage {
295
282
  });
296
283
  }
297
284
  }
298
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthStorageService, deps: [{ token: i2.ConfigService }, { token: i1.HttpClient }, { token: AuthService }, { token: TokenService }], target: i0.ɵɵFactoryTarget.Injectable });
299
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthStorageService, providedIn: 'root' });
285
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
286
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthStorageService, providedIn: 'root' });
300
287
  }
301
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthStorageService, decorators: [{
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthStorageService, decorators: [{
302
289
  type: Injectable,
303
290
  args: [{
304
291
  providedIn: 'root'
305
292
  }]
306
- }], ctorParameters: () => [{ type: i2.ConfigService }, { type: i1.HttpClient }, { type: AuthService }, { type: TokenService }] });
293
+ }], ctorParameters: () => [] });
307
294
 
308
295
  var AuthFeatureKind;
309
296
  (function (AuthFeatureKind) {
@@ -311,18 +298,15 @@ var AuthFeatureKind;
311
298
  })(AuthFeatureKind || (AuthFeatureKind = {}));
312
299
 
313
300
  class AuthInterceptor {
314
- config;
315
- tokenService;
316
- http;
301
+ config = inject(ConfigService);
302
+ tokenService = inject(TokenService);
303
+ http = inject(HttpClient);
317
304
  authOptions;
318
305
  refreshInProgress = false;
319
306
  trustHosts;
320
307
  hostsWithCredentials;
321
308
  hostsWithAuthByKey;
322
- constructor(config, tokenService, http) {
323
- this.config = config;
324
- this.tokenService = tokenService;
325
- this.http = http;
309
+ constructor() {
326
310
  this.authOptions = this.config.getConfig('auth');
327
311
  this.trustHosts = this.authOptions?.trustHosts || [];
328
312
  this.trustHosts.push(window.location.hostname);
@@ -450,25 +434,20 @@ class AuthInterceptor {
450
434
  });
451
435
  }
452
436
  }
453
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthInterceptor, deps: [{ token: i2.ConfigService }, { token: TokenService }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
454
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthInterceptor, providedIn: 'root' });
437
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
438
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthInterceptor, providedIn: 'root' });
455
439
  }
456
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthInterceptor, decorators: [{
440
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthInterceptor, decorators: [{
457
441
  type: Injectable,
458
442
  args: [{
459
443
  providedIn: 'root'
460
444
  }]
461
- }], ctorParameters: () => [{ type: i2.ConfigService }, { type: TokenService }, { type: i1.HttpClient }] });
445
+ }], ctorParameters: () => [] });
462
446
 
463
447
  class LoggedGuard {
464
- authService;
465
- config;
466
- router;
467
- constructor(authService, config, router) {
468
- this.authService = authService;
469
- this.config = config;
470
- this.router = router;
471
- }
448
+ authService = inject(AuthService);
449
+ config = inject(ConfigService);
450
+ router = inject(Router);
472
451
  canActivate(route, state) {
473
452
  if (this.authService.logged) {
474
453
  return true;
@@ -480,25 +459,20 @@ class LoggedGuard {
480
459
  }
481
460
  return false;
482
461
  }
483
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LoggedGuard, deps: [{ token: AuthService }, { token: i2.ConfigService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
484
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LoggedGuard, providedIn: 'root' });
462
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: LoggedGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
463
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: LoggedGuard, providedIn: 'root' });
485
464
  }
486
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LoggedGuard, decorators: [{
465
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: LoggedGuard, decorators: [{
487
466
  type: Injectable,
488
467
  args: [{
489
468
  providedIn: 'root'
490
469
  }]
491
- }], ctorParameters: () => [{ type: AuthService }, { type: i2.ConfigService }, { type: i3.Router }] });
470
+ }] });
492
471
 
493
472
  class AuthGuard {
494
- authService;
495
- config;
496
- router;
497
- constructor(authService, config, router) {
498
- this.authService = authService;
499
- this.config = config;
500
- this.router = router;
501
- }
473
+ authService = inject(AuthService);
474
+ config = inject(ConfigService);
475
+ router = inject(Router);
502
476
  canActivate(route, state) {
503
477
  if (this.authService.authenticated) {
504
478
  return true;
@@ -510,25 +484,20 @@ class AuthGuard {
510
484
  }
511
485
  return false;
512
486
  }
513
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthGuard, deps: [{ token: AuthService }, { token: i2.ConfigService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
514
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthGuard, providedIn: 'root' });
487
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
488
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthGuard, providedIn: 'root' });
515
489
  }
516
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthGuard, decorators: [{
490
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AuthGuard, decorators: [{
517
491
  type: Injectable,
518
492
  args: [{
519
493
  providedIn: 'root'
520
494
  }]
521
- }], ctorParameters: () => [{ type: AuthService }, { type: i2.ConfigService }, { type: i3.Router }] });
495
+ }] });
522
496
 
523
497
  class AdminGuard {
524
- authService;
525
- config;
526
- router;
527
- constructor(authService, config, router) {
528
- this.authService = authService;
529
- this.config = config;
530
- this.router = router;
531
- }
498
+ authService = inject(AuthService);
499
+ config = inject(ConfigService);
500
+ router = inject(Router);
532
501
  canActivate(route, state) {
533
502
  if (this.authService.isAdmin) {
534
503
  return true;
@@ -540,25 +509,20 @@ class AdminGuard {
540
509
  }
541
510
  return false;
542
511
  }
543
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AdminGuard, deps: [{ token: AuthService }, { token: i2.ConfigService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
544
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AdminGuard, providedIn: 'root' });
512
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AdminGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
513
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AdminGuard, providedIn: 'root' });
545
514
  }
546
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AdminGuard, decorators: [{
515
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AdminGuard, decorators: [{
547
516
  type: Injectable,
548
517
  args: [{
549
518
  providedIn: 'root'
550
519
  }]
551
- }], ctorParameters: () => [{ type: AuthService }, { type: i2.ConfigService }, { type: i3.Router }] });
520
+ }] });
552
521
 
553
522
  class ProfilsGuard {
554
- authService;
555
- config;
556
- router;
557
- constructor(authService, config, router) {
558
- this.authService = authService;
559
- this.config = config;
560
- this.router = router;
561
- }
523
+ authService = inject(AuthService);
524
+ config = inject(ConfigService);
525
+ router = inject(Router);
562
526
  canActivate(_route, state) {
563
527
  return this.authService.getProfils().pipe(map((profils) => {
564
528
  const authConfig = this.config.getConfig('auth');
@@ -574,15 +538,15 @@ class ProfilsGuard {
574
538
  return false;
575
539
  }));
576
540
  }
577
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ProfilsGuard, deps: [{ token: AuthService }, { token: i2.ConfigService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
578
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ProfilsGuard, providedIn: 'root' });
541
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ProfilsGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
542
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ProfilsGuard, providedIn: 'root' });
579
543
  }
580
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ProfilsGuard, decorators: [{
544
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ProfilsGuard, decorators: [{
581
545
  type: Injectable,
582
546
  args: [{
583
547
  providedIn: 'root'
584
548
  }]
585
- }], ctorParameters: () => [{ type: AuthService }, { type: i2.ConfigService }, { type: i3.Router }] });
549
+ }] });
586
550
 
587
551
  function provideAuthentification(...features) {
588
552
  const providers = [
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-auth.mjs","sources":["../../../packages/auth/src/lib/shared/token.service.ts","../../../packages/auth/src/lib/shared/auth.service.ts","../../../packages/auth/src/lib/shared/auth-storage.service.ts","../../../packages/auth/src/lib/shared/auth.interface.ts","../../../packages/auth/src/lib/shared/auth.interceptor.ts","../../../packages/auth/src/lib/shared/logged.guard.ts","../../../packages/auth/src/lib/shared/auth.guard.ts","../../../packages/auth/src/lib/shared/admin.guard.ts","../../../packages/auth/src/lib/shared/profils.guard.ts","../../../packages/auth/src/lib/auth.provider.ts","../../../packages/auth/src/public_api.ts","../../../packages/auth/src/igo2-auth.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { jwtDecode } from 'jwt-decode';\n\nimport { AuthOptions } from './auth.interface';\nimport { IgoJwtPayload } from './token.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenService {\n private options?: AuthOptions;\n private tokenKey: string;\n\n constructor(private injector: Injector) {\n const config = this.injector.get<ConfigService>(ConfigService);\n this.options = config.getConfig('auth');\n this.tokenKey = this.options?.tokenKey;\n }\n\n set(token: string) {\n localStorage.setItem(this.tokenKey, token);\n }\n\n remove() {\n localStorage.removeItem(this.tokenKey);\n }\n\n get(): string {\n return localStorage.getItem(this.tokenKey);\n }\n\n decode(): IgoJwtPayload | null {\n const token = this.get();\n if (!token) {\n return;\n }\n return jwtDecode(token) satisfies IgoJwtPayload;\n }\n\n isExpired() {\n const jwt = this.decode();\n const currentTime = new Date().getTime() / 1000;\n if (jwt && currentTime < jwt.exp) {\n return false;\n }\n return true;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { Base64 } from '@igo2/utils';\n\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { globalCacheBusterNotifier } from 'ts-cacheable';\n\nimport { AuthOptions, IInfosUser, User } from './auth.interface';\nimport { IgoJwtPayload } from './token.interface';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n public authenticate$ = new BehaviorSubject<boolean>(undefined);\n public logged$ = new BehaviorSubject<boolean>(undefined);\n public redirectUrl: string;\n public languageForce = false;\n private anonymous = false;\n private authOptions: AuthOptions;\n\n get hasAuthService() {\n return this.authOptions?.url !== undefined;\n }\n\n get user(): User | null {\n const decodedToken = this.decodeToken();\n return decodedToken?.user ? decodedToken.user : null;\n }\n\n constructor(\n private http: HttpClient,\n private tokenService: TokenService,\n private config: ConfigService,\n private languageService: LanguageService,\n private messageService: MessageService,\n @Optional() private router: Router\n ) {\n this.authOptions = this.config.getConfig('auth');\n this.authenticate$.next(this.authenticated);\n this.authenticate$.subscribe((authenticated) => {\n this.logged$.next(authenticated);\n globalCacheBusterNotifier.next();\n });\n }\n\n login(username: string, password: string): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n username,\n password: this.encodePassword(password)\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginWithToken(\n token: string,\n type: string,\n infosUser?: IInfosUser\n ): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n token,\n typeConnection: type,\n infosUser\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginAnonymous(): Observable<boolean> {\n this.anonymous = true;\n this.logged$.next(true);\n return of(true);\n }\n\n refresh(): Observable<void> {\n return this.http.post(`${this.authOptions?.url}/refresh`, {}).pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n\n logout(): Observable<boolean> {\n this.anonymous = false;\n this.tokenService.remove();\n this.authenticate$.next(false);\n return of(true);\n }\n\n isAuthenticated(): boolean {\n return !this.tokenService.isExpired();\n }\n\n getToken(): string {\n return this.tokenService.get();\n }\n\n decodeToken(): IgoJwtPayload | null {\n if (this.isAuthenticated()) {\n return this.tokenService.decode();\n }\n return;\n }\n\n goToRedirectUrl() {\n if (!this.router) {\n return;\n }\n const redirectUrl = this.redirectUrl || this.router.url;\n\n if (redirectUrl === this.authOptions.loginRoute) {\n const homeRoute = this.authOptions.homeRoute || '/';\n this.router.navigateByUrl(homeRoute);\n } else if (redirectUrl) {\n this.router.navigateByUrl(redirectUrl);\n }\n }\n\n getUserInfo(): Observable<User> {\n const url = this.authOptions?.url + '/info';\n return this.http.get<User>(url);\n }\n\n getProfils(): Observable<{ profils: string[] }> {\n return this.http.get<{ profils: string[] }>(\n `${this.authOptions?.url}/profils`\n );\n }\n\n updateUser(user: User): Observable<User> {\n return this.http.patch<User>(this.authOptions?.url, user);\n }\n\n private encodePassword(password: string) {\n return Base64.encode(password);\n }\n\n // authenticated or anonymous\n get logged(): boolean {\n return this.authenticated || this.isAnonymous;\n }\n\n get isAnonymous(): boolean {\n return this.anonymous;\n }\n\n get authenticated(): boolean {\n return this.isAuthenticated();\n }\n\n get isAdmin(): boolean {\n const token = this.decodeToken();\n if (token?.user?.isAdmin) {\n return true;\n }\n return false;\n }\n\n private loginCall(body, headers) {\n return this.http\n .post(`${this.authOptions?.url}/login`, body, { headers })\n .pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n const tokenDecoded = this.decodeToken();\n if (tokenDecoded?.user) {\n if (tokenDecoded.user.locale && !this.languageForce) {\n this.languageService.setLanguage(tokenDecoded.user.locale);\n }\n if (tokenDecoded.user.isExpired) {\n this.messageService.alert('igo.auth.error.Password expired');\n }\n }\n this.authenticate$.next(true);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { BaseStorage, StorageScope } from '@igo2/core/storage';\n\nimport { AuthStorageOptions } from './auth-storage.interface';\nimport { AuthService } from './auth.service';\nimport { TokenService } from './token.service';\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 { Provider } from '@angular/core';\n\nimport { BaseUser } from '@igo2/core/user';\n\nexport interface User extends BaseUser {\n source?: string;\n sourceId?: string;\n locale?: string;\n isExpired?: boolean;\n isAdmin?: boolean;\n defaultContextId?: string;\n}\n\nexport interface IInfosUser {\n tokenId: string;\n}\n\nexport interface AuthOptions {\n url?: string;\n tokenKey?: string;\n allowAnonymous?: boolean;\n loginRoute?: string;\n logoutRoute?: string;\n homeRoute?: string;\n trustHosts?: string[];\n profilsGuard?: string[];\n hostsWithCredentials?: WithCredentialsOptions[];\n hostsByKey?: AuthByKeyOptions[];\n intern?: AuthInternOptions;\n}\n\nexport interface AuthByKeyOptions {\n domainRegFilters?: string;\n keyProperty?: string;\n keyValue?: string;\n}\nexport interface WithCredentialsOptions {\n withCredentials?: boolean;\n domainRegFilters?: string;\n}\n\nexport interface AuthInternOptions {\n enabled?: boolean;\n}\n\nexport interface AuthFeature<KindT extends AuthFeatureKind> {\n kind: KindT;\n providers: Provider[];\n}\n\nexport enum AuthFeatureKind {\n Microsoft = 0\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { Observable } from 'rxjs';\nimport { Md5 } from 'ts-md5';\n\nimport {\n AuthByKeyOptions,\n AuthOptions,\n WithCredentialsOptions\n} from './auth.interface';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthInterceptor implements HttpInterceptor {\n private authOptions: AuthOptions;\n private refreshInProgress = false;\n private trustHosts: string[];\n private hostsWithCredentials: WithCredentialsOptions[];\n private hostsWithAuthByKey: AuthByKeyOptions[];\n\n constructor(\n private config: ConfigService,\n private tokenService: TokenService,\n private http: HttpClient\n ) {\n this.authOptions = this.config.getConfig('auth') as AuthOptions;\n\n this.trustHosts = this.authOptions?.trustHosts || [];\n this.trustHosts.push(window.location.hostname);\n\n this.hostsWithCredentials = this.authOptions?.hostsWithCredentials || [];\n this.hostsWithAuthByKey = this.authOptions?.hostsByKey || [];\n }\n\n intercept(\n originalReq: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n const withCredentials = this.handleHostsWithCredentials(originalReq.url);\n let req = originalReq.clone();\n const hostWithKey = this.handleHostsAuthByKey(originalReq.url);\n if (hostWithKey) {\n req = req.clone({\n params: req.params.set(hostWithKey.key, hostWithKey.value)\n });\n }\n if (withCredentials) {\n req = originalReq.clone({\n withCredentials\n });\n return next.handle(req);\n }\n this.refreshToken();\n const token = this.tokenService.get();\n const element = document.createElement('a');\n element.href = req.url;\n\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return next.handle(req);\n }\n\n const authHeader = `Bearer ${token}`;\n let authReq = req.clone({\n headers: req.headers.set('Authorization', authHeader)\n });\n\n const tokenDecoded = this.tokenService.decode();\n if (authReq.params.get('_i') === 'true' && tokenDecoded?.user?.sourceId) {\n const hashUser = Md5.hashStr(tokenDecoded.user.sourceId) as string;\n authReq = authReq.clone({\n params: authReq.params.set('_i', hashUser)\n });\n } else if (authReq.params.get('_i') === 'true') {\n authReq = authReq.clone({\n params: authReq.params.delete('_i')\n });\n }\n\n return next.handle(authReq);\n }\n\n interceptXhr(xhr, url: string): boolean {\n const withCredentials = this.handleHostsWithCredentials(url);\n if (withCredentials) {\n xhr.withCredentials = withCredentials;\n return true;\n }\n\n this.refreshToken();\n const element = document.createElement('a');\n element.href = url;\n\n const token = this.tokenService.get();\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return false;\n }\n xhr.setRequestHeader('Authorization', 'Bearer ' + token);\n return true;\n }\n\n alterUrlWithKeyAuth(url: string): string {\n const hostWithKey = this.handleHostsAuthByKey(url);\n const interceptedUrl = url;\n if (hostWithKey) {\n const urlDecomposed = interceptedUrl.split(/[?&]/);\n let urlWithKeyAdded = urlDecomposed.shift();\n const paramsToKeep = urlDecomposed.filter((p) => p.length !== 0);\n paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);\n if (paramsToKeep.length) {\n urlWithKeyAdded += '?' + paramsToKeep.join('&');\n }\n return urlWithKeyAdded;\n }\n return;\n }\n\n private handleHostsWithCredentials(reqUrl: string) {\n let withCredentials = false;\n for (const hostWithCredentials of this.hostsWithCredentials) {\n const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);\n if (domainRegex.test(reqUrl)) {\n withCredentials =\n hostWithCredentials.withCredentials !== undefined\n ? hostWithCredentials.withCredentials\n : undefined;\n break;\n }\n }\n return withCredentials;\n }\n\n private handleHostsAuthByKey(reqUrl: string): { key: string; value: string } {\n let hostWithKey;\n for (const hostWithAuthByKey of this.hostsWithAuthByKey) {\n const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);\n if (domainRegex.test(reqUrl)) {\n const replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;\n const keyAdded = new RegExp(replace, 'gm');\n if (!keyAdded.test(reqUrl)) {\n hostWithKey = {\n key: hostWithAuthByKey.keyProperty,\n value: hostWithAuthByKey.keyValue\n };\n break;\n }\n }\n }\n return hostWithKey;\n }\n\n refreshToken() {\n const jwt = this.tokenService.decode();\n const currentTime = new Date().getTime() / 1000;\n\n if (\n !this.refreshInProgress &&\n jwt &&\n currentTime < jwt.exp &&\n currentTime > jwt.exp - 1800\n ) {\n this.refreshInProgress = true;\n\n const url = this.authOptions?.url;\n return this.http.post(`${url}/refresh`, {}).subscribe(\n (data: any) => {\n this.tokenService.set(data.token);\n this.refreshInProgress = false;\n },\n (err) => {\n err.error.caught = true;\n return err;\n }\n );\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggedGuard {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.logged) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.authenticated) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdminGuard {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.isAdmin) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { map } from 'rxjs/operators';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfilsGuard {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(_route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.authService.getProfils().pipe(\n map((profils: { profils: string[] }) => {\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (\n profils &&\n profils.profils &&\n profils.profils.some((v) => authConfig.profilsGuard.indexOf(v) !== -1)\n ) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n })\n );\n }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport {\n EnvironmentProviders,\n Provider,\n makeEnvironmentProviders\n} from '@angular/core';\n\nimport { StorageService } from '@igo2/core/storage';\n\nimport {\n AuthFeature,\n AuthFeatureKind,\n AuthInterceptor,\n AuthStorageService\n} from './shared';\n\nexport function provideAuthentification(\n ...features: AuthFeature<AuthFeatureKind>[]\n): EnvironmentProviders {\n const providers: Provider[] = [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n {\n provide: StorageService,\n useClass: AuthStorageService\n }\n ];\n\n for (const feature of features) {\n providers.push(...feature.providers);\n }\n\n return makeEnvironmentProviders(providers);\n}\n","/*\n * Public API Surface of auth\n */\nexport * from './lib/auth.provider';\nexport * from './lib/shared';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.TokenService","i3","i6","i1","i2","i3.AuthService","i4.TokenService","i1.AuthService"],"mappings":"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"}
1
+ {"version":3,"file":"igo2-auth.mjs","sources":["../../../packages/auth/src/lib/shared/token.service.ts","../../../packages/auth/src/lib/shared/auth.service.ts","../../../packages/auth/src/lib/shared/auth-storage.service.ts","../../../packages/auth/src/lib/shared/auth.interface.ts","../../../packages/auth/src/lib/shared/auth.interceptor.ts","../../../packages/auth/src/lib/shared/logged.guard.ts","../../../packages/auth/src/lib/shared/auth.guard.ts","../../../packages/auth/src/lib/shared/admin.guard.ts","../../../packages/auth/src/lib/shared/profils.guard.ts","../../../packages/auth/src/lib/auth.provider.ts","../../../packages/auth/src/public_api.ts","../../../packages/auth/src/igo2-auth.ts"],"sourcesContent":["import { Injectable, Injector, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { jwtDecode } from 'jwt-decode';\n\nimport { AuthOptions } from './auth.interface';\nimport { IgoJwtPayload } from './token.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenService {\n private injector = inject(Injector);\n\n private options?: AuthOptions;\n private tokenKey: string;\n\n constructor() {\n const config = this.injector.get<ConfigService>(ConfigService);\n this.options = config.getConfig('auth');\n this.tokenKey = this.options?.tokenKey;\n }\n\n set(token: string) {\n localStorage.setItem(this.tokenKey, token);\n }\n\n remove() {\n localStorage.removeItem(this.tokenKey);\n }\n\n get(): string {\n return localStorage.getItem(this.tokenKey);\n }\n\n decode(): IgoJwtPayload | null {\n const token = this.get();\n if (!token) {\n return;\n }\n return jwtDecode(token) satisfies IgoJwtPayload;\n }\n\n isExpired() {\n const jwt = this.decode();\n const currentTime = new Date().getTime() / 1000;\n if (jwt && currentTime < jwt.exp) {\n return false;\n }\n return true;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { Base64 } from '@igo2/utils';\n\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { globalCacheBusterNotifier } from 'ts-cacheable';\n\nimport { AuthOptions, IInfosUser, User } from './auth.interface';\nimport { IgoJwtPayload } from './token.interface';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n private http = inject(HttpClient);\n private tokenService = inject(TokenService);\n private config = inject(ConfigService);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n private router = inject(Router, { optional: true });\n\n public authenticate$ = new BehaviorSubject<boolean>(undefined);\n public logged$ = new BehaviorSubject<boolean>(undefined);\n public redirectUrl: string;\n public languageForce = false;\n private anonymous = false;\n private authOptions: AuthOptions;\n\n get hasAuthService() {\n return this.authOptions?.url !== undefined;\n }\n\n get user(): User | null {\n const decodedToken = this.decodeToken();\n return decodedToken?.user ? decodedToken.user : null;\n }\n\n constructor() {\n this.authOptions = this.config.getConfig('auth');\n this.authenticate$.next(this.authenticated);\n this.authenticate$.subscribe((authenticated) => {\n this.logged$.next(authenticated);\n globalCacheBusterNotifier.next();\n });\n }\n\n login(username: string, password: string): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n username,\n password: this.encodePassword(password)\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginWithToken(\n token: string,\n type: string,\n infosUser?: IInfosUser\n ): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n token,\n typeConnection: type,\n infosUser\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginAnonymous(): Observable<boolean> {\n this.anonymous = true;\n this.logged$.next(true);\n return of(true);\n }\n\n refresh(): Observable<void> {\n return this.http.post(`${this.authOptions?.url}/refresh`, {}).pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n\n logout(): Observable<boolean> {\n this.anonymous = false;\n this.tokenService.remove();\n this.authenticate$.next(false);\n return of(true);\n }\n\n isAuthenticated(): boolean {\n return !this.tokenService.isExpired();\n }\n\n getToken(): string {\n return this.tokenService.get();\n }\n\n decodeToken(): IgoJwtPayload | null {\n if (this.isAuthenticated()) {\n return this.tokenService.decode();\n }\n return;\n }\n\n goToRedirectUrl() {\n if (!this.router) {\n return;\n }\n const redirectUrl = this.redirectUrl || this.router.url;\n\n if (redirectUrl === this.authOptions.loginRoute) {\n const homeRoute = this.authOptions.homeRoute || '/';\n this.router.navigateByUrl(homeRoute);\n } else if (redirectUrl) {\n this.router.navigateByUrl(redirectUrl);\n }\n }\n\n getUserInfo(): Observable<User> {\n const url = this.authOptions?.url + '/info';\n return this.http.get<User>(url);\n }\n\n getProfils(): Observable<{ profils: string[] }> {\n return this.http.get<{ profils: string[] }>(\n `${this.authOptions?.url}/profils`\n );\n }\n\n updateUser(user: User): Observable<User> {\n return this.http.patch<User>(this.authOptions?.url, user);\n }\n\n private encodePassword(password: string) {\n return Base64.encode(password);\n }\n\n // authenticated or anonymous\n get logged(): boolean {\n return this.authenticated || this.isAnonymous;\n }\n\n get isAnonymous(): boolean {\n return this.anonymous;\n }\n\n get authenticated(): boolean {\n return this.isAuthenticated();\n }\n\n get isAdmin(): boolean {\n const token = this.decodeToken();\n if (token?.user?.isAdmin) {\n return true;\n }\n return false;\n }\n\n private loginCall(body, headers) {\n return this.http\n .post(`${this.authOptions?.url}/login`, body, { headers })\n .pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n const tokenDecoded = this.decodeToken();\n if (tokenDecoded?.user) {\n if (tokenDecoded.user.locale && !this.languageForce) {\n this.languageService.setLanguage(tokenDecoded.user.locale);\n }\n if (tokenDecoded.user.isExpired) {\n this.messageService.alert('igo.auth.error.Password expired');\n }\n }\n this.authenticate$.next(true);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { BaseStorage, StorageScope } from '@igo2/core/storage';\n\nimport { AuthStorageOptions } from './auth-storage.interface';\nimport { AuthService } from './auth.service';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthStorageService extends BaseStorage<AuthStorageOptions> {\n private http = inject(HttpClient);\n private authService = inject(AuthService);\n private tokenService = inject(TokenService);\n\n constructor() {\n const config = inject(ConfigService);\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 { Provider } from '@angular/core';\n\nimport { BaseUser } from '@igo2/core/user';\n\nexport interface User extends BaseUser {\n source?: string;\n sourceId?: string;\n locale?: string;\n isExpired?: boolean;\n isAdmin?: boolean;\n defaultContextId?: string;\n}\n\nexport interface IInfosUser {\n tokenId: string;\n}\n\nexport interface AuthOptions {\n url?: string;\n tokenKey?: string;\n allowAnonymous?: boolean;\n loginRoute?: string;\n logoutRoute?: string;\n homeRoute?: string;\n trustHosts?: string[];\n profilsGuard?: string[];\n hostsWithCredentials?: WithCredentialsOptions[];\n hostsByKey?: AuthByKeyOptions[];\n intern?: AuthInternOptions;\n}\n\nexport interface AuthByKeyOptions {\n domainRegFilters?: string;\n keyProperty?: string;\n keyValue?: string;\n}\nexport interface WithCredentialsOptions {\n withCredentials?: boolean;\n domainRegFilters?: string;\n}\n\nexport interface AuthInternOptions {\n enabled?: boolean;\n}\n\nexport interface AuthFeature<KindT extends AuthFeatureKind> {\n kind: KindT;\n providers: Provider[];\n}\n\nexport enum AuthFeatureKind {\n Microsoft = 0\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest\n} from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { Observable } from 'rxjs';\nimport { Md5 } from 'ts-md5';\n\nimport {\n AuthByKeyOptions,\n AuthOptions,\n WithCredentialsOptions\n} from './auth.interface';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthInterceptor implements HttpInterceptor {\n private config = inject(ConfigService);\n private tokenService = inject(TokenService);\n private http = inject(HttpClient);\n\n private authOptions: AuthOptions;\n private refreshInProgress = false;\n private trustHosts: string[];\n private hostsWithCredentials: WithCredentialsOptions[];\n private hostsWithAuthByKey: AuthByKeyOptions[];\n\n constructor() {\n this.authOptions = this.config.getConfig('auth') as AuthOptions;\n\n this.trustHosts = this.authOptions?.trustHosts || [];\n this.trustHosts.push(window.location.hostname);\n\n this.hostsWithCredentials = this.authOptions?.hostsWithCredentials || [];\n this.hostsWithAuthByKey = this.authOptions?.hostsByKey || [];\n }\n\n intercept(\n originalReq: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n const withCredentials = this.handleHostsWithCredentials(originalReq.url);\n let req = originalReq.clone();\n const hostWithKey = this.handleHostsAuthByKey(originalReq.url);\n if (hostWithKey) {\n req = req.clone({\n params: req.params.set(hostWithKey.key, hostWithKey.value)\n });\n }\n if (withCredentials) {\n req = originalReq.clone({\n withCredentials\n });\n return next.handle(req);\n }\n this.refreshToken();\n const token = this.tokenService.get();\n const element = document.createElement('a');\n element.href = req.url;\n\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return next.handle(req);\n }\n\n const authHeader = `Bearer ${token}`;\n let authReq = req.clone({\n headers: req.headers.set('Authorization', authHeader)\n });\n\n const tokenDecoded = this.tokenService.decode();\n if (authReq.params.get('_i') === 'true' && tokenDecoded?.user?.sourceId) {\n const hashUser = Md5.hashStr(tokenDecoded.user.sourceId) as string;\n authReq = authReq.clone({\n params: authReq.params.set('_i', hashUser)\n });\n } else if (authReq.params.get('_i') === 'true') {\n authReq = authReq.clone({\n params: authReq.params.delete('_i')\n });\n }\n\n return next.handle(authReq);\n }\n\n interceptXhr(xhr, url: string): boolean {\n const withCredentials = this.handleHostsWithCredentials(url);\n if (withCredentials) {\n xhr.withCredentials = withCredentials;\n return true;\n }\n\n this.refreshToken();\n const element = document.createElement('a');\n element.href = url;\n\n const token = this.tokenService.get();\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return false;\n }\n xhr.setRequestHeader('Authorization', 'Bearer ' + token);\n return true;\n }\n\n alterUrlWithKeyAuth(url: string): string {\n const hostWithKey = this.handleHostsAuthByKey(url);\n const interceptedUrl = url;\n if (hostWithKey) {\n const urlDecomposed = interceptedUrl.split(/[?&]/);\n let urlWithKeyAdded = urlDecomposed.shift();\n const paramsToKeep = urlDecomposed.filter((p) => p.length !== 0);\n paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);\n if (paramsToKeep.length) {\n urlWithKeyAdded += '?' + paramsToKeep.join('&');\n }\n return urlWithKeyAdded;\n }\n return;\n }\n\n private handleHostsWithCredentials(reqUrl: string) {\n let withCredentials = false;\n for (const hostWithCredentials of this.hostsWithCredentials) {\n const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);\n if (domainRegex.test(reqUrl)) {\n withCredentials =\n hostWithCredentials.withCredentials !== undefined\n ? hostWithCredentials.withCredentials\n : undefined;\n break;\n }\n }\n return withCredentials;\n }\n\n private handleHostsAuthByKey(reqUrl: string): { key: string; value: string } {\n let hostWithKey;\n for (const hostWithAuthByKey of this.hostsWithAuthByKey) {\n const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);\n if (domainRegex.test(reqUrl)) {\n const replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;\n const keyAdded = new RegExp(replace, 'gm');\n if (!keyAdded.test(reqUrl)) {\n hostWithKey = {\n key: hostWithAuthByKey.keyProperty,\n value: hostWithAuthByKey.keyValue\n };\n break;\n }\n }\n }\n return hostWithKey;\n }\n\n refreshToken() {\n const jwt = this.tokenService.decode();\n const currentTime = new Date().getTime() / 1000;\n\n if (\n !this.refreshInProgress &&\n jwt &&\n currentTime < jwt.exp &&\n currentTime > jwt.exp - 1800\n ) {\n this.refreshInProgress = true;\n\n const url = this.authOptions?.url;\n return this.http.post(`${url}/refresh`, {}).subscribe(\n (data: any) => {\n this.tokenService.set(data.token);\n this.refreshInProgress = false;\n },\n (err) => {\n err.error.caught = true;\n return err;\n }\n );\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggedGuard {\n private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.logged) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard {\n private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.authenticated) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdminGuard {\n private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.isAdmin) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { map } from 'rxjs/operators';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfilsGuard {\n private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\n\n canActivate(_route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.authService.getProfils().pipe(\n map((profils: { profils: string[] }) => {\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (\n profils &&\n profils.profils &&\n profils.profils.some((v) => authConfig.profilsGuard.indexOf(v) !== -1)\n ) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n })\n );\n }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport {\n EnvironmentProviders,\n Provider,\n makeEnvironmentProviders\n} from '@angular/core';\n\nimport { StorageService } from '@igo2/core/storage';\n\nimport {\n AuthFeature,\n AuthFeatureKind,\n AuthInterceptor,\n AuthStorageService\n} from './shared';\n\nexport function provideAuthentification(\n ...features: AuthFeature<AuthFeatureKind>[]\n): EnvironmentProviders {\n const providers: Provider[] = [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n {\n provide: StorageService,\n useClass: AuthStorageService\n }\n ];\n\n for (const feature of features) {\n providers.push(...feature.providers);\n }\n\n return makeEnvironmentProviders(providers);\n}\n","/*\n * Public API Surface of auth\n */\nexport * from './lib/auth.provider';\nexport * from './lib/shared';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
package/form/index.d.ts CHANGED
@@ -1,5 +1,71 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@igo2/auth/form" />
5
- export * from './public_api';
1
+ import * as i13 from '@igo2/auth/facebook';
2
+ import { AuthFacebookOptions } from '@igo2/auth/facebook';
3
+ import * as i11 from '@igo2/auth/google';
4
+ import { AuthGoogleOptions } from '@igo2/auth/google';
5
+ import * as i14 from '@igo2/auth/microsoft';
6
+ import { AuthMicrosoftOptions, AuthMicrosoftb2cOptions } from '@igo2/auth/microsoft';
7
+ import * as i0 from '@angular/core';
8
+ import { OnInit, EventEmitter } from '@angular/core';
9
+ import * as i1 from '@angular/common';
10
+ import * as i2 from '@angular/forms';
11
+ import * as i3 from '@angular/material/form-field';
12
+ import * as i4 from '@angular/material/input';
13
+ import * as i5 from '@angular/material/icon';
14
+ import * as i6 from '@angular/material/progress-spinner';
15
+ import * as i7 from '@angular/material/button';
16
+ import * as i8 from '@igo2/core/language';
17
+ import * as i9 from '@azure/msal-angular';
18
+ import { AuthService, AuthOptions } from '@igo2/auth';
19
+ import * as i12 from '@igo2/auth/internal';
20
+
21
+ interface AuthFormOptions {
22
+ facebook?: AuthFacebookOptions;
23
+ google?: AuthGoogleOptions;
24
+ microsoft?: AuthMicrosoftOptions;
25
+ microsoftb2c?: AuthMicrosoftb2cOptions;
26
+ }
27
+
28
+ declare class AuthFormComponent implements OnInit {
29
+ auth: AuthService;
30
+ private config;
31
+ private router;
32
+ get backgroundDisable(): boolean;
33
+ set backgroundDisable(value: boolean);
34
+ private _backgroundDisable;
35
+ get hasAlreadyConnectedDiv(): boolean;
36
+ set hasAlreadyConnectedDiv(value: boolean);
37
+ private _hasAlreadyConnectedDiv;
38
+ get hasLogoutDiv(): boolean;
39
+ set hasLogoutDiv(value: boolean);
40
+ private _hasLogoutDiv;
41
+ get showAlreadyConnectedDiv(): boolean;
42
+ set showAlreadyConnectedDiv(value: boolean);
43
+ private _showAlreadyConnectedDiv;
44
+ get showLogoutDiv(): boolean;
45
+ set showLogoutDiv(value: boolean);
46
+ private _showLogoutDiv;
47
+ get showLoginDiv(): boolean;
48
+ login: EventEmitter<boolean>;
49
+ options?: AuthOptions & AuthFormOptions;
50
+ user: any;
51
+ visible: boolean;
52
+ private isLogoutRoute;
53
+ constructor();
54
+ ngOnInit(): void;
55
+ onLogin(): void;
56
+ logout(): void;
57
+ home(): void;
58
+ private getName;
59
+ private analyzeRoute;
60
+ static ɵfac: i0.ɵɵFactoryDeclaration<AuthFormComponent, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<AuthFormComponent, "igo-auth-form", never, { "backgroundDisable": { "alias": "backgroundDisable"; "required": false; }; "hasAlreadyConnectedDiv": { "alias": "hasAlreadyConnectedDiv"; "required": false; }; "hasLogoutDiv": { "alias": "hasLogoutDiv"; "required": false; }; "showAlreadyConnectedDiv": { "alias": "showAlreadyConnectedDiv"; "required": false; }; "showLogoutDiv": { "alias": "showLogoutDiv"; "required": false; }; }, { "login": "login"; }, never, never, true, never>;
62
+ }
63
+
64
+ declare class IgoAuthFormModule {
65
+ static ɵfac: i0.ɵɵFactoryDeclaration<IgoAuthFormModule, never>;
66
+ static ɵmod: i0.ɵɵNgModuleDeclaration<IgoAuthFormModule, never, [typeof i1.CommonModule, typeof i2.ReactiveFormsModule, typeof i3.MatFormFieldModule, typeof i4.MatInputModule, typeof i5.MatIconModule, typeof i6.MatProgressSpinnerModule, typeof i7.MatButtonModule, typeof i8.IgoLanguageModule, typeof i9.MsalModule, typeof AuthFormComponent, typeof i11.AuthGoogleComponent, typeof i12.AuthInternComponent, typeof i13.AuthFacebookComponent, typeof i14.AuthMicrosoftComponent, typeof i14.AuthMicrosoftb2cComponent], [typeof AuthFormComponent]>;
67
+ static ɵinj: i0.ɵɵInjectorDeclaration<IgoAuthFormModule>;
68
+ }
69
+
70
+ export { AuthFormComponent, IgoAuthFormModule };
71
+ export type { AuthFormOptions };
package/google/index.d.ts CHANGED
@@ -1,5 +1,32 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@igo2/auth/google" />
5
- export * from './public_api';
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter } from '@angular/core';
3
+
4
+ declare class AuthGoogleComponent {
5
+ private authService;
6
+ private config;
7
+ private languageService;
8
+ private appRef;
9
+ private options?;
10
+ login: EventEmitter<boolean>;
11
+ constructor();
12
+ handleSignInClick(): void;
13
+ handleSignOutClick(): void;
14
+ private handleClientLoad;
15
+ private initClient;
16
+ private updateSigninStatus;
17
+ private updateTextButton;
18
+ private loginGoogle;
19
+ private loadSDKGoogle;
20
+ private loadPlatform;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<AuthGoogleComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<AuthGoogleComponent, "igo-auth-google", never, {}, { "login": "login"; }, never, never, true, never>;
23
+ }
24
+
25
+ interface AuthGoogleOptions {
26
+ enabled?: boolean;
27
+ apiKey: string;
28
+ clientId: string;
29
+ }
30
+
31
+ export { AuthGoogleComponent };
32
+ export type { AuthGoogleOptions };