@recursyve/nice-auth0-kit 17.0.0-beta.20 → 20.0.0-beta.21

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 (51) hide show
  1. package/fesm2022/recursyve-nice-auth0-kit.mjs +109 -86
  2. package/fesm2022/recursyve-nice-auth0-kit.mjs.map +1 -1
  3. package/index.d.ts +170 -5
  4. package/package.json +3 -5
  5. package/esm2022/lib/api/auth0.api.mjs +0 -13
  6. package/esm2022/lib/api/authorization/authorization.api.mjs +0 -40
  7. package/esm2022/lib/api/authorization/models/authorization-flow-request.model.mjs +0 -2
  8. package/esm2022/lib/api/exceptions/base.exception.mjs +0 -6
  9. package/esm2022/lib/api/index.mjs +0 -3
  10. package/esm2022/lib/api/interceptors/auth.interceptor.mjs +0 -37
  11. package/esm2022/lib/api/mfa/exceptions/association-required.exception.mjs +0 -4
  12. package/esm2022/lib/api/mfa/exceptions/mfa.exception.mjs +0 -5
  13. package/esm2022/lib/api/mfa/mfa.api.mjs +0 -59
  14. package/esm2022/lib/api/mfa/model/mfa-request.model.mjs +0 -2
  15. package/esm2022/lib/api/mfa/model/mfa-response.model.mjs +0 -2
  16. package/esm2022/lib/api/nice-auth0.service.mjs +0 -24
  17. package/esm2022/lib/api/token/exceptions/mfa-required.exception.mjs +0 -7
  18. package/esm2022/lib/api/token/exceptions/token.exception.mjs +0 -5
  19. package/esm2022/lib/api/token/models/token-response.model.mjs +0 -2
  20. package/esm2022/lib/api/token/token.api.mjs +0 -93
  21. package/esm2022/lib/nice-auht0-kit.module.mjs +0 -52
  22. package/esm2022/lib/nice-auth0-kit.constant.mjs +0 -3
  23. package/esm2022/lib/nice-auth0-kit.options.mjs +0 -2
  24. package/esm2022/lib/providers/authentication.service.mjs +0 -226
  25. package/esm2022/lib/providers/exceptions/no-authenticator.exception.mjs +0 -3
  26. package/esm2022/lib/providers/index.mjs +0 -3
  27. package/esm2022/public-api.mjs +0 -8
  28. package/esm2022/recursyve-nice-auth0-kit.mjs +0 -5
  29. package/lib/api/auth0.api.d.ts +0 -6
  30. package/lib/api/authorization/authorization.api.d.ts +0 -12
  31. package/lib/api/authorization/models/authorization-flow-request.model.d.ts +0 -4
  32. package/lib/api/exceptions/base.exception.d.ts +0 -5
  33. package/lib/api/index.d.ts +0 -2
  34. package/lib/api/interceptors/auth.interceptor.d.ts +0 -13
  35. package/lib/api/mfa/exceptions/association-required.exception.d.ts +0 -3
  36. package/lib/api/mfa/exceptions/mfa.exception.d.ts +0 -3
  37. package/lib/api/mfa/mfa.api.d.ts +0 -16
  38. package/lib/api/mfa/model/mfa-request.model.d.ts +0 -10
  39. package/lib/api/mfa/model/mfa-response.model.d.ts +0 -6
  40. package/lib/api/nice-auth0.service.d.ts +0 -12
  41. package/lib/api/token/exceptions/mfa-required.exception.d.ts +0 -5
  42. package/lib/api/token/exceptions/token.exception.d.ts +0 -3
  43. package/lib/api/token/models/token-response.model.d.ts +0 -7
  44. package/lib/api/token/token.api.d.ts +0 -18
  45. package/lib/nice-auht0-kit.module.d.ts +0 -10
  46. package/lib/nice-auth0-kit.constant.d.ts +0 -2
  47. package/lib/nice-auth0-kit.options.d.ts +0 -11
  48. package/lib/providers/authentication.service.d.ts +0 -64
  49. package/lib/providers/exceptions/no-authenticator.exception.d.ts +0 -2
  50. package/lib/providers/index.d.ts +0 -2
  51. package/public-api.d.ts +0 -4
@@ -1,22 +1,11 @@
1
1
  import * as i1 from '@angular/common/http';
2
- import { HttpErrorResponse, HttpHeaders, HttpParams, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
2
+ import { HttpParams, HttpErrorResponse, HttpHeaders, provideHttpClient, HTTP_INTERCEPTORS, withInterceptorsFromDi } from '@angular/common/http';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, Injectable, Inject, NgModule } from '@angular/core';
5
- import { throwError, of, BehaviorSubject, mergeMap } from 'rxjs';
6
- import { jwtDecode } from 'jwt-decode';
7
- import { catchError, map, tap } from 'rxjs/operators';
4
+ import { InjectionToken, Inject, Injectable, NgModule } from '@angular/core';
5
+ import { of, throwError, BehaviorSubject, shareReplay, mergeMap } from 'rxjs';
8
6
  import { v4 } from 'uuid';
9
-
10
- const NICE_AUTH0_OPTIONS = new InjectionToken("nice_auth0_options");
11
-
12
- class Auth0BaseException {
13
- constructor(value) {
14
- Object.assign(this, value);
15
- }
16
- }
17
-
18
- class Auth0AssociationRequiredException extends Auth0BaseException {
19
- }
7
+ import { jwtDecode } from 'jwt-decode';
8
+ import { catchError, map, share, tap } from 'rxjs/operators';
20
9
 
21
10
  class Auth0Api {
22
11
  constructor(domain, path) {
@@ -31,6 +20,50 @@ class Auth0Api {
31
20
  }
32
21
  }
33
22
 
23
+ const NICE_AUTH0_OPTIONS = new InjectionToken("nice_auth0_options");
24
+
25
+ class Auth0AuthorizationApi extends Auth0Api {
26
+ constructor(options) {
27
+ super(options.domain, "authorize");
28
+ this.options = options;
29
+ }
30
+ buildAuthFlowRequest(redirectUrl, connection) {
31
+ let query = new HttpParams({
32
+ fromObject: {
33
+ redirect_uri: redirectUrl,
34
+ client_id: this.options.clientId,
35
+ audience: this.options.audience,
36
+ response_type: "code",
37
+ scope: this.options.scopes.join(" "),
38
+ }
39
+ });
40
+ if (connection) {
41
+ query = query.append("connection", connection);
42
+ }
43
+ return of({
44
+ uri: this.url(`?${query.toString()}`),
45
+ state: v4(),
46
+ });
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Auth0AuthorizationApi, deps: [{ token: NICE_AUTH0_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable }); }
49
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Auth0AuthorizationApi }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Auth0AuthorizationApi, decorators: [{
52
+ type: Injectable
53
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
54
+ type: Inject,
55
+ args: [NICE_AUTH0_OPTIONS]
56
+ }] }] });
57
+
58
+ class Auth0BaseException {
59
+ constructor(value) {
60
+ Object.assign(this, value);
61
+ }
62
+ }
63
+
64
+ class Auth0AssociationRequiredException extends Auth0BaseException {
65
+ }
66
+
34
67
  var MfaExceptions;
35
68
  (function (MfaExceptions) {
36
69
  MfaExceptions["AssociationRequired"] = "association_required";
@@ -75,10 +108,10 @@ class Auth0MfaApi extends Auth0Api {
75
108
  })
76
109
  });
77
110
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: Auth0MfaApi, deps: [{ token: NICE_AUTH0_OPTIONS }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
79
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: Auth0MfaApi }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Auth0MfaApi, deps: [{ token: NICE_AUTH0_OPTIONS }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
112
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Auth0MfaApi }); }
80
113
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: Auth0MfaApi, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Auth0MfaApi, decorators: [{
82
115
  type: Injectable
83
116
  }], ctorParameters: () => [{ type: undefined, decorators: [{
84
117
  type: Inject,
@@ -169,59 +202,26 @@ class Auth0TokenApi extends Auth0Api {
169
202
  token: refreshToken
170
203
  });
171
204
  }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: Auth0TokenApi, deps: [{ token: NICE_AUTH0_OPTIONS }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
173
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: Auth0TokenApi }); }
205
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Auth0TokenApi, deps: [{ token: NICE_AUTH0_OPTIONS }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
206
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Auth0TokenApi }); }
174
207
  }
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: Auth0TokenApi, decorators: [{
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: Auth0TokenApi, decorators: [{
176
209
  type: Injectable
177
210
  }], ctorParameters: () => [{ type: undefined, decorators: [{
178
211
  type: Inject,
179
212
  args: [NICE_AUTH0_OPTIONS]
180
213
  }] }, { type: i1.HttpClient }] });
181
214
 
182
- class Auth0AuthorizationApi extends Auth0Api {
183
- constructor(options) {
184
- super(options.domain, "authorize");
185
- this.options = options;
186
- }
187
- buildAuthFlowRequest(redirectUrl, connection) {
188
- let query = new HttpParams({
189
- fromObject: {
190
- redirect_uri: redirectUrl,
191
- client_id: this.options.clientId,
192
- audience: this.options.audience,
193
- response_type: "code",
194
- scope: this.options.scopes.join(" "),
195
- }
196
- });
197
- if (connection) {
198
- query = query.append("connection", connection);
199
- }
200
- return of({
201
- uri: this.url(`?${query.toString()}`),
202
- state: v4(),
203
- });
204
- }
205
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: Auth0AuthorizationApi, deps: [{ token: NICE_AUTH0_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable }); }
206
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: Auth0AuthorizationApi }); }
207
- }
208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: Auth0AuthorizationApi, decorators: [{
209
- type: Injectable
210
- }], ctorParameters: () => [{ type: undefined, decorators: [{
211
- type: Inject,
212
- args: [NICE_AUTH0_OPTIONS]
213
- }] }] });
214
-
215
215
  class NiceAuth0Service {
216
216
  constructor(mfa, token, authorization) {
217
217
  this.mfa = mfa;
218
218
  this.token = token;
219
219
  this.authorization = authorization;
220
220
  }
221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuth0Service, deps: [{ token: Auth0MfaApi }, { token: Auth0TokenApi }, { token: Auth0AuthorizationApi }], target: i0.ɵɵFactoryTarget.Injectable }); }
222
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuth0Service, providedIn: "root" }); }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuth0Service, deps: [{ token: Auth0MfaApi }, { token: Auth0TokenApi }, { token: Auth0AuthorizationApi }], target: i0.ɵɵFactoryTarget.Injectable }); }
222
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuth0Service, providedIn: "root" }); }
223
223
  }
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuth0Service, decorators: [{
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuth0Service, decorators: [{
225
225
  type: Injectable,
226
226
  args: [{
227
227
  providedIn: "root"
@@ -241,6 +241,7 @@ class NiceAuthenticationService {
241
241
  constructor(options, auth0Service) {
242
242
  this.options = options;
243
243
  this.auth0Service = auth0Service;
244
+ this.activeRefreshTokenRequest = null;
244
245
  this.currentUser$ = new BehaviorSubject(this.currentUser);
245
246
  }
246
247
  get idToken() {
@@ -324,9 +325,11 @@ class NiceAuthenticationService {
324
325
  }
325
326
  passwordGrant(username, password) {
326
327
  return this.auth0Service.token.authWithPassword(username, password).pipe(map(value => {
327
- this.refreshToken = value.refresh_token;
328
- this.idToken = value.id_token;
329
- this.accessToken = value.access_token;
328
+ if (value) {
329
+ this.refreshToken = value.refresh_token;
330
+ this.idToken = value.id_token;
331
+ this.accessToken = value.access_token;
332
+ }
330
333
  return {
331
334
  success: true,
332
335
  mfaRequired: false
@@ -359,12 +362,13 @@ class NiceAuthenticationService {
359
362
  const path = expectedResponsePath?.find(x => window.location.pathname === x);
360
363
  if (!expectedResponsePath || path) {
361
364
  const params = new URLSearchParams(window.location.search);
362
- if (!params.has("code")) {
365
+ const code = params.get("code");
366
+ if (!code) {
363
367
  return of(null);
364
368
  }
365
369
  const response = {
366
370
  path,
367
- code: params.get("code"),
371
+ code,
368
372
  stateValidationResult: AuthorizationStateValidationResult.Omitted
369
373
  };
370
374
  const savedAuthorizationState = localStorage.getItem("auth0_auth_flow_state");
@@ -389,19 +393,36 @@ class NiceAuthenticationService {
389
393
  }
390
394
  logout() {
391
395
  const refreshToken = localStorage.getItem("auth0_refresh_token");
396
+ if (!refreshToken) {
397
+ return of();
398
+ }
392
399
  localStorage.removeItem("auth0_id_token");
393
400
  localStorage.removeItem("auth0_access_token");
394
401
  localStorage.removeItem("auth0_refresh_token");
395
402
  return this.auth0Service.token.revokeRefreshToken(refreshToken);
396
403
  }
397
404
  generateNewToken() {
398
- return this.auth0Service.token.refreshToken(this.refreshToken).pipe(tap(value => {
399
- this.refreshToken = value.refresh_token;
400
- this.idToken = value.id_token;
401
- this.accessToken = value.access_token;
402
- }), map(value => value.access_token), catchError(e => {
405
+ if (this.activeRefreshTokenRequest) {
406
+ return this.activeRefreshTokenRequest.pipe(map(value => value?.access_token ?? null));
407
+ }
408
+ const refreshToken = this.refreshToken;
409
+ if (!refreshToken) {
403
410
  return of(null);
404
- }));
411
+ }
412
+ this.activeRefreshTokenRequest = this.auth0Service.token.refreshToken(refreshToken).pipe(catchError(() => of(null)), shareReplay());
413
+ return this.activeRefreshTokenRequest.pipe(share(), tap({
414
+ next: value => {
415
+ if (!value) {
416
+ return;
417
+ }
418
+ this.refreshToken = value.refresh_token;
419
+ this.idToken = value.id_token;
420
+ this.accessToken = value.access_token;
421
+ },
422
+ finalize: () => {
423
+ this.activeRefreshTokenRequest = null;
424
+ }
425
+ }), map(value => value?.access_token ?? null));
405
426
  }
406
427
  addMfaAuthenticator(authenticator) {
407
428
  return this.auth0Service.mfa.associateOobAuthenticator({
@@ -436,10 +457,10 @@ class NiceAuthenticationService {
436
457
  }
437
458
  return throwError(() => e);
438
459
  }
439
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuthenticationService, deps: [{ token: NICE_AUTH0_OPTIONS }, { token: NiceAuth0Service }], target: i0.ɵɵFactoryTarget.Injectable }); }
440
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuthenticationService }); }
460
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuthenticationService, deps: [{ token: NICE_AUTH0_OPTIONS }, { token: NiceAuth0Service }], target: i0.ɵɵFactoryTarget.Injectable }); }
461
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuthenticationService }); }
441
462
  }
442
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuthenticationService, decorators: [{
463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuthenticationService, decorators: [{
443
464
  type: Injectable
444
465
  }], ctorParameters: () => [{ type: undefined, decorators: [{
445
466
  type: Inject,
@@ -457,6 +478,11 @@ class NiceAuthInterceptor {
457
478
  req.url.startsWith(`${this.options.domain}/mfa`)) {
458
479
  return next.handle(req);
459
480
  }
481
+ for (const url of this.options?.urlWhiteList ?? []) {
482
+ if (!req.url.includes(url)) {
483
+ return next.handle(req);
484
+ }
485
+ }
460
486
  return this.authService.getAuthorizationToken().pipe(mergeMap(token => {
461
487
  if (!token) {
462
488
  return next.handle(req);
@@ -467,10 +493,10 @@ class NiceAuthInterceptor {
467
493
  return next.handle(authReq);
468
494
  }));
469
495
  }
470
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuthInterceptor, deps: [{ token: NICE_AUTH0_OPTIONS }, { token: NiceAuthenticationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
471
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuthInterceptor }); }
496
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuthInterceptor, deps: [{ token: NICE_AUTH0_OPTIONS }, { token: NiceAuthenticationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
497
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuthInterceptor }); }
472
498
  }
473
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuthInterceptor, decorators: [{
499
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuthInterceptor, decorators: [{
474
500
  type: Injectable
475
501
  }], ctorParameters: () => [{ type: undefined, decorators: [{
476
502
  type: Inject,
@@ -489,33 +515,30 @@ class NiceAuth0Module {
489
515
  ]
490
516
  };
491
517
  }
492
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuth0Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
493
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.10", ngImport: i0, type: NiceAuth0Module, imports: [HttpClientModule] }); }
494
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuth0Module, providers: [
518
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuth0Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
519
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: NiceAuth0Module }); }
520
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuth0Module, providers: [
495
521
  Auth0MfaApi,
496
522
  Auth0TokenApi,
497
523
  Auth0AuthorizationApi,
498
524
  NiceAuth0Service,
499
525
  NiceAuthenticationService,
526
+ provideHttpClient(withInterceptorsFromDi()),
500
527
  { provide: HTTP_INTERCEPTORS, useClass: NiceAuthInterceptor, multi: true }
501
- ], imports: [HttpClientModule] }); }
528
+ ] }); }
502
529
  }
503
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceAuth0Module, decorators: [{
530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAuth0Module, decorators: [{
504
531
  type: NgModule,
505
532
  args: [{
506
- imports: [
507
- HttpClientModule
508
- ],
509
- declarations: [],
510
533
  providers: [
511
534
  Auth0MfaApi,
512
535
  Auth0TokenApi,
513
536
  Auth0AuthorizationApi,
514
537
  NiceAuth0Service,
515
538
  NiceAuthenticationService,
539
+ provideHttpClient(withInterceptorsFromDi()),
516
540
  { provide: HTTP_INTERCEPTORS, useClass: NiceAuthInterceptor, multi: true }
517
- ],
518
- exports: []
541
+ ]
519
542
  }]
520
543
  }] });
521
544
 
@@ -1 +1 @@
1
- {"version":3,"file":"recursyve-nice-auth0-kit.mjs","sources":["../../../projects/nice-auth0-kit/src/lib/nice-auth0-kit.constant.ts","../../../projects/nice-auth0-kit/src/lib/api/exceptions/base.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/mfa/exceptions/association-required.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/auth0.api.ts","../../../projects/nice-auth0-kit/src/lib/api/mfa/exceptions/mfa.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/mfa/mfa.api.ts","../../../projects/nice-auth0-kit/src/lib/api/token/exceptions/mfa-required.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/token/exceptions/token.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/token/token.api.ts","../../../projects/nice-auth0-kit/src/lib/api/authorization/authorization.api.ts","../../../projects/nice-auth0-kit/src/lib/api/nice-auth0.service.ts","../../../projects/nice-auth0-kit/src/lib/providers/exceptions/no-authenticator.exception.ts","../../../projects/nice-auth0-kit/src/lib/providers/authentication.service.ts","../../../projects/nice-auth0-kit/src/lib/api/interceptors/auth.interceptor.ts","../../../projects/nice-auth0-kit/src/lib/nice-auht0-kit.module.ts","../../../projects/nice-auth0-kit/src/public-api.ts","../../../projects/nice-auth0-kit/src/recursyve-nice-auth0-kit.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_AUTH0_OPTIONS = new InjectionToken(\"nice_auth0_options\");\n","export class Auth0BaseException {\n public error: string;\n public errorDescription: string;\n\n constructor(value: Auth0BaseException) {\n Object.assign(this, value);\n }\n}\n","import { Auth0BaseException } from \"../../exceptions/base.exception\";\n\nexport class Auth0AssociationRequiredException extends Auth0BaseException {}\n","export class Auth0Api {\n constructor(private domain: string, private path: string) {}\n\n protected url(route = \"\"): string {\n if (route === \"\" && this.path === \"\") {\n return this.domain;\n }\n return `${this.domain}/${this.path}/${route}`;\n }\n}\n","export enum MfaExceptions {\n AssociationRequired = \"association_required\"\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\nimport { NICE_AUTH0_OPTIONS } from \"../../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../../nice-auth0-kit.options\";\nimport { Auth0Api } from \"../auth0.api\";\nimport { Auth0AssociationRequiredException } from \"./exceptions/association-required.exception\";\nimport { MfaExceptions } from \"./exceptions/mfa.exception\";\nimport { Auth0MfaAddOobAuthenticatorRequest, Auth0MfaChallengeRequest } from \"./model/mfa-request.model\";\nimport { Auth0ChallengeResponse } from \"./model/mfa-response.model\";\n\n@Injectable()\nexport class Auth0MfaApi extends Auth0Api {\n constructor(@Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options, private http: HttpClient) {\n super(options.domain, \"mfa\");\n }\n\n public challenge(req: Auth0MfaChallengeRequest): Observable<Auth0ChallengeResponse> {\n return this.http.post<Auth0ChallengeResponse>(this.url(\"challenge\"), {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n challenge_type: req.type,\n mfa_token: req.mfaToken\n }).pipe(\n catchError((e) => {\n if (e instanceof HttpErrorResponse) {\n const error = e.error;\n if (error.error === MfaExceptions.AssociationRequired) {\n return throwError(() => new Auth0AssociationRequiredException({\n error: error.error,\n errorDescription: error.error_description\n }));\n }\n }\n\n return throwError(() => e);\n })\n );\n }\n\n public associateOobAuthenticator(req: Auth0MfaAddOobAuthenticatorRequest): Observable<Auth0ChallengeResponse> {\n return this.http.post<Auth0ChallengeResponse>(\n this.url(\"associate\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n authenticator_types: [\"oob\"],\n oob_channels: req.channels,\n phone_number: req.phoneNumber,\n email: req.email\n },\n {\n headers: new HttpHeaders({\n Authorization: `Bearer ${req.mfaToken}`\n })\n }\n );\n }\n}\n","import { Auth0BaseException } from \"../../exceptions/base.exception\";\n\nexport class Auth0MfaRequiredException extends Auth0BaseException {\n public mfaToken: string;\n\n constructor(value: Auth0MfaRequiredException) {\n super(value);\n }\n}\n","export enum TokenExceptions {\n MfaRequired = \"mfa_required\"\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { Observable, of, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\nimport { NICE_AUTH0_OPTIONS } from \"../../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../../nice-auth0-kit.options\";\nimport { Auth0Api } from \"../auth0.api\";\nimport { Auth0MfaRequiredException } from \"./exceptions/mfa-required.exception\";\nimport { TokenExceptions } from \"./exceptions/token.exception\";\nimport { Auth0TokenResponse } from \"./models/token-response.model\";\n\n@Injectable()\nexport class Auth0TokenApi extends Auth0Api {\n constructor(@Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options, private http: HttpClient) {\n super(options.domain, \"oauth\");\n }\n\n public authWithPassword(username: string, password: string): Observable<Auth0TokenResponse> {\n return this.http.post<Auth0TokenResponse>(\n this.url(\"token\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n audience: this.options.audience,\n grant_type: \"password\",\n scope: this.options?.scopes.join(\" \") ?? \"\",\n username,\n password\n }\n ).pipe(\n catchError((e) => {\n if (e instanceof HttpErrorResponse) {\n const error = e.error;\n if (error.error === TokenExceptions.MfaRequired) {\n return throwError(() => new Auth0MfaRequiredException({\n error: error.error,\n errorDescription: error.error_description,\n mfaToken: error.mfa_token\n }));\n }\n }\n\n return throwError(() => e);\n })\n );\n }\n\n public authWithOobCode(mfaToken: string, oobCode: string, bindingCode: string): Observable<Auth0TokenResponse> {\n return this.http.post<Auth0TokenResponse>(\n this.url(\"token\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n audience: this.options.audience,\n grant_type: \"http://auth0.com/oauth/grant-type/mfa-oob\",\n scope: this.options?.scopes.join(\" \") ?? \"\",\n mfa_token: mfaToken,\n oob_code: oobCode,\n binding_code: bindingCode\n }\n );\n }\n\n public authWithAuthorizationCode(authCode: string, redirectUrl: string): Observable<Auth0TokenResponse> {\n const body = new HttpParams({\n fromObject: {\n code: authCode,\n redirect_uri: redirectUrl,\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n audience: this.options.audience,\n grant_type: \"authorization_code\",\n scope: this.options.scopes.join(\" \"),\n }\n });\n\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\n return this.http.post<Auth0TokenResponse>(this.url(\"token\"), body.toString(), { headers });\n }\n\n public refreshToken(refreshToken: string): Observable<Auth0TokenResponse> {\n return this.http.post<Auth0TokenResponse>(\n this.url(\"token\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n audience: this.options.audience,\n grant_type: \"refresh_token\",\n scope: this.options?.scopes.join(\" \") ?? \"\",\n refresh_token: refreshToken\n }\n );\n }\n\n public revokeRefreshToken(refreshToken: string): Observable<void> {\n return this.http.post<void>(\n this.url(\"revoke\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n token: refreshToken\n }\n );\n }\n}\n","import { Auth0Api } from \"../auth0.api\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { NICE_AUTH0_OPTIONS } from \"../../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../../nice-auth0-kit.options\";\nimport { HttpParams } from \"@angular/common/http\";\nimport { Observable, of } from \"rxjs\";\nimport { AuthorizationFlowRequest } from \"./models/authorization-flow-request.model\";\nimport { v4 as uuidv4 } from \"uuid\";\n\n@Injectable()\nexport class Auth0AuthorizationApi extends Auth0Api {\n constructor(@Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options) {\n super(options.domain, \"authorize\");\n }\n\n public buildAuthFlowRequest(redirectUrl: string, connection?: string): Observable<AuthorizationFlowRequest> {\n let query = new HttpParams({\n fromObject: {\n redirect_uri: redirectUrl,\n client_id: this.options.clientId,\n audience: this.options.audience,\n response_type: \"code\",\n scope: this.options.scopes.join(\" \"),\n }\n });\n\n if (connection) {\n query = query.append(\"connection\", connection);\n }\n\n return of({\n uri: this.url(`?${query.toString()}`),\n state: uuidv4(),\n });\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Auth0MfaApi } from \"./mfa/mfa.api\";\nimport { Auth0TokenApi } from \"./token/token.api\";\nimport { Auth0AuthorizationApi } from \"./authorization/authorization.api\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceAuth0Service {\n constructor(public mfa: Auth0MfaApi, public token: Auth0TokenApi, public authorization: Auth0AuthorizationApi) {}\n}\n","export class NoAuthenticatorException {}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { BehaviorSubject, Observable, of, throwError } from \"rxjs\";\nimport { catchError, map, tap } from \"rxjs/operators\";\nimport { Auth0AssociationRequiredException } from \"../api/mfa/exceptions/association-required.exception\";\nimport { NiceAuth0Service } from \"../api\";\nimport { Auth0MfaRequiredException } from \"../api/token/exceptions/mfa-required.exception\";\nimport { NICE_AUTH0_OPTIONS } from \"../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../nice-auth0-kit.options\";\nimport { NoAuthenticatorException } from \"./exceptions/no-authenticator.exception\";\n\nexport interface LoginResponse {\n success: boolean;\n mfaRequired: boolean;\n}\n\nexport interface SmsAuthenticator {\n type: \"sms\";\n phoneNumber: string;\n}\n\nexport interface EmailAuthenticator {\n type: \"email\";\n email: string;\n}\n\nexport interface AuthorizationFlowOptions {\n connection?: string;\n useStateValidation?: boolean;\n}\n\nexport enum AuthorizationStateValidationResult {\n Omitted = \"omitted\",\n Success = \"success\",\n Failure = \"failure\"\n}\n\nexport interface AuthorizationFlowResponse {\n path?: string;\n code: string;\n stateValidationResult: AuthorizationStateValidationResult;\n}\n\n@Injectable()\nexport class NiceAuthenticationService {\n private lastMfaChallengeToken: string;\n private lastMfaOobCode: string;\n\n public currentUser$ = new BehaviorSubject(this.currentUser);\n\n constructor(\n @Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options,\n private auth0Service: NiceAuth0Service\n ) {}\n\n public get idToken(): string {\n return localStorage.getItem(\"auth0_id_token\");\n }\n\n public set idToken(accessToken: string) {\n localStorage.setItem(\"auth0_id_token\", accessToken);\n this.currentUser$.next(this.currentUser);\n }\n\n public get accessToken(): string {\n return localStorage.getItem(\"auth0_access_token\");\n }\n\n public set accessToken(accessToken: string) {\n localStorage.setItem(\"auth0_access_token\", accessToken);\n }\n\n public get refreshToken(): string {\n return localStorage.getItem(\"auth0_refresh_token\");\n }\n\n public set refreshToken(refreshToken: string) {\n localStorage.setItem(\"auth0_refresh_token\", refreshToken);\n }\n\n public get authToken(): string {\n if (this.options.authToken === \"idToken\") {\n return this.idToken;\n }\n return this.accessToken;\n }\n\n public get idTokenPayload(): any {\n try {\n return jwtDecode(this.idToken);\n } catch (e) {\n console.log(\"Failed to decode payload: \" + e);\n return {};\n }\n }\n\n public get accessTokenPayload(): any {\n try {\n const decodedPayload = atob(this.accessToken.split(\".\")[1]);\n return JSON.parse(decodedPayload);\n } catch (e) {\n console.log(\"Failed to decode payload: \" + e);\n return {};\n }\n }\n\n public get authTokenPayload(): any {\n if (this.options.authToken === \"idToken\") {\n return this.idTokenPayload;\n }\n return this.accessTokenPayload;\n }\n\n public get currentUser(): any {\n return this.idTokenPayload;\n }\n\n public checkLoggedIn(): Observable<boolean> {\n if (this.validateToken()) {\n return of(true);\n }\n\n return this.getAuthorizationToken().pipe(\n map((token: string) => token != null),\n catchError(() => of(false))\n );\n }\n\n public getAuthorizationToken(): Observable<string> {\n if (!this.authToken) {\n return of(null);\n }\n\n if (this.validateToken()) {\n return of(this.authToken);\n }\n\n if (this.refreshToken) {\n return this.generateNewToken();\n }\n\n return of(null);\n }\n\n public validateToken(): boolean {\n if (!this.authToken) {\n return false;\n }\n\n const exp = this.authTokenPayload.exp;\n const now = new Date().getTime() / 1000;\n return now < exp;\n }\n\n public passwordGrant(username: string, password: string): Observable<LoginResponse> {\n return this.auth0Service.token.authWithPassword(username, password).pipe(\n map(value => {\n this.refreshToken = value.refresh_token;\n this.idToken = value.id_token;\n this.accessToken = value.access_token;\n return {\n success: true,\n mfaRequired: false\n };\n }),\n catchError((e) => this.catchGrantError(e))\n );\n }\n\n public authorizationCodeGrant(code: string, redirectUrl: string): Observable<LoginResponse> {\n return this.auth0Service.token.authWithAuthorizationCode(code, redirectUrl).pipe(\n map(value => {\n this.refreshToken = value.refresh_token;\n this.idToken = value.id_token;\n this.accessToken = value.access_token;\n return {\n success: true,\n mfaRequired: false\n };\n }),\n catchError((e) => this.catchGrantError(e))\n );\n }\n\n public getAuthFlowRequestUri(redirectUrl: string, options?: AuthorizationFlowOptions): Observable<string> {\n return this.auth0Service.authorization.buildAuthFlowRequest(redirectUrl, options?.connection ?? undefined).pipe(map(request => {\n if (options?.useStateValidation) {\n localStorage.setItem(\"auth0_auth_flow_state\", request.state);\n }\n return request.uri;\n }));\n }\n\n public checkAuthFlowResponse(expectedResponsePath?: string | string[]): Observable<AuthorizationFlowResponse | null> {\n if (typeof expectedResponsePath === \"string\") {\n expectedResponsePath = [expectedResponsePath];\n }\n\n const path = expectedResponsePath?.find(x => window.location.pathname === x);\n if (!expectedResponsePath || path) {\n const params = new URLSearchParams(window.location.search);\n if (!params.has(\"code\")) {\n return of(null);\n }\n\n const response = {\n path,\n code: params.get(\"code\"),\n stateValidationResult: AuthorizationStateValidationResult.Omitted\n };\n\n const savedAuthorizationState = localStorage.getItem(\"auth0_auth_flow_state\");\n if (savedAuthorizationState) {\n if (!params.has(\"state\") || savedAuthorizationState !== params.get(\"state\")) {\n response.stateValidationResult = AuthorizationStateValidationResult.Failure;\n } else {\n response.stateValidationResult = AuthorizationStateValidationResult.Success;\n }\n }\n\n return of(response);\n }\n\n return of(null);\n }\n\n public validateOobCode(code: string): Observable<void> {\n return this.auth0Service.token.authWithOobCode(this.lastMfaChallengeToken, this.lastMfaOobCode, code).pipe(\n map(value => {\n this.refreshToken = value.refresh_token;\n this.idToken = value.id_token;\n this.accessToken = value.access_token;\n })\n );\n }\n\n public logout(): Observable<void> {\n const refreshToken = localStorage.getItem(\"auth0_refresh_token\");\n\n localStorage.removeItem(\"auth0_id_token\");\n localStorage.removeItem(\"auth0_access_token\");\n localStorage.removeItem(\"auth0_refresh_token\");\n\n return this.auth0Service.token.revokeRefreshToken(refreshToken);\n }\n\n public generateNewToken(): Observable<string> {\n return this.auth0Service.token.refreshToken(this.refreshToken).pipe(\n tap(value => {\n this.refreshToken = value.refresh_token;\n this.idToken = value.id_token;\n this.accessToken = value.access_token;\n }),\n map(value => value.access_token),\n catchError(e => {\n return of(null);\n })\n );\n }\n\n public addMfaAuthenticator(authenticator: SmsAuthenticator | EmailAuthenticator): Observable<void> {\n return this.auth0Service.mfa.associateOobAuthenticator({\n mfaToken: this.lastMfaChallengeToken,\n channels: [authenticator.type],\n email: (authenticator as EmailAuthenticator).email,\n phoneNumber: (authenticator as SmsAuthenticator).phoneNumber\n }).pipe(\n map(value => {\n this.lastMfaOobCode = value.oob_code;\n })\n );\n }\n\n public triggerMfaChallenge(): Observable<void> {\n return this.auth0Service.mfa.challenge({\n type: \"oob\",\n mfaToken: this.lastMfaChallengeToken\n }).pipe(\n map(value => {\n this.lastMfaOobCode = value.oob_code;\n })\n );\n }\n\n private catchGrantError(e: any): Observable<LoginResponse> {\n if (e instanceof Auth0MfaRequiredException) {\n this.lastMfaChallengeToken = e.mfaToken;\n return this.triggerMfaChallenge().pipe(\n map(() => ({\n success: true,\n mfaRequired: true\n })),\n catchError((err) => {\n if (err instanceof Auth0AssociationRequiredException) {\n return throwError(() => new NoAuthenticatorException());\n }\n return throwError(() => err);\n })\n );\n }\n return throwError(() => e);\n }\n\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { mergeMap, Observable } from \"rxjs\";\nimport { NICE_AUTH0_OPTIONS } from \"../../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../../nice-auth0-kit.options\";\nimport { NiceAuthenticationService } from \"../../providers/authentication.service\";\n\n@Injectable()\nexport class NiceAuthInterceptor implements HttpInterceptor {\n constructor(@Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options, private authService: NiceAuthenticationService) {}\n\n public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (\n req.url.startsWith(`${this.options.domain}/oauth`) ||\n req.url.startsWith(`${this.options.domain}/authorize`) ||\n req.url.startsWith(`${this.options.domain}/mfa`)\n ) {\n return next.handle(req);\n }\n\n return this.authService.getAuthorizationToken().pipe(\n mergeMap(token => {\n if (!token) {\n return next.handle(req);\n }\n\n const authReq = req.clone({\n headers: req.headers.set(\"Authorization\", `Bearer ${token}`)\n });\n return next.handle(authReq);\n })\n );\n }\n}\n","import { HTTP_INTERCEPTORS, HttpClientModule } from \"@angular/common/http\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { NiceAuthInterceptor } from \"./api/interceptors/auth.interceptor\";\nimport { Auth0MfaApi } from \"./api/mfa/mfa.api\";\nimport { NiceAuth0Service } from \"./api/nice-auth0.service\";\nimport { Auth0TokenApi } from \"./api/token/token.api\";\nimport { NICE_AUTH0_OPTIONS } from \"./nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"./nice-auth0-kit.options\";\nimport { NiceAuthenticationService } from \"./providers/authentication.service\";\nimport { Auth0AuthorizationApi } from \"./api/authorization/authorization.api\";\n\n@NgModule({\n imports: [\n HttpClientModule\n ],\n declarations: [],\n providers: [\n Auth0MfaApi,\n Auth0TokenApi,\n Auth0AuthorizationApi,\n NiceAuth0Service,\n NiceAuthenticationService,\n { provide: HTTP_INTERCEPTORS, useClass: NiceAuthInterceptor, multi: true }\n ],\n exports: []\n})\nexport class NiceAuth0Module {\n public static forRoot(options: NiceAuth0Options): ModuleWithProviders<NiceAuth0Module> {\n return {\n ngModule: NiceAuth0Module,\n providers: [\n {\n provide: NICE_AUTH0_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of nice-auth0-kit\n */\n\nexport * from \"./lib/nice-auht0-kit.module\";\nexport * from \"./lib/nice-auth0-kit.options\";\nexport * from \"./lib/api\";\nexport * from \"./lib/providers\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4","i1.Auth0MfaApi","i2.Auth0TokenApi","i3.Auth0AuthorizationApi","i1.NiceAuth0Service","i1.NiceAuthenticationService"],"mappings":"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"}
1
+ {"version":3,"file":"recursyve-nice-auth0-kit.mjs","sources":["../../../projects/nice-auth0-kit/src/lib/api/auth0.api.ts","../../../projects/nice-auth0-kit/src/lib/nice-auth0-kit.constant.ts","../../../projects/nice-auth0-kit/src/lib/api/authorization/authorization.api.ts","../../../projects/nice-auth0-kit/src/lib/api/exceptions/base.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/mfa/exceptions/association-required.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/mfa/exceptions/mfa.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/mfa/mfa.api.ts","../../../projects/nice-auth0-kit/src/lib/api/token/exceptions/mfa-required.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/token/exceptions/token.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/token/token.api.ts","../../../projects/nice-auth0-kit/src/lib/api/nice-auth0.service.ts","../../../projects/nice-auth0-kit/src/lib/providers/exceptions/no-authenticator.exception.ts","../../../projects/nice-auth0-kit/src/lib/providers/authentication.service.ts","../../../projects/nice-auth0-kit/src/lib/api/interceptors/auth.interceptor.ts","../../../projects/nice-auth0-kit/src/lib/nice-auht0-kit.module.ts","../../../projects/nice-auth0-kit/src/public-api.ts","../../../projects/nice-auth0-kit/src/recursyve-nice-auth0-kit.ts"],"sourcesContent":["export class Auth0Api {\n constructor(private domain: string, private path: string) {}\n\n protected url(route = \"\"): string {\n if (route === \"\" && this.path === \"\") {\n return this.domain;\n }\n return `${this.domain}/${this.path}/${route}`;\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_AUTH0_OPTIONS = new InjectionToken(\"nice_auth0_options\");\n","import { Auth0Api } from \"../auth0.api\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { NICE_AUTH0_OPTIONS } from \"../../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../../nice-auth0-kit.options\";\nimport { HttpParams } from \"@angular/common/http\";\nimport { Observable, of } from \"rxjs\";\nimport { AuthorizationFlowRequest } from \"./models/authorization-flow-request.model\";\nimport { v4 as uuidv4 } from \"uuid\";\n\n@Injectable()\nexport class Auth0AuthorizationApi extends Auth0Api {\n constructor(@Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options) {\n super(options.domain, \"authorize\");\n }\n\n public buildAuthFlowRequest(redirectUrl: string, connection?: string): Observable<AuthorizationFlowRequest> {\n let query = new HttpParams({\n fromObject: {\n redirect_uri: redirectUrl,\n client_id: this.options.clientId,\n audience: this.options.audience,\n response_type: \"code\",\n scope: this.options.scopes.join(\" \"),\n }\n });\n\n if (connection) {\n query = query.append(\"connection\", connection);\n }\n\n return of({\n uri: this.url(`?${query.toString()}`),\n state: uuidv4(),\n });\n }\n}\n","export class Auth0BaseException {\n public error: string;\n public errorDescription: string;\n\n constructor(value: Auth0BaseException) {\n Object.assign(this, value);\n }\n}\n","import { Auth0BaseException } from \"../../exceptions/base.exception\";\n\nexport class Auth0AssociationRequiredException extends Auth0BaseException {}\n","export enum MfaExceptions {\n AssociationRequired = \"association_required\"\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\nimport { NICE_AUTH0_OPTIONS } from \"../../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../../nice-auth0-kit.options\";\nimport { Auth0Api } from \"../auth0.api\";\nimport { Auth0AssociationRequiredException } from \"./exceptions/association-required.exception\";\nimport { MfaExceptions } from \"./exceptions/mfa.exception\";\nimport { Auth0MfaAddOobAuthenticatorRequest, Auth0MfaChallengeRequest } from \"./model/mfa-request.model\";\nimport { Auth0ChallengeResponse } from \"./model/mfa-response.model\";\n\n@Injectable()\nexport class Auth0MfaApi extends Auth0Api {\n constructor(@Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options, private http: HttpClient) {\n super(options.domain, \"mfa\");\n }\n\n public challenge(req: Auth0MfaChallengeRequest): Observable<Auth0ChallengeResponse> {\n return this.http.post<Auth0ChallengeResponse>(this.url(\"challenge\"), {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n challenge_type: req.type,\n mfa_token: req.mfaToken\n }).pipe(\n catchError((e) => {\n if (e instanceof HttpErrorResponse) {\n const error = e.error;\n if (error.error === MfaExceptions.AssociationRequired) {\n return throwError(() => new Auth0AssociationRequiredException({\n error: error.error,\n errorDescription: error.error_description\n }));\n }\n }\n\n return throwError(() => e);\n })\n );\n }\n\n public associateOobAuthenticator(req: Auth0MfaAddOobAuthenticatorRequest): Observable<Auth0ChallengeResponse> {\n return this.http.post<Auth0ChallengeResponse>(\n this.url(\"associate\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n authenticator_types: [\"oob\"],\n oob_channels: req.channels,\n phone_number: req.phoneNumber,\n email: req.email\n },\n {\n headers: new HttpHeaders({\n Authorization: `Bearer ${req.mfaToken}`\n })\n }\n );\n }\n}\n","import { Auth0BaseException } from \"../../exceptions/base.exception\";\n\nexport class Auth0MfaRequiredException extends Auth0BaseException {\n public mfaToken: string;\n\n constructor(value: Auth0MfaRequiredException) {\n super(value);\n }\n}\n","export enum TokenExceptions {\n MfaRequired = \"mfa_required\"\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { Observable, of, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\nimport { NICE_AUTH0_OPTIONS } from \"../../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../../nice-auth0-kit.options\";\nimport { Auth0Api } from \"../auth0.api\";\nimport { Auth0MfaRequiredException } from \"./exceptions/mfa-required.exception\";\nimport { TokenExceptions } from \"./exceptions/token.exception\";\nimport { Auth0TokenResponse } from \"./models/token-response.model\";\n\n@Injectable()\nexport class Auth0TokenApi extends Auth0Api {\n constructor(@Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options, private http: HttpClient) {\n super(options.domain, \"oauth\");\n }\n\n public authWithPassword(username: string, password: string): Observable<Auth0TokenResponse> {\n return this.http.post<Auth0TokenResponse>(\n this.url(\"token\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n audience: this.options.audience,\n grant_type: \"password\",\n scope: this.options?.scopes.join(\" \") ?? \"\",\n username,\n password\n }\n ).pipe(\n catchError((e) => {\n if (e instanceof HttpErrorResponse) {\n const error = e.error;\n if (error.error === TokenExceptions.MfaRequired) {\n return throwError(() => new Auth0MfaRequiredException({\n error: error.error,\n errorDescription: error.error_description,\n mfaToken: error.mfa_token\n }));\n }\n }\n\n return throwError(() => e);\n })\n );\n }\n\n public authWithOobCode(mfaToken: string, oobCode: string, bindingCode: string): Observable<Auth0TokenResponse> {\n return this.http.post<Auth0TokenResponse>(\n this.url(\"token\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n audience: this.options.audience,\n grant_type: \"http://auth0.com/oauth/grant-type/mfa-oob\",\n scope: this.options?.scopes.join(\" \") ?? \"\",\n mfa_token: mfaToken,\n oob_code: oobCode,\n binding_code: bindingCode\n }\n );\n }\n\n public authWithAuthorizationCode(authCode: string, redirectUrl: string): Observable<Auth0TokenResponse> {\n const body = new HttpParams({\n fromObject: {\n code: authCode,\n redirect_uri: redirectUrl,\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n audience: this.options.audience,\n grant_type: \"authorization_code\",\n scope: this.options.scopes.join(\" \"),\n }\n });\n\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\n return this.http.post<Auth0TokenResponse>(this.url(\"token\"), body.toString(), { headers });\n }\n\n public refreshToken(refreshToken: string): Observable<Auth0TokenResponse> {\n return this.http.post<Auth0TokenResponse>(\n this.url(\"token\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n audience: this.options.audience,\n grant_type: \"refresh_token\",\n scope: this.options?.scopes.join(\" \") ?? \"\",\n refresh_token: refreshToken\n }\n );\n }\n\n public revokeRefreshToken(refreshToken: string): Observable<void> {\n return this.http.post<void>(\n this.url(\"revoke\"),\n {\n client_id: this.options.clientId,\n client_secret: this.options.clientSecret,\n token: refreshToken\n }\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Auth0MfaApi } from \"./mfa/mfa.api\";\nimport { Auth0TokenApi } from \"./token/token.api\";\nimport { Auth0AuthorizationApi } from \"./authorization/authorization.api\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceAuth0Service {\n constructor(public mfa: Auth0MfaApi, public token: Auth0TokenApi, public authorization: Auth0AuthorizationApi) {}\n}\n","export class NoAuthenticatorException {}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { BehaviorSubject, Observable, of, shareReplay, throwError } from \"rxjs\";\nimport { catchError, map, share, tap } from \"rxjs/operators\";\nimport { NiceAuth0Service } from \"../api\";\nimport { Auth0AssociationRequiredException } from \"../api/mfa/exceptions/association-required.exception\";\nimport { Auth0MfaRequiredException } from \"../api/token/exceptions/mfa-required.exception\";\nimport { Auth0TokenResponse } from \"../api/token/models/token-response.model\";\nimport { NICE_AUTH0_OPTIONS } from \"../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../nice-auth0-kit.options\";\nimport { NoAuthenticatorException } from \"./exceptions/no-authenticator.exception\";\n\nexport interface LoginResponse {\n success: boolean;\n mfaRequired: boolean;\n}\n\nexport interface SmsAuthenticator {\n type: \"sms\";\n phoneNumber: string;\n}\n\nexport interface EmailAuthenticator {\n type: \"email\";\n email: string;\n}\n\nexport interface AuthorizationFlowOptions {\n connection?: string;\n useStateValidation?: boolean;\n}\n\nexport enum AuthorizationStateValidationResult {\n Omitted = \"omitted\",\n Success = \"success\",\n Failure = \"failure\"\n}\n\nexport interface AuthorizationFlowResponse {\n path?: string;\n code: string;\n stateValidationResult: AuthorizationStateValidationResult;\n}\n\n@Injectable()\nexport class NiceAuthenticationService {\n private lastMfaChallengeToken: string;\n private lastMfaOobCode: string;\n private activeRefreshTokenRequest: Observable<Auth0TokenResponse | null> | null = null;\n\n public currentUser$ = new BehaviorSubject(this.currentUser);\n\n constructor(\n @Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options,\n private auth0Service: NiceAuth0Service\n ) {}\n\n public get idToken(): string {\n return localStorage.getItem(\"auth0_id_token\");\n }\n\n public set idToken(accessToken: string) {\n localStorage.setItem(\"auth0_id_token\", accessToken);\n this.currentUser$.next(this.currentUser);\n }\n\n public get accessToken(): string {\n return localStorage.getItem(\"auth0_access_token\");\n }\n\n public set accessToken(accessToken: string) {\n localStorage.setItem(\"auth0_access_token\", accessToken);\n }\n\n public get refreshToken(): string {\n return localStorage.getItem(\"auth0_refresh_token\");\n }\n\n public set refreshToken(refreshToken: string) {\n localStorage.setItem(\"auth0_refresh_token\", refreshToken);\n }\n\n public get authToken(): string {\n if (this.options.authToken === \"idToken\") {\n return this.idToken;\n }\n return this.accessToken;\n }\n\n public get idTokenPayload(): any {\n try {\n return jwtDecode(this.idToken);\n } catch (e) {\n console.log(\"Failed to decode payload: \" + e);\n return {};\n }\n }\n\n public get accessTokenPayload(): any {\n try {\n const decodedPayload = atob(this.accessToken.split(\".\")[1]);\n return JSON.parse(decodedPayload);\n } catch (e) {\n console.log(\"Failed to decode payload: \" + e);\n return {};\n }\n }\n\n public get authTokenPayload(): any {\n if (this.options.authToken === \"idToken\") {\n return this.idTokenPayload;\n }\n return this.accessTokenPayload;\n }\n\n public get currentUser(): any {\n return this.idTokenPayload;\n }\n\n public checkLoggedIn(): Observable<boolean> {\n if (this.validateToken()) {\n return of(true);\n }\n\n return this.getAuthorizationToken().pipe(\n map((token: string | null) => token != null),\n catchError(() => of(false))\n );\n }\n\n public getAuthorizationToken(): Observable<string | null> {\n if (!this.authToken) {\n return of(null);\n }\n\n if (this.validateToken()) {\n return of(this.authToken);\n }\n\n if (this.refreshToken) {\n return this.generateNewToken();\n }\n\n return of(null);\n }\n\n public validateToken(): boolean {\n if (!this.authToken) {\n return false;\n }\n\n const exp = this.authTokenPayload.exp;\n const now = new Date().getTime() / 1000;\n return now < exp;\n }\n\n public passwordGrant(username: string, password: string): Observable<LoginResponse> {\n return this.auth0Service.token.authWithPassword(username, password).pipe(\n map(value => {\n if (value) {\n this.refreshToken = value.refresh_token;\n this.idToken = value.id_token;\n this.accessToken = value.access_token;\n }\n return {\n success: true,\n mfaRequired: false\n };\n }),\n catchError((e) => this.catchGrantError(e))\n );\n }\n\n public authorizationCodeGrant(code: string, redirectUrl: string): Observable<LoginResponse> {\n return this.auth0Service.token.authWithAuthorizationCode(code, redirectUrl).pipe(\n map(value => {\n this.refreshToken = value.refresh_token;\n this.idToken = value.id_token;\n this.accessToken = value.access_token;\n return {\n success: true,\n mfaRequired: false\n };\n }),\n catchError((e) => this.catchGrantError(e))\n );\n }\n\n public getAuthFlowRequestUri(redirectUrl: string, options?: AuthorizationFlowOptions): Observable<string> {\n return this.auth0Service.authorization.buildAuthFlowRequest(redirectUrl, options?.connection ?? undefined).pipe(map(request => {\n if (options?.useStateValidation) {\n localStorage.setItem(\"auth0_auth_flow_state\", request.state);\n }\n return request.uri;\n }));\n }\n\n public checkAuthFlowResponse(expectedResponsePath?: string | string[]): Observable<AuthorizationFlowResponse | null> {\n if (typeof expectedResponsePath === \"string\") {\n expectedResponsePath = [expectedResponsePath];\n }\n\n const path = expectedResponsePath?.find(x => window.location.pathname === x);\n if (!expectedResponsePath || path) {\n const params = new URLSearchParams(window.location.search);\n const code = params.get(\"code\");\n if (!code) {\n return of(null);\n }\n\n const response: AuthorizationFlowResponse = {\n path,\n code,\n stateValidationResult: AuthorizationStateValidationResult.Omitted\n };\n\n const savedAuthorizationState = localStorage.getItem(\"auth0_auth_flow_state\");\n if (savedAuthorizationState) {\n if (!params.has(\"state\") || savedAuthorizationState !== params.get(\"state\")) {\n response.stateValidationResult = AuthorizationStateValidationResult.Failure;\n } else {\n response.stateValidationResult = AuthorizationStateValidationResult.Success;\n }\n }\n\n return of(response);\n }\n\n return of(null);\n }\n\n public validateOobCode(code: string): Observable<void> {\n return this.auth0Service.token.authWithOobCode(this.lastMfaChallengeToken, this.lastMfaOobCode, code).pipe(\n map(value => {\n this.refreshToken = value.refresh_token;\n this.idToken = value.id_token;\n this.accessToken = value.access_token;\n })\n );\n }\n\n public logout(): Observable<void> {\n const refreshToken = localStorage.getItem(\"auth0_refresh_token\");\n if (!refreshToken) {\n return of();\n }\n\n localStorage.removeItem(\"auth0_id_token\");\n localStorage.removeItem(\"auth0_access_token\");\n localStorage.removeItem(\"auth0_refresh_token\");\n\n return this.auth0Service.token.revokeRefreshToken(refreshToken);\n }\n\n public generateNewToken(): Observable<string | null> {\n if (this.activeRefreshTokenRequest) {\n return this.activeRefreshTokenRequest.pipe(map(value => value?.access_token ?? null));\n }\n\n const refreshToken = this.refreshToken;\n if (!refreshToken) {\n return of(null);\n }\n\n this.activeRefreshTokenRequest = this.auth0Service.token.refreshToken(refreshToken).pipe(\n catchError(() => of(null)),\n shareReplay()\n );\n return this.activeRefreshTokenRequest.pipe(\n share(),\n tap({\n next: value => {\n if (!value) {\n return;\n }\n\n this.refreshToken = value.refresh_token;\n this.idToken = value.id_token;\n this.accessToken = value.access_token;\n },\n finalize: () => {\n this.activeRefreshTokenRequest = null;\n }\n }),\n map(value => value?.access_token ?? null)\n );\n }\n\n public addMfaAuthenticator(authenticator: SmsAuthenticator | EmailAuthenticator): Observable<void> {\n return this.auth0Service.mfa.associateOobAuthenticator({\n mfaToken: this.lastMfaChallengeToken,\n channels: [authenticator.type],\n email: (authenticator as EmailAuthenticator).email,\n phoneNumber: (authenticator as SmsAuthenticator).phoneNumber\n }).pipe(\n map(value => {\n this.lastMfaOobCode = value.oob_code;\n })\n );\n }\n\n public triggerMfaChallenge(): Observable<void> {\n return this.auth0Service.mfa.challenge({\n type: \"oob\",\n mfaToken: this.lastMfaChallengeToken\n }).pipe(\n map(value => {\n this.lastMfaOobCode = value.oob_code;\n })\n );\n }\n\n private catchGrantError(e: any): Observable<LoginResponse> {\n if (e instanceof Auth0MfaRequiredException) {\n this.lastMfaChallengeToken = e.mfaToken;\n return this.triggerMfaChallenge().pipe(\n map(() => ({\n success: true,\n mfaRequired: true\n })),\n catchError((err) => {\n if (err instanceof Auth0AssociationRequiredException) {\n return throwError(() => new NoAuthenticatorException());\n }\n return throwError(() => err);\n })\n );\n }\n return throwError(() => e);\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { mergeMap, Observable } from \"rxjs\";\nimport { NICE_AUTH0_OPTIONS } from \"../../nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"../../nice-auth0-kit.options\";\nimport { NiceAuthenticationService } from \"../../providers/authentication.service\";\n\n@Injectable()\nexport class NiceAuthInterceptor implements HttpInterceptor {\n constructor(@Inject(NICE_AUTH0_OPTIONS) private options: NiceAuth0Options, private authService: NiceAuthenticationService) {}\n\n public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (\n req.url.startsWith(`${this.options.domain}/oauth`) ||\n req.url.startsWith(`${this.options.domain}/authorize`) ||\n req.url.startsWith(`${this.options.domain}/mfa`)\n ) {\n return next.handle(req);\n }\n\n for (const url of this.options?.urlWhiteList ?? []) {\n if (!req.url.includes(url)) {\n return next.handle(req);\n }\n }\n\n return this.authService.getAuthorizationToken().pipe(\n mergeMap(token => {\n if (!token) {\n return next.handle(req);\n }\n\n const authReq = req.clone({\n headers: req.headers.set(\"Authorization\", `Bearer ${token}`)\n });\n return next.handle(authReq);\n })\n );\n }\n}\n","import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from \"@angular/common/http\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { Auth0AuthorizationApi } from \"./api/authorization/authorization.api\";\nimport { NiceAuthInterceptor } from \"./api/interceptors/auth.interceptor\";\nimport { Auth0MfaApi } from \"./api/mfa/mfa.api\";\nimport { NiceAuth0Service } from \"./api/nice-auth0.service\";\nimport { Auth0TokenApi } from \"./api/token/token.api\";\nimport { NICE_AUTH0_OPTIONS } from \"./nice-auth0-kit.constant\";\nimport { NiceAuth0Options } from \"./nice-auth0-kit.options\";\nimport { NiceAuthenticationService } from \"./providers/authentication.service\";\n\n@NgModule({\n providers: [\n Auth0MfaApi,\n Auth0TokenApi,\n Auth0AuthorizationApi,\n NiceAuth0Service,\n NiceAuthenticationService,\n provideHttpClient(withInterceptorsFromDi()),\n { provide: HTTP_INTERCEPTORS, useClass: NiceAuthInterceptor, multi: true }\n ]\n})\nexport class NiceAuth0Module {\n public static forRoot(options: NiceAuth0Options): ModuleWithProviders<NiceAuth0Module> {\n return {\n ngModule: NiceAuth0Module,\n providers: [\n {\n provide: NICE_AUTH0_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of nice-auth0-kit\n */\n\nexport * from \"./lib/nice-auht0-kit.module\";\nexport * from \"./lib/nice-auth0-kit.options\";\nexport * from \"./lib/api\";\nexport * from \"./lib/providers\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4","i1.Auth0MfaApi","i2.Auth0TokenApi","i3.Auth0AuthorizationApi","i1.NiceAuth0Service","i1.NiceAuthenticationService"],"mappings":"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"}