@recursyve/nice-auth0-kit 13.0.0-beta.1 → 13.0.0-beta.10
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.
- package/esm2020/lib/api/authorization/authorization.api.mjs +40 -0
- package/esm2020/lib/api/authorization/models/authorization-flow-request.model.mjs +2 -0
- package/esm2020/lib/api/index.mjs +3 -0
- package/esm2020/lib/api/interceptors/auth.interceptor.mjs +2 -2
- package/esm2020/lib/api/mfa/mfa.api.mjs +5 -1
- package/esm2020/lib/api/mfa/model/mfa-request.model.mjs +1 -1
- package/esm2020/lib/api/nice-auth0.service.mjs +7 -4
- package/esm2020/lib/api/token/token.api.mjs +18 -2
- package/esm2020/lib/nice-auht0-kit.module.mjs +4 -1
- package/esm2020/lib/providers/authentication.service.mjs +68 -12
- package/esm2020/lib/providers/index.mjs +3 -0
- package/esm2020/public-api.mjs +3 -3
- package/fesm2015/recursyve-nice-auth0-kit.mjs +134 -19
- package/fesm2015/recursyve-nice-auth0-kit.mjs.map +1 -1
- package/fesm2020/recursyve-nice-auth0-kit.mjs +137 -25
- package/fesm2020/recursyve-nice-auth0-kit.mjs.map +1 -1
- package/lib/api/authorization/authorization.api.d.ts +12 -0
- package/lib/api/authorization/models/authorization-flow-request.model.d.ts +4 -0
- package/lib/api/index.d.ts +2 -0
- package/lib/api/mfa/model/mfa-request.model.d.ts +1 -0
- package/lib/api/nice-auth0.service.d.ts +3 -1
- package/lib/api/token/token.api.d.ts +1 -0
- package/lib/providers/authentication.service.d.ts +19 -2
- package/lib/providers/index.d.ts +2 -0
- package/package.json +3 -2
- package/public-api.d.ts +2 -2
|
@@ -1,13 +1,23 @@
|
|
|
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,
|
|
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
|
|
|
12
|
+
class Auth0BaseException {
|
|
13
|
+
constructor(value) {
|
|
14
|
+
Object.assign(this, value);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
class Auth0AssociationRequiredException extends Auth0BaseException {
|
|
19
|
+
}
|
|
20
|
+
|
|
11
21
|
class Auth0Api {
|
|
12
22
|
constructor(domain, path) {
|
|
13
23
|
this.domain = domain;
|
|
@@ -21,15 +31,6 @@ class Auth0Api {
|
|
|
21
31
|
}
|
|
22
32
|
}
|
|
23
33
|
|
|
24
|
-
class Auth0BaseException {
|
|
25
|
-
constructor(value) {
|
|
26
|
-
Object.assign(this, value);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
class Auth0AssociationRequiredException extends Auth0BaseException {
|
|
31
|
-
}
|
|
32
|
-
|
|
33
34
|
var MfaExceptions;
|
|
34
35
|
(function (MfaExceptions) {
|
|
35
36
|
MfaExceptions["AssociationRequired"] = "association_required";
|
|
@@ -68,6 +69,10 @@ class Auth0MfaApi extends Auth0Api {
|
|
|
68
69
|
oob_channels: req.channels,
|
|
69
70
|
phone_number: req.phoneNumber,
|
|
70
71
|
email: req.email
|
|
72
|
+
}, {
|
|
73
|
+
headers: {
|
|
74
|
+
Authorization: `Bearer ${req.mfaToken}`
|
|
75
|
+
}
|
|
71
76
|
});
|
|
72
77
|
}
|
|
73
78
|
}
|
|
@@ -132,6 +137,22 @@ class Auth0TokenApi extends Auth0Api {
|
|
|
132
137
|
binding_code: bindingCode
|
|
133
138
|
});
|
|
134
139
|
}
|
|
140
|
+
authWithAuthorizationCode(authCode, redirectUrl) {
|
|
141
|
+
const body = new HttpParams({
|
|
142
|
+
fromObject: {
|
|
143
|
+
code: authCode,
|
|
144
|
+
redirect_uri: redirectUrl,
|
|
145
|
+
client_id: this.options.clientId,
|
|
146
|
+
client_secret: this.options.clientSecret,
|
|
147
|
+
audience: this.options.audience,
|
|
148
|
+
grant_type: "authorization_code",
|
|
149
|
+
scope: this.options.scopes,
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
const headers = new HttpHeaders();
|
|
153
|
+
headers.set("Content-Type", "application/x-www-form-urlencoded");
|
|
154
|
+
return this.http.post(this.url("token"), body.toString(), { headers });
|
|
155
|
+
}
|
|
135
156
|
refreshToken(refreshToken) {
|
|
136
157
|
return this.http.post(this.url("token"), {
|
|
137
158
|
client_id: this.options.clientId,
|
|
@@ -159,24 +180,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
159
180
|
args: [NICE_AUTH0_OPTIONS]
|
|
160
181
|
}] }, { type: i1.HttpClient }]; } });
|
|
161
182
|
|
|
183
|
+
class Auth0AuthorizationApi extends Auth0Api {
|
|
184
|
+
constructor(options) {
|
|
185
|
+
super(options.domain, "authorize");
|
|
186
|
+
this.options = options;
|
|
187
|
+
}
|
|
188
|
+
buildAuthFlowRequest(redirectUrl, connection) {
|
|
189
|
+
const query = new HttpParams({
|
|
190
|
+
fromObject: {
|
|
191
|
+
redirect_uri: redirectUrl,
|
|
192
|
+
client_id: this.options.clientId,
|
|
193
|
+
audience: this.options.audience,
|
|
194
|
+
response_type: "code",
|
|
195
|
+
scope: this.options.scopes.join(" "),
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
if (connection) {
|
|
199
|
+
query.append("connection", connection);
|
|
200
|
+
}
|
|
201
|
+
return of({
|
|
202
|
+
uri: this.url(`?${query.toString()}`),
|
|
203
|
+
state: v4(),
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
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 });
|
|
208
|
+
Auth0AuthorizationApi.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Auth0AuthorizationApi });
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Auth0AuthorizationApi, decorators: [{
|
|
210
|
+
type: Injectable
|
|
211
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
212
|
+
type: Inject,
|
|
213
|
+
args: [NICE_AUTH0_OPTIONS]
|
|
214
|
+
}] }]; } });
|
|
215
|
+
|
|
162
216
|
class NiceAuth0Service {
|
|
163
|
-
constructor(mfa, token) {
|
|
217
|
+
constructor(mfa, token, authorization) {
|
|
164
218
|
this.mfa = mfa;
|
|
165
219
|
this.token = token;
|
|
220
|
+
this.authorization = authorization;
|
|
166
221
|
}
|
|
167
222
|
}
|
|
168
|
-
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 });
|
|
223
|
+
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 });
|
|
169
224
|
NiceAuth0Service.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuth0Service, providedIn: "root" });
|
|
170
225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuth0Service, decorators: [{
|
|
171
226
|
type: Injectable,
|
|
172
227
|
args: [{
|
|
173
228
|
providedIn: "root"
|
|
174
229
|
}]
|
|
175
|
-
}], ctorParameters: function () { return [{ type: Auth0MfaApi }, { type: Auth0TokenApi }]; } });
|
|
230
|
+
}], ctorParameters: function () { return [{ type: Auth0MfaApi }, { type: Auth0TokenApi }, { type: Auth0AuthorizationApi }]; } });
|
|
176
231
|
|
|
177
232
|
class NoAuthenticatorException {
|
|
178
233
|
}
|
|
179
234
|
|
|
235
|
+
var AuthorizationStateValidationResult;
|
|
236
|
+
(function (AuthorizationStateValidationResult) {
|
|
237
|
+
AuthorizationStateValidationResult["Omitted"] = "omitted";
|
|
238
|
+
AuthorizationStateValidationResult["Success"] = "success";
|
|
239
|
+
AuthorizationStateValidationResult["Failure"] = "failure";
|
|
240
|
+
})(AuthorizationStateValidationResult || (AuthorizationStateValidationResult = {}));
|
|
180
241
|
class NiceAuthenticationService {
|
|
181
242
|
constructor(auth0Service) {
|
|
182
243
|
this.auth0Service = auth0Service;
|
|
@@ -258,17 +319,50 @@ class NiceAuthenticationService {
|
|
|
258
319
|
success: true,
|
|
259
320
|
mfaRequired: false
|
|
260
321
|
};
|
|
261
|
-
}), catchError(
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
322
|
+
}), catchError(this.catchGrantError));
|
|
323
|
+
}
|
|
324
|
+
authorizationCodeGrant(code, redirectUrl) {
|
|
325
|
+
return this.auth0Service.token.authWithAuthorizationCode(code, redirectUrl).pipe(map(value => {
|
|
326
|
+
this.refreshToken = value.refresh_token;
|
|
327
|
+
this.idToken = value.id_token;
|
|
328
|
+
this.accessToken = value.access_token;
|
|
329
|
+
return {
|
|
330
|
+
success: true,
|
|
331
|
+
mfaRequired: false
|
|
332
|
+
};
|
|
333
|
+
}), catchError(this.catchGrantError));
|
|
334
|
+
}
|
|
335
|
+
getAuthFlowRequestUri(redirectUrl, options) {
|
|
336
|
+
return this.auth0Service.authorization.buildAuthFlowRequest(redirectUrl, options?.connection ?? undefined).pipe(map(request => {
|
|
337
|
+
if (options?.useStateValidation) {
|
|
338
|
+
localStorage.setItem("auth0_auth_flow_state", request.state);
|
|
268
339
|
}
|
|
269
|
-
return
|
|
340
|
+
return request.uri;
|
|
270
341
|
}));
|
|
271
342
|
}
|
|
343
|
+
checkAuthFlowResponse(expectedResponsePath) {
|
|
344
|
+
if (!expectedResponsePath || window.location.pathname === expectedResponsePath) {
|
|
345
|
+
const params = new URLSearchParams(window.location.search);
|
|
346
|
+
if (!params.has("code")) {
|
|
347
|
+
return of(null);
|
|
348
|
+
}
|
|
349
|
+
const response = {
|
|
350
|
+
code: params.get("code"),
|
|
351
|
+
stateValidationResult: AuthorizationStateValidationResult.Omitted
|
|
352
|
+
};
|
|
353
|
+
const savedAuthorizationState = localStorage.getItem("auth0_auth_flow_state");
|
|
354
|
+
if (savedAuthorizationState) {
|
|
355
|
+
if (!params.has("state") || savedAuthorizationState != params.get("state")) {
|
|
356
|
+
response.stateValidationResult = AuthorizationStateValidationResult.Failure;
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
response.stateValidationResult = AuthorizationStateValidationResult.Success;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
return of(response);
|
|
363
|
+
}
|
|
364
|
+
return of(null);
|
|
365
|
+
}
|
|
272
366
|
validateOobCode(code) {
|
|
273
367
|
return this.auth0Service.token.authWithOobCode(this.lastMfaChallengeToken, this.lastMfaOobCode, code).pipe(map(value => {
|
|
274
368
|
this.refreshToken = value.refresh_token;
|
|
@@ -294,6 +388,7 @@ class NiceAuthenticationService {
|
|
|
294
388
|
}
|
|
295
389
|
addMfaAuthenticator(authenticator) {
|
|
296
390
|
return this.auth0Service.mfa.associateOobAuthenticator({
|
|
391
|
+
mfaToken: this.lastMfaChallengeToken,
|
|
297
392
|
channels: [authenticator.type],
|
|
298
393
|
email: authenticator.email,
|
|
299
394
|
phoneNumber: authenticator.phoneNumber
|
|
@@ -301,7 +396,7 @@ class NiceAuthenticationService {
|
|
|
301
396
|
this.lastMfaOobCode = value.oob_code;
|
|
302
397
|
}));
|
|
303
398
|
}
|
|
304
|
-
|
|
399
|
+
triggerMfaChallenge() {
|
|
305
400
|
return this.auth0Service.mfa.challenge({
|
|
306
401
|
type: "oob",
|
|
307
402
|
mfaToken: this.lastMfaChallengeToken
|
|
@@ -309,6 +404,21 @@ class NiceAuthenticationService {
|
|
|
309
404
|
this.lastMfaOobCode = value.oob_code;
|
|
310
405
|
}));
|
|
311
406
|
}
|
|
407
|
+
catchGrantError(e) {
|
|
408
|
+
if (e instanceof Auth0MfaRequiredException) {
|
|
409
|
+
this.lastMfaChallengeToken = e.mfaToken;
|
|
410
|
+
return this.triggerMfaChallenge().pipe(map(() => ({
|
|
411
|
+
success: true,
|
|
412
|
+
mfaRequired: true
|
|
413
|
+
})), catchError((err) => {
|
|
414
|
+
if (err instanceof Auth0AssociationRequiredException) {
|
|
415
|
+
return throwError(() => new NoAuthenticatorException());
|
|
416
|
+
}
|
|
417
|
+
return throwError(() => err);
|
|
418
|
+
}));
|
|
419
|
+
}
|
|
420
|
+
return throwError(() => e);
|
|
421
|
+
}
|
|
312
422
|
}
|
|
313
423
|
NiceAuthenticationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuthenticationService, deps: [{ token: NiceAuth0Service }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
314
424
|
NiceAuthenticationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuthenticationService });
|
|
@@ -322,7 +432,7 @@ class NiceAuthInterceptor {
|
|
|
322
432
|
this.authService = authService;
|
|
323
433
|
}
|
|
324
434
|
intercept(req, next) {
|
|
325
|
-
if (req.url.startsWith(`${this.options.domain}/oauth`)) {
|
|
435
|
+
if (req.url.startsWith(`${this.options.domain}/oauth`) || req.url.startsWith(`${this.options.domain}/authorize`)) {
|
|
326
436
|
return next.handle(req);
|
|
327
437
|
}
|
|
328
438
|
return this.authService.getAccessToken().pipe(mergeMap(token => {
|
|
@@ -363,6 +473,7 @@ NiceAuth0Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
|
|
|
363
473
|
NiceAuth0Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAuth0Module, providers: [
|
|
364
474
|
Auth0MfaApi,
|
|
365
475
|
Auth0TokenApi,
|
|
476
|
+
Auth0AuthorizationApi,
|
|
366
477
|
NiceAuth0Service,
|
|
367
478
|
NiceAuthenticationService,
|
|
368
479
|
{ provide: HTTP_INTERCEPTORS, useClass: NiceAuthInterceptor, multi: true }
|
|
@@ -379,6 +490,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
379
490
|
providers: [
|
|
380
491
|
Auth0MfaApi,
|
|
381
492
|
Auth0TokenApi,
|
|
493
|
+
Auth0AuthorizationApi,
|
|
382
494
|
NiceAuth0Service,
|
|
383
495
|
NiceAuthenticationService,
|
|
384
496
|
{ provide: HTTP_INTERCEPTORS, useClass: NiceAuthInterceptor, multi: true }
|
|
@@ -395,5 +507,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
395
507
|
* Generated bundle index. Do not edit.
|
|
396
508
|
*/
|
|
397
509
|
|
|
398
|
-
export { NiceAuth0Module, NiceAuth0Service, NiceAuthenticationService };
|
|
510
|
+
export { Auth0Api, AuthorizationStateValidationResult, NiceAuth0Module, NiceAuth0Service, NiceAuthenticationService, NoAuthenticatorException };
|
|
399
511
|
//# 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/auth0.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":["import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_AUTH0_OPTIONS = new InjectionToken(\"nice_auth0_options\");\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 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 } 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","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 } 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","export class NoAuthenticatorException {}\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/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 } 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","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,\n }\n });\n\n const headers = new HttpHeaders();\n headers.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","export class NoAuthenticatorException {}\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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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Auth0Api } from "../auth0.api";
|
|
2
|
+
import { NiceAuth0Options } from "../../nice-auth0-kit.options";
|
|
3
|
+
import { Observable } from "rxjs";
|
|
4
|
+
import { AuthorizationFlowRequest } from "./models/authorization-flow-request.model";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class Auth0AuthorizationApi extends Auth0Api {
|
|
7
|
+
private options;
|
|
8
|
+
constructor(options: NiceAuth0Options);
|
|
9
|
+
buildAuthFlowRequest(redirectUrl: string, connection?: string): Observable<AuthorizationFlowRequest>;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Auth0AuthorizationApi, never>;
|
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<Auth0AuthorizationApi>;
|
|
12
|
+
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { Auth0MfaApi } from "./mfa/mfa.api";
|
|
2
2
|
import { Auth0TokenApi } from "./token/token.api";
|
|
3
|
+
import { Auth0AuthorizationApi } from "./authorization/authorization.api";
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class NiceAuth0Service {
|
|
5
6
|
mfa: Auth0MfaApi;
|
|
6
7
|
token: Auth0TokenApi;
|
|
7
|
-
|
|
8
|
+
authorization: Auth0AuthorizationApi;
|
|
9
|
+
constructor(mfa: Auth0MfaApi, token: Auth0TokenApi, authorization: Auth0AuthorizationApi);
|
|
8
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<NiceAuth0Service, never>;
|
|
9
11
|
static ɵprov: i0.ɵɵInjectableDeclaration<NiceAuth0Service>;
|
|
10
12
|
}
|
|
@@ -10,6 +10,7 @@ export declare class Auth0TokenApi extends Auth0Api {
|
|
|
10
10
|
constructor(options: NiceAuth0Options, http: HttpClient);
|
|
11
11
|
authWithPassword(username: string, password: string): Observable<Auth0TokenResponse>;
|
|
12
12
|
authWithOobCode(mfaToken: string, oobCode: string, bindingCode: string): Observable<Auth0TokenResponse>;
|
|
13
|
+
authWithAuthorizationCode(authCode: string, redirectUrl: string): Observable<Auth0TokenResponse>;
|
|
13
14
|
refreshToken(refreshToken: string): Observable<Auth0TokenResponse>;
|
|
14
15
|
revokeRefreshToken(refreshToken: string): Observable<void>;
|
|
15
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<Auth0TokenApi, never>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BehaviorSubject, Observable } from "rxjs";
|
|
2
|
-
import { NiceAuth0Service } from "../api
|
|
2
|
+
import { NiceAuth0Service } from "../api";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export interface LoginResponse {
|
|
5
5
|
success: boolean;
|
|
@@ -13,6 +13,19 @@ export interface EmailAuthenticator {
|
|
|
13
13
|
type: "email";
|
|
14
14
|
email: string;
|
|
15
15
|
}
|
|
16
|
+
export interface AuthorizationFlowOptions {
|
|
17
|
+
connection?: string;
|
|
18
|
+
useStateValidation?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare enum AuthorizationStateValidationResult {
|
|
21
|
+
Omitted = "omitted",
|
|
22
|
+
Success = "success",
|
|
23
|
+
Failure = "failure"
|
|
24
|
+
}
|
|
25
|
+
export interface AuthorizationFlowResponse {
|
|
26
|
+
code: string;
|
|
27
|
+
stateValidationResult: AuthorizationStateValidationResult;
|
|
28
|
+
}
|
|
16
29
|
export declare class NiceAuthenticationService {
|
|
17
30
|
private auth0Service;
|
|
18
31
|
private lastMfaChallengeToken;
|
|
@@ -32,11 +45,15 @@ export declare class NiceAuthenticationService {
|
|
|
32
45
|
getAccessToken(): Observable<string>;
|
|
33
46
|
validateToken(): boolean;
|
|
34
47
|
passwordGrant(username: string, password: string): Observable<LoginResponse>;
|
|
48
|
+
authorizationCodeGrant(code: string, redirectUrl: string): Observable<LoginResponse>;
|
|
49
|
+
getAuthFlowRequestUri(redirectUrl: string, options?: AuthorizationFlowOptions): Observable<string>;
|
|
50
|
+
checkAuthFlowResponse(expectedResponsePath?: string): Observable<AuthorizationFlowResponse | null>;
|
|
35
51
|
validateOobCode(code: string): Observable<void>;
|
|
36
52
|
logout(): Observable<void>;
|
|
37
53
|
generateNewToken(): Observable<string>;
|
|
38
54
|
addMfaAuthenticator(authenticator: SmsAuthenticator | EmailAuthenticator): Observable<void>;
|
|
39
|
-
|
|
55
|
+
triggerMfaChallenge(): Observable<void>;
|
|
56
|
+
private catchGrantError;
|
|
40
57
|
static ɵfac: i0.ɵɵFactoryDeclaration<NiceAuthenticationService, never>;
|
|
41
58
|
static ɵprov: i0.ɵɵInjectableDeclaration<NiceAuthenticationService>;
|
|
42
59
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@recursyve/nice-auth0-kit",
|
|
3
|
-
"version": "13.0.0-beta.
|
|
3
|
+
"version": "13.0.0-beta.10",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^13.0.0",
|
|
6
|
-
"@angular/core": "^13.0.0"
|
|
6
|
+
"@angular/core": "^13.0.0",
|
|
7
|
+
"uuid": "^8.0.0"
|
|
7
8
|
},
|
|
8
9
|
"dependencies": {
|
|
9
10
|
"tslib": "^2.3.0",
|
package/public-api.d.ts
CHANGED