@recursyve/nice-auth0-kit 13.0.0-beta.1 → 13.0.0-beta.12

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.
@@ -1,10 +1,11 @@
1
1
  import * as i1 from '@angular/common/http';
2
- import { HttpErrorResponse, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
2
+ import { HttpErrorResponse, HttpParams, HttpHeaders, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
3
3
  import * as i0 from '@angular/core';
4
4
  import { InjectionToken, Injectable, Inject, NgModule } from '@angular/core';
5
- import { throwError, BehaviorSubject, of, mergeMap } from 'rxjs';
5
+ import { throwError, of, BehaviorSubject, mergeMap } from 'rxjs';
6
6
  import jwtDecode from 'jwt-decode';
7
7
  import { catchError, map, tap } from 'rxjs/operators';
8
+ import { v4 } from 'uuid';
8
9
 
9
10
  const NICE_AUTH0_OPTIONS = new InjectionToken("nice_auth0_options");
10
11
 
@@ -14,6 +15,9 @@ class Auth0BaseException {
14
15
  }
15
16
  }
16
17
 
18
+ class Auth0AssociationRequiredException extends Auth0BaseException {
19
+ }
20
+
17
21
  class Auth0MfaRequiredException extends Auth0BaseException {
18
22
  constructor(value) {
19
23
  super(value);
@@ -36,9 +40,6 @@ class Auth0Api {
36
40
  }
37
41
  }
38
42
 
39
- class Auth0AssociationRequiredException extends Auth0BaseException {
40
- }
41
-
42
43
  var MfaExceptions;
43
44
  (function (MfaExceptions) {
44
45
  MfaExceptions["AssociationRequired"] = "association_required";
@@ -77,6 +78,10 @@ class Auth0MfaApi extends Auth0Api {
77
78
  oob_channels: req.channels,
78
79
  phone_number: req.phoneNumber,
79
80
  email: req.email
81
+ }, {
82
+ headers: {
83
+ Authorization: `Bearer ${req.mfaToken}`
84
+ }
80
85
  });
81
86
  }
82
87
  }
@@ -139,6 +144,21 @@ class Auth0TokenApi extends Auth0Api {
139
144
  binding_code: bindingCode
140
145
  });
141
146
  }
147
+ authWithAuthorizationCode(authCode, redirectUrl) {
148
+ const body = new HttpParams({
149
+ fromObject: {
150
+ code: authCode,
151
+ redirect_uri: redirectUrl,
152
+ client_id: this.options.clientId,
153
+ client_secret: this.options.clientSecret,
154
+ audience: this.options.audience,
155
+ grant_type: "authorization_code",
156
+ scope: this.options.scopes.join(" "),
157
+ }
158
+ });
159
+ const headers = new HttpHeaders().set("Content-Type", "application/x-www-form-urlencoded");
160
+ return this.http.post(this.url("token"), body.toString(), { headers });
161
+ }
142
162
  refreshToken(refreshToken) {
143
163
  var _a, _b;
144
164
  return this.http.post(this.url("token"), {
@@ -169,21 +189,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
169
189
  }] }, { type: i1.HttpClient }];
170
190
  } });
171
191
 
192
+ class Auth0AuthorizationApi extends Auth0Api {
193
+ constructor(options) {
194
+ super(options.domain, "authorize");
195
+ this.options = options;
196
+ }
197
+ buildAuthFlowRequest(redirectUrl, connection) {
198
+ const query = new HttpParams({
199
+ fromObject: {
200
+ redirect_uri: redirectUrl,
201
+ client_id: this.options.clientId,
202
+ audience: this.options.audience,
203
+ response_type: "code",
204
+ scope: this.options.scopes.join(" "),
205
+ }
206
+ });
207
+ if (connection) {
208
+ query.append("connection", connection);
209
+ }
210
+ return of({
211
+ uri: this.url(`?${query.toString()}`),
212
+ state: v4(),
213
+ });
214
+ }
215
+ }
216
+ Auth0AuthorizationApi.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Auth0AuthorizationApi, deps: [{ token: NICE_AUTH0_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });
217
+ Auth0AuthorizationApi.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Auth0AuthorizationApi });
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Auth0AuthorizationApi, decorators: [{
219
+ type: Injectable
220
+ }], ctorParameters: function () {
221
+ return [{ type: undefined, decorators: [{
222
+ type: Inject,
223
+ args: [NICE_AUTH0_OPTIONS]
224
+ }] }];
225
+ } });
226
+
172
227
  class NiceAuth0Service {
173
- constructor(mfa, token) {
228
+ constructor(mfa, token, authorization) {
174
229
  this.mfa = mfa;
175
230
  this.token = token;
231
+ this.authorization = authorization;
176
232
  }
177
233
  }
178
- NiceAuth0Service.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuth0Service, deps: [{ token: Auth0MfaApi }, { token: Auth0TokenApi }], target: i0.ɵɵFactoryTarget.Injectable });
234
+ NiceAuth0Service.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuth0Service, deps: [{ token: Auth0MfaApi }, { token: Auth0TokenApi }, { token: Auth0AuthorizationApi }], target: i0.ɵɵFactoryTarget.Injectable });
179
235
  NiceAuth0Service.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuth0Service, providedIn: "root" });
180
236
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuth0Service, decorators: [{
181
237
  type: Injectable,
182
238
  args: [{
183
239
  providedIn: "root"
184
240
  }]
185
- }], ctorParameters: function () { return [{ type: Auth0MfaApi }, { type: Auth0TokenApi }]; } });
241
+ }], ctorParameters: function () { return [{ type: Auth0MfaApi }, { type: Auth0TokenApi }, { type: Auth0AuthorizationApi }]; } });
186
242
 
243
+ var AuthorizationStateValidationResult;
244
+ (function (AuthorizationStateValidationResult) {
245
+ AuthorizationStateValidationResult["Omitted"] = "omitted";
246
+ AuthorizationStateValidationResult["Success"] = "success";
247
+ AuthorizationStateValidationResult["Failure"] = "failure";
248
+ })(AuthorizationStateValidationResult || (AuthorizationStateValidationResult = {}));
187
249
  class NiceAuthenticationService {
188
250
  constructor(auth0Service) {
189
251
  this.auth0Service = auth0Service;
@@ -265,17 +327,51 @@ class NiceAuthenticationService {
265
327
  success: true,
266
328
  mfaRequired: false
267
329
  };
268
- }), catchError((e) => {
269
- if (e instanceof Auth0MfaRequiredException) {
270
- this.lastMfaChallengeToken = e.mfaToken;
271
- return this.generateChallenge().pipe(map(() => ({
272
- success: true,
273
- mfaRequired: true
274
- })), catchError(() => throwError(() => new NoAuthenticatorException())));
330
+ }), catchError(this.catchGrantError));
331
+ }
332
+ authorizationCodeGrant(code, redirectUrl) {
333
+ return this.auth0Service.token.authWithAuthorizationCode(code, redirectUrl).pipe(map(value => {
334
+ this.refreshToken = value.refresh_token;
335
+ this.idToken = value.id_token;
336
+ this.accessToken = value.access_token;
337
+ return {
338
+ success: true,
339
+ mfaRequired: false
340
+ };
341
+ }), catchError(this.catchGrantError));
342
+ }
343
+ getAuthFlowRequestUri(redirectUrl, options) {
344
+ var _a;
345
+ return this.auth0Service.authorization.buildAuthFlowRequest(redirectUrl, (_a = options === null || options === void 0 ? void 0 : options.connection) !== null && _a !== void 0 ? _a : undefined).pipe(map(request => {
346
+ if (options === null || options === void 0 ? void 0 : options.useStateValidation) {
347
+ localStorage.setItem("auth0_auth_flow_state", request.state);
275
348
  }
276
- return throwError(() => e);
349
+ return request.uri;
277
350
  }));
278
351
  }
352
+ checkAuthFlowResponse(expectedResponsePath) {
353
+ if (!expectedResponsePath || window.location.pathname === expectedResponsePath) {
354
+ const params = new URLSearchParams(window.location.search);
355
+ if (!params.has("code")) {
356
+ return of(null);
357
+ }
358
+ const response = {
359
+ code: params.get("code"),
360
+ stateValidationResult: AuthorizationStateValidationResult.Omitted
361
+ };
362
+ const savedAuthorizationState = localStorage.getItem("auth0_auth_flow_state");
363
+ if (savedAuthorizationState) {
364
+ if (!params.has("state") || savedAuthorizationState != params.get("state")) {
365
+ response.stateValidationResult = AuthorizationStateValidationResult.Failure;
366
+ }
367
+ else {
368
+ response.stateValidationResult = AuthorizationStateValidationResult.Success;
369
+ }
370
+ }
371
+ return of(response);
372
+ }
373
+ return of(null);
374
+ }
279
375
  validateOobCode(code) {
280
376
  return this.auth0Service.token.authWithOobCode(this.lastMfaChallengeToken, this.lastMfaOobCode, code).pipe(map(value => {
281
377
  this.refreshToken = value.refresh_token;
@@ -301,6 +397,7 @@ class NiceAuthenticationService {
301
397
  }
302
398
  addMfaAuthenticator(authenticator) {
303
399
  return this.auth0Service.mfa.associateOobAuthenticator({
400
+ mfaToken: this.lastMfaChallengeToken,
304
401
  channels: [authenticator.type],
305
402
  email: authenticator.email,
306
403
  phoneNumber: authenticator.phoneNumber
@@ -308,7 +405,7 @@ class NiceAuthenticationService {
308
405
  this.lastMfaOobCode = value.oob_code;
309
406
  }));
310
407
  }
311
- generateChallenge() {
408
+ triggerMfaChallenge() {
312
409
  return this.auth0Service.mfa.challenge({
313
410
  type: "oob",
314
411
  mfaToken: this.lastMfaChallengeToken
@@ -316,6 +413,21 @@ class NiceAuthenticationService {
316
413
  this.lastMfaOobCode = value.oob_code;
317
414
  }));
318
415
  }
416
+ catchGrantError(e) {
417
+ if (e instanceof Auth0MfaRequiredException) {
418
+ this.lastMfaChallengeToken = e.mfaToken;
419
+ return this.triggerMfaChallenge().pipe(map(() => ({
420
+ success: true,
421
+ mfaRequired: true
422
+ })), catchError((err) => {
423
+ if (err instanceof Auth0AssociationRequiredException) {
424
+ return throwError(() => new NoAuthenticatorException());
425
+ }
426
+ return throwError(() => err);
427
+ }));
428
+ }
429
+ return throwError(() => e);
430
+ }
319
431
  }
320
432
  NiceAuthenticationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuthenticationService, deps: [{ token: NiceAuth0Service }], target: i0.ɵɵFactoryTarget.Injectable });
321
433
  NiceAuthenticationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuthenticationService });
@@ -329,7 +441,7 @@ class NiceAuthInterceptor {
329
441
  this.authService = authService;
330
442
  }
331
443
  intercept(req, next) {
332
- if (req.url.startsWith(`${this.options.domain}/oauth`)) {
444
+ if (req.url.startsWith(`${this.options.domain}/oauth`) || req.url.startsWith(`${this.options.domain}/authorize`)) {
333
445
  return next.handle(req);
334
446
  }
335
447
  return this.authService.getAccessToken().pipe(mergeMap(token => {
@@ -372,6 +484,7 @@ NiceAuth0Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
372
484
  NiceAuth0Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuth0Module, providers: [
373
485
  Auth0MfaApi,
374
486
  Auth0TokenApi,
487
+ Auth0AuthorizationApi,
375
488
  NiceAuth0Service,
376
489
  NiceAuthenticationService,
377
490
  { provide: HTTP_INTERCEPTORS, useClass: NiceAuthInterceptor, multi: true }
@@ -388,6 +501,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
388
501
  providers: [
389
502
  Auth0MfaApi,
390
503
  Auth0TokenApi,
504
+ Auth0AuthorizationApi,
391
505
  NiceAuth0Service,
392
506
  NiceAuthenticationService,
393
507
  { provide: HTTP_INTERCEPTORS, useClass: NiceAuthInterceptor, multi: true }
@@ -404,5 +518,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
404
518
  * Generated bundle index. Do not edit.
405
519
  */
406
520
 
407
- export { NiceAuth0Module, NiceAuth0Service, NiceAuthenticationService };
521
+ export { Auth0Api, AuthorizationStateValidationResult, NiceAuth0Module, NiceAuth0Service, NiceAuthenticationService, NoAuthenticatorException };
408
522
  //# sourceMappingURL=recursyve-nice-auth0-kit.mjs.map
@@ -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/token/exceptions/mfa-required.exception.ts","../../../projects/nice-auth0-kit/src/lib/providers/exceptions/no-authenticator.exception.ts","../../../projects/nice-auth0-kit/src/lib/api/auth0.api.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/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/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 Auth0MfaRequiredException extends Auth0BaseException {\n public mfaToken: string;\n\n constructor(value: Auth0MfaRequiredException) {\n super(value);\n }\n}\n","export class NoAuthenticatorException {}\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","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 } 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 }\n}\n","export enum TokenExceptions {\n MfaRequired = \"mfa_required\"\n}\n","import { HttpClient, HttpErrorResponse } 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 { 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 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\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceAuth0Service {\n constructor(public mfa: Auth0MfaApi, public token: Auth0TokenApi) {}\n}\n","import { Injectable } from \"@angular/core\";\nimport jwtDecode from \"jwt-decode\";\nimport { BehaviorSubject, Observable, of, throwError } from \"rxjs\";\nimport { catchError, map, tap } from \"rxjs/operators\";\nimport { NiceAuth0Service } from \"../api/nice-auth0.service\";\nimport { Auth0MfaRequiredException } from \"../api/token/exceptions/mfa-required.exception\";\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\n@Injectable()\nexport class NiceAuthenticationService {\n private lastMfaChallengeToken: string;\n private lastMfaOobCode: string;\n\n public currentUser$ = new BehaviorSubject(this.currentUser);\n\n constructor(private auth0Service: NiceAuth0Service) {}\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 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 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.getAccessToken().pipe(\n map((accessToken: string) => accessToken != null),\n catchError(() => of(false))\n );\n }\n\n public getAccessToken(): Observable<string> {\n if (!this.accessToken) {\n return of(null);\n }\n\n if (this.validateToken()) {\n return of(this.accessToken);\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.accessToken) {\n return false;\n }\n\n const exp = this.accessTokenPayload.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) => {\n if (e instanceof Auth0MfaRequiredException) {\n this.lastMfaChallengeToken = e.mfaToken;\n return this.generateChallenge().pipe(\n map(() => ({\n success: true,\n mfaRequired: true\n })),\n catchError(() => throwError(() => new NoAuthenticatorException()))\n );\n }\n return throwError(() => e);\n }),\n );\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 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 private generateChallenge(): 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","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 (req.url.startsWith(`${this.options.domain}/oauth`)) {\n return next.handle(req);\n }\n\n return this.authService.getAccessToken().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\";\n\n@NgModule({\n imports: [\n HttpClientModule\n ],\n declarations: [],\n providers: [\n Auth0MfaApi,\n Auth0TokenApi,\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/nice-auth0.service\";\nexport * from \"./lib/providers/authentication.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
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/token/exceptions/mfa-required.exception.ts","../../../projects/nice-auth0-kit/src/lib/providers/exceptions/no-authenticator.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/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/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","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 class NoAuthenticatorException {}\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 } 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: {\n Authorization: `Bearer ${req.mfaToken}`\n }\n }\n );\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 const 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.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","import { 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 { 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 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(private auth0Service: NiceAuth0Service) {}\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 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 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.getAccessToken().pipe(\n map((accessToken: string) => accessToken != null),\n catchError(() => of(false))\n );\n }\n\n public getAccessToken(): Observable<string> {\n if (!this.accessToken) {\n return of(null);\n }\n\n if (this.validateToken()) {\n return of(this.accessToken);\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.accessToken) {\n return false;\n }\n\n const exp = this.accessTokenPayload.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(this.catchGrantError)\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(this.catchGrantError)\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): Observable<AuthorizationFlowResponse | null> {\n if (!expectedResponsePath || window.location.pathname === expectedResponsePath) {\n const params = new URLSearchParams(window.location.search);\n if(!params.has(\"code\")) {\n return of(null);\n }\n\n const response = {\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 (req.url.startsWith(`${this.options.domain}/oauth`) || req.url.startsWith(`${this.options.domain}/authorize`) ) {\n return next.handle(req);\n }\n\n return this.authService.getAccessToken().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"],"mappings":"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"}