@auth0/auth0-angular 1.11.1 → 2.0.0-beta.0
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/README.md +4 -2
- package/{esm2015/auth0-auth0-angular.js → esm2020/auth0-auth0-angular.mjs} +0 -0
- package/{esm2015/lib/abstract-navigator.js → esm2020/lib/abstract-navigator.mjs} +6 -5
- package/esm2020/lib/auth.client.mjs +23 -0
- package/esm2020/lib/auth.config.mjs +97 -0
- package/{esm2015/lib/auth.guard.js → esm2020/lib/auth.guard.mjs} +3 -3
- package/esm2020/lib/auth.interceptor.mjs +134 -0
- package/esm2020/lib/auth.module.mjs +39 -0
- package/esm2020/lib/auth.service.mjs +229 -0
- package/esm2020/lib/auth.state.mjs +100 -0
- package/esm2020/lib/interfaces.mjs +2 -0
- package/esm2020/public-api.mjs +13 -0
- package/{esm2015/useragent.js → esm2020/useragent.mjs} +2 -2
- package/fesm2015/auth0-auth0-angular.mjs +678 -0
- package/fesm2015/auth0-auth0-angular.mjs.map +1 -0
- package/{fesm2015/auth0-auth0-angular.js → fesm2020/auth0-auth0-angular.mjs} +80 -135
- package/fesm2020/auth0-auth0-angular.mjs.map +1 -0
- package/lib/abstract-navigator.d.ts +1 -0
- package/lib/auth.config.d.ts +4 -134
- package/lib/auth.interceptor.d.ts +7 -1
- package/lib/auth.module.d.ts +1 -0
- package/lib/auth.service.d.ts +8 -67
- package/lib/auth.state.d.ts +3 -0
- package/lib/interfaces.d.ts +5 -0
- package/package.json +23 -10
- package/public-api.d.ts +1 -0
- package/bundles/auth0-auth0-angular.umd.js +0 -1148
- package/bundles/auth0-auth0-angular.umd.js.map +0 -1
- package/esm2015/lib/auth.client.js +0 -22
- package/esm2015/lib/auth.config.js +0 -95
- package/esm2015/lib/auth.interceptor.js +0 -129
- package/esm2015/lib/auth.module.js +0 -38
- package/esm2015/lib/auth.service.js +0 -294
- package/esm2015/lib/auth.state.js +0 -99
- package/esm2015/public-api.js +0 -12
- package/fesm2015/auth0-auth0-angular.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
A library for integrating [Auth0](https://auth0.com) into an Angular application.
|
|
4
4
|
|
|
5
|
+
> :warning: Please be aware that v2 is currently in [**Beta**](https://auth0.com/docs/troubleshoot/product-lifecycle/product-release-stages). Whilst we encourage you to test the update within your applications, we do no recommend using this version in production yet. Please follow the [migration guide](./MIGRATION_GUIDE.md) when updating your application.
|
|
6
|
+
|
|
5
7
|

|
|
6
8
|
[](https://codecov.io/gh/auth0/auth0-angular)
|
|
7
9
|

|
|
@@ -29,13 +31,13 @@ This project only supports the [actively supported versions of Angular as stated
|
|
|
29
31
|
Using npm:
|
|
30
32
|
|
|
31
33
|
```sh
|
|
32
|
-
npm install @auth0/auth0-angular
|
|
34
|
+
npm install @auth0/auth0-angular@beta
|
|
33
35
|
```
|
|
34
36
|
|
|
35
37
|
We also have `ng-add` support, so the library can also be installed using the Angular CLI:
|
|
36
38
|
|
|
37
39
|
```sh
|
|
38
|
-
ng add @auth0/auth0-angular
|
|
40
|
+
ng add @auth0/auth0-angular@beta
|
|
39
41
|
```
|
|
40
42
|
|
|
41
43
|
### Configure Auth0
|
|
File without changes
|
|
@@ -8,11 +8,12 @@ export class AbstractNavigator {
|
|
|
8
8
|
try {
|
|
9
9
|
this.router = injector.get(Router);
|
|
10
10
|
}
|
|
11
|
-
catch
|
|
11
|
+
catch { }
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Navigates to the specified url. The router will be used if one is available, otherwise it falls back
|
|
15
15
|
* to `window.history.replaceState`.
|
|
16
|
+
*
|
|
16
17
|
* @param url The url to navigate to
|
|
17
18
|
*/
|
|
18
19
|
navigateByUrl(url) {
|
|
@@ -23,12 +24,12 @@ export class AbstractNavigator {
|
|
|
23
24
|
this.location.replaceState(url);
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
|
-
AbstractNavigator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
27
|
-
AbstractNavigator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
27
|
+
AbstractNavigator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigator, deps: [{ token: i1.Location }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
+
AbstractNavigator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigator, providedIn: 'root' });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigator, decorators: [{
|
|
29
30
|
type: Injectable,
|
|
30
31
|
args: [{
|
|
31
32
|
providedIn: 'root',
|
|
32
33
|
}]
|
|
33
34
|
}], ctorParameters: function () { return [{ type: i1.Location }, { type: i0.Injector }]; } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF2aWdhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2Fic3RyYWN0LW5hdmlnYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBTXpDLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBb0IsUUFBa0IsRUFBRSxRQUFrQjtRQUF0QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLElBQUk7WUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEM7UUFBQyxNQUFNLEdBQUU7SUFDWixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsR0FBVztRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUvQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDOzsrR0F2QlUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE5hdmlnYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyPzogUm91dGVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5yb3V0ZXIgPSBpbmplY3Rvci5nZXQoUm91dGVyKTtcbiAgICB9IGNhdGNoIHt9XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBzcGVjaWZpZWQgdXJsLiBUaGUgcm91dGVyIHdpbGwgYmUgdXNlZCBpZiBvbmUgaXMgYXZhaWxhYmxlLCBvdGhlcndpc2UgaXQgZmFsbHMgYmFja1xuICAgKiB0byBgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgdXJsIHRvIG5hdmlnYXRlIHRvXG4gICAqL1xuICBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm91dGVyKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmwpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { InjectionToken, VERSION } from '@angular/core';
|
|
2
|
+
import { Auth0Client } from '@auth0/auth0-spa-js';
|
|
3
|
+
import useragent from '../useragent';
|
|
4
|
+
export class Auth0ClientFactory {
|
|
5
|
+
static createClient(configFactory) {
|
|
6
|
+
const config = configFactory.get();
|
|
7
|
+
if (!config) {
|
|
8
|
+
throw new Error('Configuration must be specified either through AuthModule.forRoot or through AuthClientConfig.set');
|
|
9
|
+
}
|
|
10
|
+
return new Auth0Client({
|
|
11
|
+
...config,
|
|
12
|
+
auth0Client: {
|
|
13
|
+
name: useragent.name,
|
|
14
|
+
version: useragent.version,
|
|
15
|
+
env: {
|
|
16
|
+
'angular/core': VERSION.full,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export const Auth0ClientService = new InjectionToken('auth0.client');
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUVyQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBK0I7UUFDakQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxNQUFNLElBQUksS0FBSyxDQUNiLG1HQUFtRyxDQUNwRyxDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksV0FBVyxDQUFDO1lBQ3JCLEdBQUcsTUFBTTtZQUNULFdBQVcsRUFBRTtnQkFDWCxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7Z0JBQ3BCLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztnQkFDMUIsR0FBRyxFQUFFO29CQUNILGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSTtpQkFDN0I7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUNsRCxjQUFjLENBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoMENsaWVudCB9IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuaW1wb3J0IHsgQXV0aENsaWVudENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHVzZXJhZ2VudCBmcm9tICcuLi91c2VyYWdlbnQnO1xuXG5leHBvcnQgY2xhc3MgQXV0aDBDbGllbnRGYWN0b3J5IHtcbiAgc3RhdGljIGNyZWF0ZUNsaWVudChjb25maWdGYWN0b3J5OiBBdXRoQ2xpZW50Q29uZmlnKTogQXV0aDBDbGllbnQge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNvbmZpZ0ZhY3RvcnkuZ2V0KCk7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ29uZmlndXJhdGlvbiBtdXN0IGJlIHNwZWNpZmllZCBlaXRoZXIgdGhyb3VnaCBBdXRoTW9kdWxlLmZvclJvb3Qgb3IgdGhyb3VnaCBBdXRoQ2xpZW50Q29uZmlnLnNldCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBBdXRoMENsaWVudCh7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBhdXRoMENsaWVudDoge1xuICAgICAgICBuYW1lOiB1c2VyYWdlbnQubmFtZSxcbiAgICAgICAgdmVyc2lvbjogdXNlcmFnZW50LnZlcnNpb24sXG4gICAgICAgIGVudjoge1xuICAgICAgICAgICdhbmd1bGFyL2NvcmUnOiBWRVJTSU9OLmZ1bGwsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBdXRoMENsaWVudFNlcnZpY2UgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aDBDbGllbnQ+KFxuICAnYXV0aDAuY2xpZW50J1xuKTtcbiJdfQ==
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { InjectionToken, Injectable, Optional, Inject } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* A custom type guard to help identify route definitions that are actually HttpInterceptorRouteConfig types.
|
|
5
|
+
*
|
|
6
|
+
* @param def The route definition type
|
|
7
|
+
*/
|
|
8
|
+
export function isHttpInterceptorRouteConfig(def) {
|
|
9
|
+
return typeof def !== 'string';
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Gets and sets configuration for the internal Auth0 client. This can be
|
|
13
|
+
* used to provide configuration outside of using AuthModule.forRoot, i.e. from
|
|
14
|
+
* a factory provided by APP_INITIALIZER.
|
|
15
|
+
*
|
|
16
|
+
* @usage
|
|
17
|
+
*
|
|
18
|
+
* ```js
|
|
19
|
+
* // app.module.ts
|
|
20
|
+
* // ---------------------------
|
|
21
|
+
* import { AuthModule, AuthClientConfig } from '@auth0/auth0-angular';
|
|
22
|
+
*
|
|
23
|
+
* // Provide an initializer function that returns a Promise
|
|
24
|
+
* function configInitializer(
|
|
25
|
+
* http: HttpClient,
|
|
26
|
+
* config: AuthClientConfig
|
|
27
|
+
* ) {
|
|
28
|
+
* return () =>
|
|
29
|
+
* http
|
|
30
|
+
* .get('/config')
|
|
31
|
+
* .toPromise()
|
|
32
|
+
* .then((loadedConfig: any) => config.set(loadedConfig)); // Set the config that was loaded asynchronously here
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* // Provide APP_INITIALIZER with this function. Note that there is no config passed to AuthModule.forRoot
|
|
36
|
+
* imports: [
|
|
37
|
+
* // other imports..
|
|
38
|
+
*
|
|
39
|
+
* HttpClientModule,
|
|
40
|
+
* AuthModule.forRoot(), //<- don't pass any config here
|
|
41
|
+
* ],
|
|
42
|
+
* providers: [
|
|
43
|
+
* {
|
|
44
|
+
* provide: APP_INITIALIZER,
|
|
45
|
+
* useFactory: configInitializer, // <- pass your initializer function here
|
|
46
|
+
* deps: [HttpClient, AuthClientConfig],
|
|
47
|
+
* multi: true,
|
|
48
|
+
* },
|
|
49
|
+
* ],
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
*/
|
|
53
|
+
export class AuthClientConfig {
|
|
54
|
+
constructor(config) {
|
|
55
|
+
if (config) {
|
|
56
|
+
this.set(config);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Sets configuration to be read by other consumers of the service (see usage notes)
|
|
61
|
+
*
|
|
62
|
+
* @param config The configuration to set
|
|
63
|
+
*/
|
|
64
|
+
set(config) {
|
|
65
|
+
this.config = config;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Gets the config that has been set by other consumers of the service
|
|
69
|
+
*/
|
|
70
|
+
get() {
|
|
71
|
+
return this.config;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
AuthClientConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthClientConfig, deps: [{ token: AuthConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
75
|
+
AuthClientConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthClientConfig, providedIn: 'root' });
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthClientConfig, decorators: [{
|
|
77
|
+
type: Injectable,
|
|
78
|
+
args: [{ providedIn: 'root' }]
|
|
79
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
80
|
+
type: Optional
|
|
81
|
+
}, {
|
|
82
|
+
type: Inject,
|
|
83
|
+
args: [AuthConfigService]
|
|
84
|
+
}] }]; } });
|
|
85
|
+
/**
|
|
86
|
+
* Injection token for accessing configuration.
|
|
87
|
+
*
|
|
88
|
+
* @usageNotes
|
|
89
|
+
*
|
|
90
|
+
* Use the `Inject` decorator to access the configuration from a service or component:
|
|
91
|
+
*
|
|
92
|
+
* ```
|
|
93
|
+
* class MyService(@Inject(AuthConfigService) config: AuthConfig) {}
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export const AuthConfigService = new InjectionToken('auth0-angular.config');
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFzQjdFOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQzFDLEdBQXVCO0lBRXZCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0FBQ2pDLENBQUM7QUFvSEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUFtRCxNQUFtQjtRQUNwRSxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxNQUFrQjtRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBb0IsQ0FBQztJQUNuQyxDQUFDOzs4R0F2QlUsZ0JBQWdCLGtCQUdLLGlCQUFpQjtrSEFIdEMsZ0JBQWdCLGNBREgsTUFBTTs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBSW5CLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCOztBQXVCbkQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF1dGgwQ2xpZW50T3B0aW9ucyxcbiAgQ2FjaGVMb2NhdGlvbixcbiAgR2V0VG9rZW5TaWxlbnRseU9wdGlvbnMsXG4gIElDYWNoZSxcbn0gZnJvbSAnQGF1dGgwL2F1dGgwLXNwYS1qcyc7XG5cbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRGVmaW5lcyBhIGNvbW1vbiBzZXQgb2YgSFRUUCBtZXRob2RzLlxuICovXG5leHBvcnQgY29uc3QgZW51bSBIdHRwTWV0aG9kIHtcbiAgR2V0ID0gJ0dFVCcsXG4gIFBvc3QgPSAnUE9TVCcsXG4gIFB1dCA9ICdQVVQnLFxuICBQYXRjaCA9ICdQQVRDSCcsXG4gIERlbGV0ZSA9ICdERUxFVEUnLFxuICBIZWFkID0gJ0hFQUQnLFxufVxuXG4vKipcbiAqIERlZmluZXMgdGhlIHR5cGUgZm9yIGEgcm91dGUgY29uZmlnIGVudHJ5LiBDYW4gZWl0aGVyIGJlOlxuICpcbiAqIC0gYW4gb2JqZWN0IG9mIHR5cGUgSHR0cEludGVyY2VwdG9yUm91dGVDb25maWdcbiAqIC0gYSBzdHJpbmdcbiAqL1xuZXhwb3J0IHR5cGUgQXBpUm91dGVEZWZpbml0aW9uID0gSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcgfCBzdHJpbmc7XG5cbi8qKlxuICogQSBjdXN0b20gdHlwZSBndWFyZCB0byBoZWxwIGlkZW50aWZ5IHJvdXRlIGRlZmluaXRpb25zIHRoYXQgYXJlIGFjdHVhbGx5IEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnIHR5cGVzLlxuICpcbiAqIEBwYXJhbSBkZWYgVGhlIHJvdXRlIGRlZmluaXRpb24gdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyhcbiAgZGVmOiBBcGlSb3V0ZURlZmluaXRpb25cbik6IGRlZiBpcyBIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyB7XG4gIHJldHVybiB0eXBlb2YgZGVmICE9PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgSHR0cEludGVyY2VwdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEludGVyY2VwdG9yQ29uZmlnIHtcbiAgYWxsb3dlZExpc3Q6IEFwaVJvdXRlRGVmaW5pdGlvbltdO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGludGVyY2VwdG9yIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcge1xuICAvKipcbiAgICogVGhlIFVSTCB0byB0ZXN0LCBieSBzdXBwbHlpbmcgdGhlIFVSTCB0byBtYXRjaC5cbiAgICogSWYgYHRlc3RgIGlzIGEgbWF0Y2ggZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QgcGF0aCBmcm9tIHRoZSBIVFRQIGNsaWVudCwgdGhlblxuICAgKiBhbiBhY2Nlc3MgdG9rZW4gaXMgYXR0YWNoZWQgdG8gdGhlIHJlcXVlc3QgaW4gdGhlXG4gICAqICBbXCJBdXRob3JpemF0aW9uXCIgaGVhZGVyXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1vYXV0aC12Mi1iZWFyZXItMjAjc2VjdGlvbi0yLjEpLlxuICAgKlxuICAgKiBJZiB0aGUgdGVzdCBkb2VzIG5vdCBwYXNzLCB0aGUgcmVxdWVzdCBwcm9jZWVkcyB3aXRob3V0IHRoZSBhY2Nlc3MgdG9rZW4gYXR0YWNoZWQuXG4gICAqXG4gICAqIEEgd2lsZGNhcmQgY2hhcmFjdGVyIGNhbiBiZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIHN0YXJ0IG9mIHRoZSBVUkwuXG4gICAqXG4gICAqIEB1c2FnZW5vdGVzXG4gICAqXG4gICAqICcvYXBpJyAtIGV4YWN0bHkgbWF0Y2ggdGhlIHJvdXRlIC9hcGlcbiAgICogJy9hcGkvKicgLSBtYXRjaCBhbnkgcm91dGUgdGhhdCBzdGFydHMgd2l0aCAvYXBpL1xuICAgKi9cbiAgdXJpPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgSHR0cFJlcXVlc3QudXJsIHZhbHVlLCBhbGxvd2luZyB5b3UgdG8gZG9cbiAgICogYW55IGtpbmQgb2YgZmxleGlibGUgbWF0Y2hpbmcuXG4gICAqXG4gICAqIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGVuXG4gICAqIGFuIGFjY2VzcyB0b2tlbiBpcyBhdHRhY2hlZCB0byB0aGUgcmVxdWVzdCBpbiB0aGVcbiAgICogIFtcIkF1dGhvcml6YXRpb25cIiBoZWFkZXJdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLW9hdXRoLXYyLWJlYXJlci0yMCNzZWN0aW9uLTIuMSkuXG4gICAqXG4gICAqIElmIGl0IHJldHVybnMgZmFsc2UsIHRoZSByZXF1ZXN0IHByb2NlZWRzIHdpdGhvdXQgdGhlIGFjY2VzcyB0b2tlbiBhdHRhY2hlZC5cbiAgICovXG4gIHVyaU1hdGNoZXI/OiAodXJpOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIHRoYXQgYXJlIHBhc3NlZCB0byB0aGUgU0RLIHdoZW4gcmV0cmlldmluZyB0aGVcbiAgICogYWNjZXNzIHRva2VuIHRvIGF0dGFjaCB0byB0aGUgb3V0Z29pbmcgcmVxdWVzdC5cbiAgICovXG4gIHRva2VuT3B0aW9ucz86IEdldFRva2VuU2lsZW50bHlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRUUCBtZXRob2QgdG8gbWF0Y2ggb24uIElmIHNwZWNpZmllZCwgdGhlIEhUVFAgbWV0aG9kIG9mXG4gICAqIHRoZSBvdXRnb2luZyByZXF1ZXN0IHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoaXMuIElmIHRoZXJlIGlzIG5vIG1hdGNoLCB0aGVcbiAgICogQXV0aG9yaXphdGlvbiBoZWFkZXIgaXMgbm90IGF0dGFjaGVkLlxuICAgKlxuICAgKiBUaGUgSFRUUCBtZXRob2QgbmFtZSBpcyBjYXNlLXNlbnNpdGl2ZS5cbiAgICovXG4gIGh0dHBNZXRob2Q/OiBIdHRwTWV0aG9kIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvdyB0aGUgSFRUUCBjYWxsIHRvIGJlIGV4ZWN1dGVkIGFub255bW91c2x5LCB3aGVuIG5vIHRva2VuIGlzIGF2YWlsYWJsZS5cbiAgICpcbiAgICogV2hlbiBvbWl0dGVkIChvciBzZXQgdG8gZmFsc2UpLCBjYWxscyB0aGF0IG1hdGNoIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgZmFpbCB3aGVuIG5vIHRva2VuIGlzIGF2YWlsYWJsZS5cbiAgICovXG4gIGFsbG93QW5vbnltb3VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYXV0aGVudGljYXRpb24gc2VydmljZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcgZXh0ZW5kcyBBdXRoMENsaWVudE9wdGlvbnMge1xuICAvKipcbiAgICogQnkgZGVmYXVsdCwgaWYgdGhlIHBhZ2UgVVJMIGhhcyBjb2RlIGFuZCBzdGF0ZSBwYXJhbWV0ZXJzLCB0aGUgU0RLIHdpbGwgYXNzdW1lIHRoZXkgYXJlIGZvclxuICAgKiBhbiBBdXRoMCBhcHBsaWNhdGlvbiBhbmQgYXR0ZW1wdCB0byBleGNoYW5nZSB0aGUgY29kZSBmb3IgYSB0b2tlbi5cbiAgICogSW4gc29tZSBjYXNlcyB0aGUgY29kZSBtaWdodCBiZSBmb3Igc29tZXRoaW5nIGVsc2UgKGUuZy4gYW5vdGhlciBPQXV0aCBTREspLiBJbiB0aGVzZVxuICAgKiBpbnN0YW5jZXMgeW91IGNhbiBpbnN0cnVjdCB0aGUgY2xpZW50IHRvIGlnbm9yZSB0aGVtIGJ5IHNldHRpbmcgYHNraXBSZWRpcmVjdENhbGxiYWNrYC5cbiAgICpcbiAgICogYGBganNcbiAgICogQXV0aE1vZHVsZS5mb3JSb290KHtcbiAgICogICBza2lwUmVkaXJlY3RDYWxsYmFjazogd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lID09PSAnL290aGVyLWNhbGxiYWNrJ1xuICAgKiB9KVxuICAgKiBgYGBcbiAgICpcbiAgICogKipOb3RlKio6IEluIHRoZSBhYm92ZSBleGFtcGxlLCBgL290aGVyLWNhbGxiYWNrYCBpcyBhbiBleGlzdGluZyByb3V0ZSB0aGF0IHdpbGwgYmUgY2FsbGVkXG4gICAqIGJ5IGFueSBvdGhlciBPQXV0aCBwcm92aWRlciB3aXRoIGEgYGNvZGVgIChvciBgZXJyb3JgIGluIGNhc2Ugd2hlbiBzb21ldGhpbmcgd2VudCB3cm9uZykgYW5kIGBzdGF0ZWAuXG4gICAqXG4gICAqL1xuICBza2lwUmVkaXJlY3RDYWxsYmFjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBidWlsdC1pbiBIdHRwIEludGVyY2VwdG9yLCB1c2VkIGZvclxuICAgKiBhdXRvbWF0aWNhbGx5IGF0dGFjaGluZyBhY2Nlc3MgdG9rZW5zLlxuICAgKi9cbiAgaHR0cEludGVyY2VwdG9yPzogSHR0cEludGVyY2VwdG9yQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBQYXRoIGluIHlvdXIgYXBwbGljYXRpb24gdG8gcmVkaXJlY3QgdG8gd2hlbiB0aGUgQXV0aG9yaXphdGlvbiBzZXJ2ZXJcbiAgICogcmV0dXJucyBhbiBlcnJvci4gRGVmYXVsdHMgdG8gYC9gXG4gICAqL1xuICBlcnJvclBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW5ndWxhciBzcGVjaWZpYyBzdGF0ZSB0byBiZSBzdG9yZWQgYmVmb3JlIHJlZGlyZWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwU3RhdGUge1xuICAvKipcbiAgICogVGFyZ2V0IHBhdGggdGhlIGFwcCBnZXRzIHJvdXRlZCB0byBhZnRlclxuICAgKiBoYW5kbGluZyB0aGUgY2FsbGJhY2sgZnJvbSBBdXRoMCAoZGVmYXVsdHMgdG8gJy8nKVxuICAgKi9cbiAgdGFyZ2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbnkgY3VzdG9tIHBhcmFtZXRlciB0byBiZSBzdG9yZWQgaW4gYXBwU3RhdGVcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLyoqXG4gKiBHZXRzIGFuZCBzZXRzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnRlcm5hbCBBdXRoMCBjbGllbnQuIFRoaXMgY2FuIGJlXG4gKiB1c2VkIHRvIHByb3ZpZGUgY29uZmlndXJhdGlvbiBvdXRzaWRlIG9mIHVzaW5nIEF1dGhNb2R1bGUuZm9yUm9vdCwgaS5lLiBmcm9tXG4gKiBhIGZhY3RvcnkgcHJvdmlkZWQgYnkgQVBQX0lOSVRJQUxJWkVSLlxuICpcbiAqIEB1c2FnZVxuICpcbiAqIGBgYGpzXG4gKiAvLyBhcHAubW9kdWxlLnRzXG4gKiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIGltcG9ydCB7IEF1dGhNb2R1bGUsIEF1dGhDbGllbnRDb25maWcgfSBmcm9tICdAYXV0aDAvYXV0aDAtYW5ndWxhcic7XG4gKlxuICogLy8gUHJvdmlkZSBhbiBpbml0aWFsaXplciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBQcm9taXNlXG4gKiBmdW5jdGlvbiBjb25maWdJbml0aWFsaXplcihcbiAqICAgaHR0cDogSHR0cENsaWVudCxcbiAqICAgY29uZmlnOiBBdXRoQ2xpZW50Q29uZmlnXG4gKiApIHtcbiAqICAgcmV0dXJuICgpID0+XG4gKiAgICAgaHR0cFxuICogICAgICAgLmdldCgnL2NvbmZpZycpXG4gKiAgICAgICAudG9Qcm9taXNlKClcbiAqICAgICAgIC50aGVuKChsb2FkZWRDb25maWc6IGFueSkgPT4gY29uZmlnLnNldChsb2FkZWRDb25maWcpKTsgICAvLyBTZXQgdGhlIGNvbmZpZyB0aGF0IHdhcyBsb2FkZWQgYXN5bmNocm9ub3VzbHkgaGVyZVxuICogfVxuICpcbiAqIC8vIFByb3ZpZGUgQVBQX0lOSVRJQUxJWkVSIHdpdGggdGhpcyBmdW5jdGlvbi4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGNvbmZpZyBwYXNzZWQgdG8gQXV0aE1vZHVsZS5mb3JSb290XG4gKiBpbXBvcnRzOiBbXG4gKiAgIC8vIG90aGVyIGltcG9ydHMuLlxuICpcbiAqICAgSHR0cENsaWVudE1vZHVsZSxcbiAqICAgQXV0aE1vZHVsZS5mb3JSb290KCksICAgLy88LSBkb24ndCBwYXNzIGFueSBjb25maWcgaGVyZVxuICogXSxcbiAqIHByb3ZpZGVyczogW1xuICogICB7XG4gKiAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICogICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ0luaXRpYWxpemVyLCAgICAvLyA8LSBwYXNzIHlvdXIgaW5pdGlhbGl6ZXIgZnVuY3Rpb24gaGVyZVxuICogICAgIGRlcHM6IFtIdHRwQ2xpZW50LCBBdXRoQ2xpZW50Q29uZmlnXSxcbiAqICAgICBtdWx0aTogdHJ1ZSxcbiAqICAgfSxcbiAqIF0sXG4gKiBgYGBcbiAqXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXV0aENsaWVudENvbmZpZyB7XG4gIHByaXZhdGUgY29uZmlnPzogQXV0aENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEF1dGhDb25maWdTZXJ2aWNlKSBjb25maWc/OiBBdXRoQ29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5zZXQoY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjb25maWd1cmF0aW9uIHRvIGJlIHJlYWQgYnkgb3RoZXIgY29uc3VtZXJzIG9mIHRoZSBzZXJ2aWNlIChzZWUgdXNhZ2Ugbm90ZXMpXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24gdG8gc2V0XG4gICAqL1xuICBzZXQoY29uZmlnOiBBdXRoQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29uZmlnIHRoYXQgaGFzIGJlZW4gc2V0IGJ5IG90aGVyIGNvbnN1bWVycyBvZiB0aGUgc2VydmljZVxuICAgKi9cbiAgZ2V0KCk6IEF1dGhDb25maWcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyBhcyBBdXRoQ29uZmlnO1xuICB9XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBhY2Nlc3NpbmcgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICpcbiAqIFVzZSB0aGUgYEluamVjdGAgZGVjb3JhdG9yIHRvIGFjY2VzcyB0aGUgY29uZmlndXJhdGlvbiBmcm9tIGEgc2VydmljZSBvciBjb21wb25lbnQ6XG4gKlxuICogYGBgXG4gKiBjbGFzcyBNeVNlcnZpY2UoQEluamVjdChBdXRoQ29uZmlnU2VydmljZSkgY29uZmlnOiBBdXRoQ29uZmlnKSB7fVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBBdXRoQ29uZmlnU2VydmljZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoQ29uZmlnPihcbiAgJ2F1dGgwLWFuZ3VsYXIuY29uZmlnJ1xuKTtcbiJdfQ==
|
|
@@ -25,9 +25,9 @@ export class AuthGuard {
|
|
|
25
25
|
}));
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
29
|
-
AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
28
|
+
AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthGuard, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthGuard, providedIn: 'root' });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthGuard, decorators: [{
|
|
31
31
|
type: Injectable,
|
|
32
32
|
args: [{
|
|
33
33
|
providedIn: 'root',
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { from, of, iif, throwError } from 'rxjs';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { isHttpInterceptorRouteConfig, } from './auth.config';
|
|
4
|
+
import { switchMap, first, concatMap, catchError, tap, filter, mergeMap, mapTo, pluck, } from 'rxjs/operators';
|
|
5
|
+
import { Auth0ClientService } from './auth.client';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./auth.config";
|
|
8
|
+
import * as i2 from "./auth.state";
|
|
9
|
+
import * as i3 from "./auth.service";
|
|
10
|
+
import * as i4 from "@auth0/auth0-spa-js";
|
|
11
|
+
const waitUntil = (signal$) => (source$) => source$.pipe(mergeMap((value) => signal$.pipe(first(), mapTo(value))));
|
|
12
|
+
export class AuthHttpInterceptor {
|
|
13
|
+
constructor(configFactory, auth0Client, authState, authService) {
|
|
14
|
+
this.configFactory = configFactory;
|
|
15
|
+
this.auth0Client = auth0Client;
|
|
16
|
+
this.authState = authState;
|
|
17
|
+
this.authService = authService;
|
|
18
|
+
}
|
|
19
|
+
intercept(req, next) {
|
|
20
|
+
const config = this.configFactory.get();
|
|
21
|
+
if (!config.httpInterceptor?.allowedList) {
|
|
22
|
+
return next.handle(req);
|
|
23
|
+
}
|
|
24
|
+
const isLoaded$ = this.authService.isLoading$.pipe(filter((isLoading) => !isLoading));
|
|
25
|
+
return this.findMatchingRoute(req, config.httpInterceptor).pipe(concatMap((route) => iif(
|
|
26
|
+
// Check if a route was matched
|
|
27
|
+
() => route !== null,
|
|
28
|
+
// If we have a matching route, call getTokenSilently and attach the token to the
|
|
29
|
+
// outgoing request
|
|
30
|
+
of(route).pipe(waitUntil(isLoaded$), pluck('tokenOptions'), concatMap((options) => this.getAccessTokenSilently(options).pipe(catchError((err) => {
|
|
31
|
+
if (this.allowAnonymous(route, err)) {
|
|
32
|
+
return of('');
|
|
33
|
+
}
|
|
34
|
+
this.authState.setError(err);
|
|
35
|
+
return throwError(err);
|
|
36
|
+
}))), switchMap((token) => {
|
|
37
|
+
// Clone the request and attach the bearer token
|
|
38
|
+
const clone = token
|
|
39
|
+
? req.clone({
|
|
40
|
+
headers: req.headers.set('Authorization', `Bearer ${token}`),
|
|
41
|
+
})
|
|
42
|
+
: req;
|
|
43
|
+
return next.handle(clone);
|
|
44
|
+
})),
|
|
45
|
+
// If the URI being called was not found in our httpInterceptor config, simply
|
|
46
|
+
// pass the request through without attaching a token
|
|
47
|
+
next.handle(req))));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Duplicate of AuthService.getAccessTokenSilently, but with a slightly different error handling.
|
|
51
|
+
* Only used internally in the interceptor.
|
|
52
|
+
*
|
|
53
|
+
* @param options The options for configuring the token fetch.
|
|
54
|
+
*/
|
|
55
|
+
getAccessTokenSilently(options) {
|
|
56
|
+
return of(this.auth0Client).pipe(concatMap((client) => client.getTokenSilently(options)), tap((token) => this.authState.setAccessToken(token)), catchError((error) => {
|
|
57
|
+
this.authState.refresh();
|
|
58
|
+
return throwError(error);
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Strips the query and fragment from the given uri
|
|
63
|
+
*
|
|
64
|
+
* @param uri The uri to remove the query and fragment from
|
|
65
|
+
*/
|
|
66
|
+
stripQueryFrom(uri) {
|
|
67
|
+
if (uri.indexOf('?') > -1) {
|
|
68
|
+
uri = uri.substr(0, uri.indexOf('?'));
|
|
69
|
+
}
|
|
70
|
+
if (uri.indexOf('#') > -1) {
|
|
71
|
+
uri = uri.substr(0, uri.indexOf('#'));
|
|
72
|
+
}
|
|
73
|
+
return uri;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Determines whether the specified route can have an access token attached to it, based on matching the HTTP request against
|
|
77
|
+
* the interceptor route configuration.
|
|
78
|
+
*
|
|
79
|
+
* @param route The route to test
|
|
80
|
+
* @param request The HTTP request
|
|
81
|
+
*/
|
|
82
|
+
canAttachToken(route, request) {
|
|
83
|
+
const testPrimitive = (value) => {
|
|
84
|
+
if (!value) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
const requestPath = this.stripQueryFrom(request.url);
|
|
88
|
+
if (value === requestPath) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
// If the URL ends with an asterisk, match using startsWith.
|
|
92
|
+
return (value.indexOf('*') === value.length - 1 &&
|
|
93
|
+
request.url.startsWith(value.substr(0, value.length - 1)));
|
|
94
|
+
};
|
|
95
|
+
if (isHttpInterceptorRouteConfig(route)) {
|
|
96
|
+
if (route.httpMethod && route.httpMethod !== request.method) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
/* istanbul ignore if */
|
|
100
|
+
if (!route.uri && !route.uriMatcher) {
|
|
101
|
+
console.warn('Either a uri or uriMatcher is required when configuring the HTTP interceptor.');
|
|
102
|
+
}
|
|
103
|
+
return route.uriMatcher
|
|
104
|
+
? route.uriMatcher(request.url)
|
|
105
|
+
: testPrimitive(route.uri);
|
|
106
|
+
}
|
|
107
|
+
return testPrimitive(route);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Tries to match a route from the SDK configuration to the HTTP request.
|
|
111
|
+
* If a match is found, the route configuration is returned.
|
|
112
|
+
*
|
|
113
|
+
* @param request The Http request
|
|
114
|
+
* @param config HttpInterceptorConfig
|
|
115
|
+
*/
|
|
116
|
+
findMatchingRoute(request, config) {
|
|
117
|
+
return from(config.allowedList).pipe(first((route) => this.canAttachToken(route, request), null));
|
|
118
|
+
}
|
|
119
|
+
allowAnonymous(route, err) {
|
|
120
|
+
return (!!route &&
|
|
121
|
+
isHttpInterceptorRouteConfig(route) &&
|
|
122
|
+
!!route.allowAnonymous &&
|
|
123
|
+
['login_required', 'consent_required'].includes(err.error));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
AuthHttpInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthHttpInterceptor, deps: [{ token: i1.AuthClientConfig }, { token: Auth0ClientService }, { token: i2.AuthState }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
127
|
+
AuthHttpInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthHttpInterceptor });
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthHttpInterceptor, decorators: [{
|
|
129
|
+
type: Injectable
|
|
130
|
+
}], ctorParameters: function () { return [{ type: i1.AuthClientConfig }, { type: i4.Auth0Client, decorators: [{
|
|
131
|
+
type: Inject,
|
|
132
|
+
args: [Auth0ClientService]
|
|
133
|
+
}] }, { type: i2.AuthState }, { type: i3.AuthService }]; } });
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBYyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUVMLDRCQUE0QixHQUc3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEdBQUcsRUFDSCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxLQUFLLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUluRCxNQUFNLFNBQVMsR0FBRyxDQUFVLE9BQTRCLEVBQUUsRUFBRSxDQUFDLENBQzNELE9BQTRCLEVBQzVCLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFHNUUsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLGFBQStCLEVBQ0gsV0FBd0IsRUFDcEQsU0FBb0IsRUFDcEIsV0FBd0I7UUFIeEIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ0gsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDcEQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUMvQixDQUFDO0lBRUosU0FB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LElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDbkMsT0FBTyxDQUFDLElBQUksQ0FDViwrRUFBK0UsQ0FDaEYsQ0FBQzthQUNIO1lBRUQsT0FBTyxLQUFLLENBQUMsVUFBVTtnQkFDckIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDOUI7UUFFRCxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQ3ZCLE9BQXlCLEVBQ3pCLE1BQTZCO1FBRTdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ2xDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQzVELENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWdDLEVBQUUsR0FBUTtRQUMvRCxPQUFPLENBQ0wsQ0FBQyxDQUFDLEtBQUs7WUFDUCw0QkFBNEIsQ0FBQyxLQUFLLENBQUM7WUFDbkMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjO1lBQ3RCLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUMzRCxDQUFDO0lBQ0osQ0FBQzs7aUhBN0tVLG1CQUFtQixrREFHcEIsa0JBQWtCO3FIQUhqQixtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBSU4sTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEV2ZW50LFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20sIG9mLCBpaWYsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBBcGlSb3V0ZURlZmluaXRpb24sXG4gIGlzSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcsXG4gIEF1dGhDbGllbnRDb25maWcsXG4gIEh0dHBJbnRlcmNlcHRvckNvbmZpZyxcbn0gZnJvbSAnLi9hdXRoLmNvbmZpZyc7XG5cbmltcG9ydCB7XG4gIHN3aXRjaE1hcCxcbiAgZmlyc3QsXG4gIGNvbmNhdE1hcCxcbiAgY2F0Y2hFcnJvcixcbiAgdGFwLFxuICBmaWx0ZXIsXG4gIG1lcmdlTWFwLFxuICBtYXBUbyxcbiAgcGx1Y2ssXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF1dGgwQ2xpZW50LCBHZXRUb2tlblNpbGVudGx5T3B0aW9ucyB9IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuaW1wb3J0IHsgQXV0aDBDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLmNsaWVudCc7XG5pbXBvcnQgeyBBdXRoU3RhdGUgfSBmcm9tICcuL2F1dGguc3RhdGUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbmNvbnN0IHdhaXRVbnRpbCA9IDxUU2lnbmFsPihzaWduYWwkOiBPYnNlcnZhYmxlPFRTaWduYWw+KSA9PiA8VFNvdXJjZT4oXG4gIHNvdXJjZSQ6IE9ic2VydmFibGU8VFNvdXJjZT5cbikgPT4gc291cmNlJC5waXBlKG1lcmdlTWFwKCh2YWx1ZSkgPT4gc2lnbmFsJC5waXBlKGZpcnN0KCksIG1hcFRvKHZhbHVlKSkpKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhIdHRwSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ0ZhY3Rvcnk6IEF1dGhDbGllbnRDb25maWcsXG4gICAgQEluamVjdChBdXRoMENsaWVudFNlcnZpY2UpIHByaXZhdGUgYXV0aDBDbGllbnQ6IEF1dGgwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFN0YXRlOiBBdXRoU3RhdGUsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICkge31cblxuICBpbnRlcmNlcHQoXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ0ZhY3RvcnkuZ2V0KCk7XG4gICAgaWYgKCFjb25maWcuaHR0cEludGVyY2VwdG9yPy5hbGxvd2VkTGlzdCkge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNMb2FkZWQkID0gdGhpcy5hdXRoU2VydmljZS5pc0xvYWRpbmckLnBpcGUoXG4gICAgICBmaWx0ZXIoKGlzTG9hZGluZykgPT4gIWlzTG9hZGluZyksXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmZpbmRNYXRjaGluZ1JvdXRlKHJlcSwgY29uZmlnLmh0dHBJbnRlcmNlcHRvcikucGlwZShcbiAgICAgIGNvbmNhdE1hcCgocm91dGUpID0+XG4gICAgICAgIGlpZihcbiAgICAgICAgICAvLyBDaGVjayBpZiBhIHJvdXRlIHdhcyBtYXRjaGVkXG4gICAgICAgICAgKCkgPT4gcm91dGUgIT09IG51bGwsXG4gICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1hdGNoaW5nIHJvdXRlLCBjYWxsIGdldFRva2VuU2lsZW50bHkgYW5kIGF0dGFjaCB0aGUgdG9rZW4gdG8gdGhlXG4gICAgICAgICAgLy8gb3V0Z29pbmcgcmVxdWVzdFxuICAgICAgICAgIG9mKHJvdXRlKS5waXBlKFxuICAgICAgICAgICAgd2FpdFVudGlsKGlzTG9hZGVkJCksXG4gICAgICAgICAgICBwbHVjaygndG9rZW5PcHRpb25zJyksXG4gICAgICAgICAgICBjb25jYXRNYXA8R2V0VG9rZW5TaWxlbnRseU9wdGlvbnMsIE9ic2VydmFibGU8c3RyaW5nPj4oKG9wdGlvbnMpID0+XG4gICAgICAgICAgICAgIHRoaXMuZ2V0QWNjZXNzVG9rZW5TaWxlbnRseShvcHRpb25zKS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dBbm9ueW1vdXMocm91dGUsIGVycikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU3RhdGUuc2V0RXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodG9rZW46IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAvLyBDbG9uZSB0aGUgcmVxdWVzdCBhbmQgYXR0YWNoIHRoZSBiZWFyZXIgdG9rZW5cbiAgICAgICAgICAgICAgY29uc3QgY2xvbmUgPSB0b2tlblxuICAgICAgICAgICAgICAgID8gcmVxLmNsb25lKHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMuc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICBgQmVhcmVyICR7dG9rZW59YFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICA6IHJlcTtcblxuICAgICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUoY2xvbmUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIC8vIElmIHRoZSBVUkkgYmVpbmcgY2FsbGVkIHdhcyBub3QgZm91bmQgaW4gb3VyIGh0dHBJbnRlcmNlcHRvciBjb25maWcsIHNpbXBseVxuICAgICAgICAgIC8vIHBhc3MgdGhlIHJlcXVlc3QgdGhyb3VnaCB3aXRob3V0IGF0dGFjaGluZyBhIHRva2VuXG4gICAgICAgICAgbmV4dC5oYW5kbGUocmVxKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEdXBsaWNhdGUgb2YgQXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW5TaWxlbnRseSwgYnV0IHdpdGggYSBzbGlnaHRseSBkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcuXG4gICAqIE9ubHkgdXNlZCBpbnRlcm5hbGx5IGluIHRoZSBpbnRlcmNlcHRvci5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSB0b2tlbiBmZXRjaC5cbiAgICovXG4gIHByaXZhdGUgZ2V0QWNjZXNzVG9rZW5TaWxlbnRseShcbiAgICBvcHRpb25zPzogR2V0VG9rZW5TaWxlbnRseU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gb2YodGhpcy5hdXRoMENsaWVudCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2xpZW50KSA9PiBjbGllbnQuZ2V0VG9rZW5TaWxlbnRseShvcHRpb25zKSksXG4gICAgICB0YXAoKHRva2VuKSA9PiB0aGlzLmF1dGhTdGF0ZS5zZXRBY2Nlc3NUb2tlbih0b2tlbikpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5hdXRoU3RhdGUucmVmcmVzaCgpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3RyaXBzIHRoZSBxdWVyeSBhbmQgZnJhZ21lbnQgZnJvbSB0aGUgZ2l2ZW4gdXJpXG4gICAqXG4gICAqIEBwYXJhbSB1cmkgVGhlIHVyaSB0byByZW1vdmUgdGhlIHF1ZXJ5IGFuZCBmcmFnbWVudCBmcm9tXG4gICAqL1xuICBwcml2YXRlIHN0cmlwUXVlcnlGcm9tKHVyaTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodXJpLmluZGV4T2YoJz8nKSA+IC0xKSB7XG4gICAgICB1cmkgPSB1cmkuc3Vic3RyKDAsIHVyaS5pbmRleE9mKCc/JykpO1xuICAgIH1cblxuICAgIGlmICh1cmkuaW5kZXhPZignIycpID4gLTEpIHtcbiAgICAgIHVyaSA9IHVyaS5zdWJzdHIoMCwgdXJpLmluZGV4T2YoJyMnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCByb3V0ZSBjYW4gaGF2ZSBhbiBhY2Nlc3MgdG9rZW4gYXR0YWNoZWQgdG8gaXQsIGJhc2VkIG9uIG1hdGNoaW5nIHRoZSBIVFRQIHJlcXVlc3QgYWdhaW5zdFxuICAgKiB0aGUgaW50ZXJjZXB0b3Igcm91dGUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHJvdXRlIFRoZSByb3V0ZSB0byB0ZXN0XG4gICAqIEBwYXJhbSByZXF1ZXN0IFRoZSBIVFRQIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgY2FuQXR0YWNoVG9rZW4oXG4gICAgcm91dGU6IEFwaVJvdXRlRGVmaW5pdGlvbixcbiAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+XG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRlc3RQcmltaXRpdmUgPSAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3RQYXRoID0gdGhpcy5zdHJpcFF1ZXJ5RnJvbShyZXF1ZXN0LnVybCk7XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gcmVxdWVzdFBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBVUkwgZW5kcyB3aXRoIGFuIGFzdGVyaXNrLCBtYXRjaCB1c2luZyBzdGFydHNXaXRoLlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgdmFsdWUuaW5kZXhPZignKicpID09PSB2YWx1ZS5sZW5ndGggLSAxICYmXG4gICAgICAgIHJlcXVlc3QudXJsLnN0YXJ0c1dpdGgodmFsdWUuc3Vic3RyKDAsIHZhbHVlLmxlbmd0aCAtIDEpKVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKGlzSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcocm91dGUpKSB7XG4gICAgICBpZiAocm91dGUuaHR0cE1ldGhvZCAmJiByb3V0ZS5odHRwTWV0aG9kICE9PSByZXF1ZXN0Lm1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCFyb3V0ZS51cmkgJiYgIXJvdXRlLnVyaU1hdGNoZXIpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdFaXRoZXIgYSB1cmkgb3IgdXJpTWF0Y2hlciBpcyByZXF1aXJlZCB3aGVuIGNvbmZpZ3VyaW5nIHRoZSBIVFRQIGludGVyY2VwdG9yLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvdXRlLnVyaU1hdGNoZXJcbiAgICAgICAgPyByb3V0ZS51cmlNYXRjaGVyKHJlcXVlc3QudXJsKVxuICAgICAgICA6IHRlc3RQcmltaXRpdmUocm91dGUudXJpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVzdFByaW1pdGl2ZShyb3V0ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZXMgdG8gbWF0Y2ggYSByb3V0ZSBmcm9tIHRoZSBTREsgY29uZmlndXJhdGlvbiB0byB0aGUgSFRUUCByZXF1ZXN0LlxuICAgKiBJZiBhIG1hdGNoIGlzIGZvdW5kLCB0aGUgcm91dGUgY29uZmlndXJhdGlvbiBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgVGhlIEh0dHAgcmVxdWVzdFxuICAgKiBAcGFyYW0gY29uZmlnIEh0dHBJbnRlcmNlcHRvckNvbmZpZ1xuICAgKi9cbiAgcHJpdmF0ZSBmaW5kTWF0Y2hpbmdSb3V0ZShcbiAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIGNvbmZpZzogSHR0cEludGVyY2VwdG9yQ29uZmlnXG4gICk6IE9ic2VydmFibGU8QXBpUm91dGVEZWZpbml0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiBmcm9tKGNvbmZpZy5hbGxvd2VkTGlzdCkucGlwZShcbiAgICAgIGZpcnN0KChyb3V0ZSkgPT4gdGhpcy5jYW5BdHRhY2hUb2tlbihyb3V0ZSwgcmVxdWVzdCksIG51bGwpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWxsb3dBbm9ueW1vdXMocm91dGU6IEFwaVJvdXRlRGVmaW5pdGlvbiB8IG51bGwsIGVycjogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhcm91dGUgJiZcbiAgICAgIGlzSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcocm91dGUpICYmXG4gICAgICAhIXJvdXRlLmFsbG93QW5vbnltb3VzICYmXG4gICAgICBbJ2xvZ2luX3JlcXVpcmVkJywgJ2NvbnNlbnRfcmVxdWlyZWQnXS5pbmNsdWRlcyhlcnIuZXJyb3IpXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { AuthService } from './auth.service';
|
|
3
|
+
import { AuthConfigService, AuthClientConfig } from './auth.config';
|
|
4
|
+
import { Auth0ClientService, Auth0ClientFactory } from './auth.client';
|
|
5
|
+
import { AuthGuard } from './auth.guard';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class AuthModule {
|
|
8
|
+
/**
|
|
9
|
+
* Initialize the authentication module system. Configuration can either be specified here,
|
|
10
|
+
* or by calling AuthClientConfig.set (perhaps from an APP_INITIALIZER factory function).
|
|
11
|
+
*
|
|
12
|
+
* @param config The optional configuration for the SDK.
|
|
13
|
+
*/
|
|
14
|
+
static forRoot(config) {
|
|
15
|
+
return {
|
|
16
|
+
ngModule: AuthModule,
|
|
17
|
+
providers: [
|
|
18
|
+
AuthService,
|
|
19
|
+
AuthGuard,
|
|
20
|
+
{
|
|
21
|
+
provide: AuthConfigService,
|
|
22
|
+
useValue: config,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
provide: Auth0ClientService,
|
|
26
|
+
useFactory: Auth0ClientFactory.createClient,
|
|
27
|
+
deps: [AuthClientConfig],
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
AuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
34
|
+
AuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthModule });
|
|
35
|
+
AuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthModule });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthModule, decorators: [{
|
|
37
|
+
type: NgModule
|
|
38
|
+
}] });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLFVBQVU7SUFDckI7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW1CO1FBQ2hDLE9BQU87WUFDTCxRQUFRLEVBQUUsVUFBVTtZQUNwQixTQUFTLEVBQUU7Z0JBQ1QsV0FBVztnQkFDWCxTQUFTO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxNQUFNO2lCQUNqQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixVQUFVLEVBQUUsa0JBQWtCLENBQUMsWUFBWTtvQkFDM0MsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQ3pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7d0dBeEJVLFVBQVU7eUdBQVYsVUFBVTt5R0FBVixVQUFVOzRGQUFWLFVBQVU7a0JBRHRCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBBdXRoQ29uZmlnU2VydmljZSwgQXV0aENsaWVudENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aDBDbGllbnRTZXJ2aWNlLCBBdXRoMENsaWVudEZhY3RvcnkgfSBmcm9tICcuL2F1dGguY2xpZW50JztcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vYXV0aC5ndWFyZCc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBhdXRoZW50aWNhdGlvbiBtb2R1bGUgc3lzdGVtLiBDb25maWd1cmF0aW9uIGNhbiBlaXRoZXIgYmUgc3BlY2lmaWVkIGhlcmUsXG4gICAqIG9yIGJ5IGNhbGxpbmcgQXV0aENsaWVudENvbmZpZy5zZXQgKHBlcmhhcHMgZnJvbSBhbiBBUFBfSU5JVElBTElaRVIgZmFjdG9yeSBmdW5jdGlvbikuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBTREsuXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBBdXRoQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBdXRoTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEF1dGhTZXJ2aWNlLFxuICAgICAgICBBdXRoR3VhcmQsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBdXRoQ29uZmlnU2VydmljZSxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQXV0aDBDbGllbnRTZXJ2aWNlLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IEF1dGgwQ2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQsXG4gICAgICAgICAgZGVwczogW0F1dGhDbGllbnRDb25maWddLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|