@auth0/auth0-angular 1.11.1 → 2.0.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 +7 -4
- 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
|
@@ -64,7 +64,7 @@ Take note of the **Client ID** and **Domain** values under the "Basic Informatio
|
|
|
64
64
|
|
|
65
65
|
#### Static configuration
|
|
66
66
|
|
|
67
|
-
Install the SDK into your application by importing `AuthModule.forRoot()` and configuring with your Auth0 domain and client id:
|
|
67
|
+
Install the SDK into your application by importing `AuthModule.forRoot()` and configuring with your Auth0 domain and client id, as well as the URL to which Auth0 should redirect back after succesful authentication:
|
|
68
68
|
|
|
69
69
|
```ts
|
|
70
70
|
import { NgModule } from '@angular/core';
|
|
@@ -76,6 +76,9 @@ import { AuthModule } from '@auth0/auth0-angular';
|
|
|
76
76
|
AuthModule.forRoot({
|
|
77
77
|
domain: 'YOUR_AUTH0_DOMAIN',
|
|
78
78
|
clientId: 'YOUR_AUTH0_CLIENT_ID',
|
|
79
|
+
authorizationParams: {
|
|
80
|
+
redirect_uri: window.location.origin,
|
|
81
|
+
},
|
|
79
82
|
}),
|
|
80
83
|
],
|
|
81
84
|
// ...
|
|
@@ -146,7 +149,7 @@ export class AppComponent {
|
|
|
146
149
|
}
|
|
147
150
|
```
|
|
148
151
|
|
|
149
|
-
By default the application will ask Auth0 to redirect back to the root URL of your application after authentication. This can be configured by setting the [redirectUri](https://auth0.github.io/auth0-angular/interfaces/auth_config.
|
|
152
|
+
By default the application will ask Auth0 to redirect back to the root URL of your application after authentication. This can be configured by setting the [redirectUri](https://auth0.github.io/auth0-angular/interfaces/auth_config.AuthConfig.html#redirectUri) option.
|
|
150
153
|
|
|
151
154
|
For more code samples on how to integrate the **auth0-angular** SDK in your **Angular** application, have a look at our [examples](https://github.com/auth0/auth0-angular/tree/master/EXAMPLES.md).
|
|
152
155
|
|
|
@@ -154,8 +157,8 @@ For more code samples on how to integrate the **auth0-angular** SDK in your **An
|
|
|
154
157
|
|
|
155
158
|
Explore public API's available in auth0-angular.
|
|
156
159
|
|
|
157
|
-
- [AuthService](https://auth0.github.io/auth0-angular/classes/auth_service.
|
|
158
|
-
- [AuthConfig](https://auth0.github.io/auth0-angular/interfaces/auth_config.
|
|
160
|
+
- [AuthService](https://auth0.github.io/auth0-angular/classes/auth_service.AuthService.html) - service used to interact with the SDK.
|
|
161
|
+
- [AuthConfig](https://auth0.github.io/auth0-angular/interfaces/auth_config.AuthConfig.html) - used to configure the SDK.
|
|
159
162
|
|
|
160
163
|
## Feedback
|
|
161
164
|
|
|
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=
|