@auth0/auth0-angular 2.4.0 → 2.5.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.
@@ -1,5 +1,5 @@
1
1
  import { OnDestroy } from '@angular/core';
2
- import { Auth0Client, PopupLoginOptions, PopupConfigOptions, GetTokenSilentlyOptions, GetTokenWithPopupOptions, RedirectLoginResult, GetTokenSilentlyVerboseResponse, ConnectAccountRedirectResult, CustomFetchMinimalOutput, Fetcher, FetcherConfig } from '@auth0/auth0-spa-js';
2
+ import { Auth0Client, PopupLoginOptions, PopupConfigOptions, GetTokenSilentlyOptions, GetTokenWithPopupOptions, RedirectLoginResult, GetTokenSilentlyVerboseResponse, ConnectAccountRedirectResult, RedirectConnectAccountOptions, CustomFetchMinimalOutput, Fetcher, FetcherConfig } from '@auth0/auth0-spa-js';
3
3
  import { Observable } from 'rxjs';
4
4
  import { AbstractNavigator } from './abstract-navigator';
5
5
  import { AuthClientConfig, AppState } from './auth.config';
@@ -56,6 +56,27 @@ export declare class AuthService<TAppState extends AppState = AppState> implemen
56
56
  * @param options The login options
57
57
  */
58
58
  loginWithRedirect(options?: RedirectLoginOptions<TAppState>): Observable<void>;
59
+ /**
60
+ * ```js
61
+ * connectAccountWithRedirect({
62
+ * connection: 'google-oauth2',
63
+ * scopes: ['openid', 'profile', 'email', 'https://www.googleapis.com/auth/drive.readonly'],
64
+ * authorization_params: {
65
+ * // additional authorization params to forward to the authorization server
66
+ * }
67
+ * });
68
+ * ```
69
+ *
70
+ * Redirects to the `/connect` URL using the parameters
71
+ * provided as arguments. This then redirects to the connection's login page
72
+ * where the user can authenticate and authorize the account to be connected.
73
+ *
74
+ * If connecting the account is successful, `handleRedirectCallback` will be called
75
+ * with the details of the connected account.
76
+ *
77
+ * @param options The connect account options
78
+ */
79
+ connectAccountWithRedirect(options: RedirectConnectAccountOptions<TAppState>): Observable<void>;
59
80
  /**
60
81
  * ```js
61
82
  * await loginWithPopup(options);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auth0/auth0-angular",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "Auth0 SDK for Angular Single Page Applications (SPA)",
5
5
  "keywords": [
6
6
  "auth0",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "tslib": "^2.0.0",
30
- "@auth0/auth0-spa-js": "^2.0.1"
30
+ "@auth0/auth0-spa-js": "^2.11.0"
31
31
  },
32
32
  "schematics": "./schematics/collection.json",
33
33
  "module": "fesm2022/auth0-auth0-angular.mjs",
@@ -38,8 +38,6 @@
38
38
  },
39
39
  ".": {
40
40
  "types": "./index.d.ts",
41
- "esm2022": "./esm2022/auth0-auth0-angular.mjs",
42
- "esm": "./esm2022/auth0-auth0-angular.mjs",
43
41
  "default": "./fesm2022/auth0-auth0-angular.mjs"
44
42
  }
45
43
  },
package/public-api.d.ts CHANGED
@@ -9,4 +9,4 @@ export * from './lib/interfaces';
9
9
  export * from './lib/provide';
10
10
  export * from './lib/functional';
11
11
  export * from './lib/abstract-navigator';
12
- export { AuthorizationParams, PopupLoginOptions, PopupConfigOptions, GetTokenWithPopupOptions, GetTokenSilentlyOptions, ICache, Cacheable, LocalStorageCache, InMemoryCache, IdToken, User, GenericError, TimeoutError, MfaRequiredError, PopupTimeoutError, AuthenticationError, PopupCancelledError, MissingRefreshTokenError, Fetcher, FetcherConfig, CustomFetchMinimalOutput, UseDpopNonceError, } from '@auth0/auth0-spa-js';
12
+ export { AuthorizationParams, PopupLoginOptions, PopupConfigOptions, GetTokenWithPopupOptions, GetTokenSilentlyOptions, RedirectConnectAccountOptions, ICache, Cacheable, LocalStorageCache, InMemoryCache, IdToken, User, GenericError, TimeoutError, MfaRequiredError, PopupTimeoutError, AuthenticationError, PopupCancelledError, MissingRefreshTokenError, Fetcher, FetcherConfig, CustomFetchMinimalOutput, UseDpopNonceError, } from '@auth0/auth0-spa-js';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ngAdd = void 0;
3
+ exports.ngAdd = ngAdd;
4
4
  const tasks_1 = require("@angular-devkit/schematics/tasks");
5
5
  // Just return the tree
6
6
  function ngAdd() {
@@ -9,5 +9,4 @@ function ngAdd() {
9
9
  return tree;
10
10
  };
11
11
  }
12
- exports.ngAdd = ngAdd;
13
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/auth0-angular/schematics/ng-add/index.ts"],"names":[],"mappings":";;;AACA,4DAA0E;AAE1E,uBAAuB;AACvB,SAAgB,KAAK;IACnB,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AALD,sBAKC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/auth0-angular/schematics/ng-add/index.ts"],"names":[],"mappings":";;AAIA,sBAKC;AARD,4DAA0E;AAE1E,uBAAuB;AACvB,SAAgB,KAAK;IACnB,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aDAtYXV0aDAtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2F1dGgwLWF1dGgwLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,35 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- export class AbstractNavigator {
6
- constructor(location, injector) {
7
- this.location = location;
8
- try {
9
- this.router = injector.get(Router);
10
- }
11
- catch { }
12
- }
13
- /**
14
- * Navigates to the specified url. The router will be used if one is available, otherwise it falls back
15
- * to `window.history.replaceState`.
16
- *
17
- * @param url The url to navigate to
18
- */
19
- navigateByUrl(url) {
20
- if (this.router) {
21
- this.router.navigateByUrl(url);
22
- return;
23
- }
24
- this.location.replaceState(url);
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractNavigator, deps: [{ token: i1.Location }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractNavigator, providedIn: 'root' }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractNavigator, decorators: [{
30
- type: Injectable,
31
- args: [{
32
- providedIn: 'root',
33
- }]
34
- }], ctorParameters: () => [{ type: i1.Location }, { type: i0.Injector }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF2aWdhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2Fic3RyYWN0LW5hdmlnYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBTXpDLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBb0IsUUFBa0IsRUFBRSxRQUFrQjtRQUF0QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQztJQUNaLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRS9CLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQzsrR0F2QlUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQWJzdHJhY3ROYXZpZ2F0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcj86IFJvdXRlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucm91dGVyID0gaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgfSBjYXRjaCB7fVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgc3BlY2lmaWVkIHVybC4gVGhlIHJvdXRlciB3aWxsIGJlIHVzZWQgaWYgb25lIGlzIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGl0IGZhbGxzIGJhY2tcbiAgICogdG8gYHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIHVybCB0byBuYXZpZ2F0ZSB0b1xuICAgKi9cbiAgbmF2aWdhdGVCeVVybCh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvdXRlcikge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodXJsKTtcbiAgfVxufVxuIl19
@@ -1,23 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUVyQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBK0I7UUFDakQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUdBQW1HLENBQ3BHLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixHQUFHLE1BQU07WUFDVCxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2dCQUNwQixPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQzFCLEdBQUcsRUFBRTtvQkFDSCxjQUFjLEVBQUUsT0FBTyxDQUFDLElBQUk7aUJBQzdCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FDbEQsY0FBYyxDQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aDBDbGllbnQgfSBmcm9tICdAYXV0aDAvYXV0aDAtc3BhLWpzJztcbmltcG9ydCB7IEF1dGhDbGllbnRDb25maWcgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB1c2VyYWdlbnQgZnJvbSAnLi4vdXNlcmFnZW50JztcblxuZXhwb3J0IGNsYXNzIEF1dGgwQ2xpZW50RmFjdG9yeSB7XG4gIHN0YXRpYyBjcmVhdGVDbGllbnQoY29uZmlnRmFjdG9yeTogQXV0aENsaWVudENvbmZpZyk6IEF1dGgwQ2xpZW50IHtcbiAgICBjb25zdCBjb25maWcgPSBjb25maWdGYWN0b3J5LmdldCgpO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gbXVzdCBiZSBzcGVjaWZpZWQgZWl0aGVyIHRocm91Z2ggQXV0aE1vZHVsZS5mb3JSb290IG9yIHRocm91Z2ggQXV0aENsaWVudENvbmZpZy5zZXQnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQXV0aDBDbGllbnQoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgYXV0aDBDbGllbnQ6IHtcbiAgICAgICAgbmFtZTogdXNlcmFnZW50Lm5hbWUsXG4gICAgICAgIHZlcnNpb246IHVzZXJhZ2VudC52ZXJzaW9uLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICAnYW5ndWxhci9jb3JlJzogVkVSU0lPTi5mdWxsLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQXV0aDBDbGllbnRTZXJ2aWNlID0gbmV3IEluamVjdGlvblRva2VuPEF1dGgwQ2xpZW50PihcbiAgJ2F1dGgwLmNsaWVudCdcbik7XG4iXX0=
@@ -1,97 +0,0 @@
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
- * Injection token for accessing configuration.
13
- *
14
- * @usageNotes
15
- *
16
- * Use the `Inject` decorator to access the configuration from a service or component:
17
- *
18
- * ```
19
- * class MyService(@Inject(AuthConfigService) config: AuthConfig) {}
20
- * ```
21
- */
22
- export const AuthConfigService = new InjectionToken('auth0-angular.config');
23
- /**
24
- * Gets and sets configuration for the internal Auth0 client. This can be
25
- * used to provide configuration outside of using AuthModule.forRoot, i.e. from
26
- * a factory provided by APP_INITIALIZER.
27
- *
28
- * @usage
29
- *
30
- * ```js
31
- * // app.module.ts
32
- * // ---------------------------
33
- * import { AuthModule, AuthClientConfig } from '@auth0/auth0-angular';
34
- *
35
- * // Provide an initializer function that returns a Promise
36
- * function configInitializer(
37
- * http: HttpClient,
38
- * config: AuthClientConfig
39
- * ) {
40
- * return () =>
41
- * http
42
- * .get('/config')
43
- * .toPromise()
44
- * .then((loadedConfig: any) => config.set(loadedConfig)); // Set the config that was loaded asynchronously here
45
- * }
46
- *
47
- * // Provide APP_INITIALIZER with this function. Note that there is no config passed to AuthModule.forRoot
48
- * imports: [
49
- * // other imports..
50
- *
51
- * HttpClientModule,
52
- * AuthModule.forRoot(), //<- don't pass any config here
53
- * ],
54
- * providers: [
55
- * {
56
- * provide: APP_INITIALIZER,
57
- * useFactory: configInitializer, // <- pass your initializer function here
58
- * deps: [HttpClient, AuthClientConfig],
59
- * multi: true,
60
- * },
61
- * ],
62
- * ```
63
- *
64
- */
65
- export class AuthClientConfig {
66
- constructor(config) {
67
- if (config) {
68
- this.set(config);
69
- }
70
- }
71
- /**
72
- * Sets configuration to be read by other consumers of the service (see usage notes)
73
- *
74
- * @param config The configuration to set
75
- */
76
- set(config) {
77
- this.config = config;
78
- }
79
- /**
80
- * Gets the config that has been set by other consumers of the service
81
- */
82
- get() {
83
- return this.config;
84
- }
85
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthClientConfig, deps: [{ token: AuthConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
86
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthClientConfig, providedIn: 'root' }); }
87
- }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthClientConfig, decorators: [{
89
- type: Injectable,
90
- args: [{ providedIn: 'root' }]
91
- }], ctorParameters: () => [{ type: undefined, decorators: [{
92
- type: Optional
93
- }, {
94
- type: Inject,
95
- args: [AuthConfigService]
96
- }] }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFzQjdFOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQzFDLEdBQXVCO0lBRXZCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0FBQ2pDLENBQUM7QUFvSEQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBbUQsTUFBbUI7UUFDcEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLE1BQWtCO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFvQixDQUFDO0lBQ25DLENBQUM7K0dBdkJVLGdCQUFnQixrQkFHSyxpQkFBaUI7bUhBSHRDLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFJbkIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRoMENsaWVudE9wdGlvbnMsXG4gIENhY2hlTG9jYXRpb24sXG4gIEdldFRva2VuU2lsZW50bHlPcHRpb25zLFxuICBJQ2FjaGUsXG59IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb21tb24gc2V0IG9mIEhUVFAgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gSHR0cE1ldGhvZCB7XG4gIEdldCA9ICdHRVQnLFxuICBQb3N0ID0gJ1BPU1QnLFxuICBQdXQgPSAnUFVUJyxcbiAgUGF0Y2ggPSAnUEFUQ0gnLFxuICBEZWxldGUgPSAnREVMRVRFJyxcbiAgSGVhZCA9ICdIRUFEJyxcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSB0eXBlIGZvciBhIHJvdXRlIGNvbmZpZyBlbnRyeS4gQ2FuIGVpdGhlciBiZTpcbiAqXG4gKiAtIGFuIG9iamVjdCBvZiB0eXBlIEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnXG4gKiAtIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCB0eXBlIEFwaVJvdXRlRGVmaW5pdGlvbiA9IEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnIHwgc3RyaW5nO1xuXG4vKipcbiAqIEEgY3VzdG9tIHR5cGUgZ3VhcmQgdG8gaGVscCBpZGVudGlmeSByb3V0ZSBkZWZpbml0aW9ucyB0aGF0IGFyZSBhY3R1YWxseSBIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyB0eXBlcy5cbiAqXG4gKiBAcGFyYW0gZGVmIFRoZSByb3V0ZSBkZWZpbml0aW9uIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcoXG4gIGRlZjogQXBpUm91dGVEZWZpbml0aW9uXG4pOiBkZWYgaXMgSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcge1xuICByZXR1cm4gdHlwZW9mIGRlZiAhPT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIEh0dHBJbnRlcmNlcHRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBJbnRlcmNlcHRvckNvbmZpZyB7XG4gIGFsbG93ZWRMaXN0OiBBcGlSb3V0ZURlZmluaXRpb25bXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSBpbnRlcmNlcHRvciByb3V0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBVUkwgdG8gdGVzdCwgYnkgc3VwcGx5aW5nIHRoZSBVUkwgdG8gbWF0Y2guXG4gICAqIElmIGB0ZXN0YCBpcyBhIG1hdGNoIGZvciB0aGUgY3VycmVudCByZXF1ZXN0IHBhdGggZnJvbSB0aGUgSFRUUCBjbGllbnQsIHRoZW5cbiAgICogYW4gYWNjZXNzIHRva2VuIGlzIGF0dGFjaGVkIHRvIHRoZSByZXF1ZXN0IGluIHRoZVxuICAgKiAgW1wiQXV0aG9yaXphdGlvblwiIGhlYWRlcl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtb2F1dGgtdjItYmVhcmVyLTIwI3NlY3Rpb24tMi4xKS5cbiAgICpcbiAgICogSWYgdGhlIHRlc3QgZG9lcyBub3QgcGFzcywgdGhlIHJlcXVlc3QgcHJvY2VlZHMgd2l0aG91dCB0aGUgYWNjZXNzIHRva2VuIGF0dGFjaGVkLlxuICAgKlxuICAgKiBBIHdpbGRjYXJkIGNoYXJhY3RlciBjYW4gYmUgdXNlZCB0byBtYXRjaCBvbmx5IHRoZSBzdGFydCBvZiB0aGUgVVJMLlxuICAgKlxuICAgKiBAdXNhZ2Vub3Rlc1xuICAgKlxuICAgKiAnL2FwaScgLSBleGFjdGx5IG1hdGNoIHRoZSByb3V0ZSAvYXBpXG4gICAqICcvYXBpLyonIC0gbWF0Y2ggYW55IHJvdXRlIHRoYXQgc3RhcnRzIHdpdGggL2FwaS9cbiAgICovXG4gIHVyaT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIEh0dHBSZXF1ZXN0LnVybCB2YWx1ZSwgYWxsb3dpbmcgeW91IHRvIGRvXG4gICAqIGFueSBraW5kIG9mIGZsZXhpYmxlIG1hdGNoaW5nLlxuICAgKlxuICAgKiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlblxuICAgKiBhbiBhY2Nlc3MgdG9rZW4gaXMgYXR0YWNoZWQgdG8gdGhlIHJlcXVlc3QgaW4gdGhlXG4gICAqICBbXCJBdXRob3JpemF0aW9uXCIgaGVhZGVyXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1vYXV0aC12Mi1iZWFyZXItMjAjc2VjdGlvbi0yLjEpLlxuICAgKlxuICAgKiBJZiBpdCByZXR1cm5zIGZhbHNlLCB0aGUgcmVxdWVzdCBwcm9jZWVkcyB3aXRob3V0IHRoZSBhY2Nlc3MgdG9rZW4gYXR0YWNoZWQuXG4gICAqL1xuICB1cmlNYXRjaGVyPzogKHVyaTogc3RyaW5nKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9ucyB0aGF0IGFyZSBwYXNzZWQgdG8gdGhlIFNESyB3aGVuIHJldHJpZXZpbmcgdGhlXG4gICAqIGFjY2VzcyB0b2tlbiB0byBhdHRhY2ggdG8gdGhlIG91dGdvaW5nIHJlcXVlc3QuXG4gICAqL1xuICB0b2tlbk9wdGlvbnM/OiBHZXRUb2tlblNpbGVudGx5T3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIEhUVFAgbWV0aG9kIHRvIG1hdGNoIG9uLiBJZiBzcGVjaWZpZWQsIHRoZSBIVFRQIG1ldGhvZCBvZlxuICAgKiB0aGUgb3V0Z29pbmcgcmVxdWVzdCB3aWxsIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGlzLiBJZiB0aGVyZSBpcyBubyBtYXRjaCwgdGhlXG4gICAqIEF1dGhvcml6YXRpb24gaGVhZGVyIGlzIG5vdCBhdHRhY2hlZC5cbiAgICpcbiAgICogVGhlIEhUVFAgbWV0aG9kIG5hbWUgaXMgY2FzZS1zZW5zaXRpdmUuXG4gICAqL1xuICBodHRwTWV0aG9kPzogSHR0cE1ldGhvZCB8IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3cgdGhlIEhUVFAgY2FsbCB0byBiZSBleGVjdXRlZCBhbm9ueW1vdXNseSwgd2hlbiBubyB0b2tlbiBpcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIFdoZW4gb21pdHRlZCAob3Igc2V0IHRvIGZhbHNlKSwgY2FsbHMgdGhhdCBtYXRjaCB0aGUgY29uZmlndXJhdGlvbiB3aWxsIGZhaWwgd2hlbiBubyB0b2tlbiBpcyBhdmFpbGFibGUuXG4gICAqL1xuICBhbGxvd0Fub255bW91cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoQ29uZmlnIGV4dGVuZHMgQXV0aDBDbGllbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIGlmIHRoZSBwYWdlIFVSTCBoYXMgY29kZSBhbmQgc3RhdGUgcGFyYW1ldGVycywgdGhlIFNESyB3aWxsIGFzc3VtZSB0aGV5IGFyZSBmb3JcbiAgICogYW4gQXV0aDAgYXBwbGljYXRpb24gYW5kIGF0dGVtcHQgdG8gZXhjaGFuZ2UgdGhlIGNvZGUgZm9yIGEgdG9rZW4uXG4gICAqIEluIHNvbWUgY2FzZXMgdGhlIGNvZGUgbWlnaHQgYmUgZm9yIHNvbWV0aGluZyBlbHNlIChlLmcuIGFub3RoZXIgT0F1dGggU0RLKS4gSW4gdGhlc2VcbiAgICogaW5zdGFuY2VzIHlvdSBjYW4gaW5zdHJ1Y3QgdGhlIGNsaWVudCB0byBpZ25vcmUgdGhlbSBieSBzZXR0aW5nIGBza2lwUmVkaXJlY3RDYWxsYmFja2AuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIEF1dGhNb2R1bGUuZm9yUm9vdCh7XG4gICAqICAgc2tpcFJlZGlyZWN0Q2FsbGJhY2s6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSA9PT0gJy9vdGhlci1jYWxsYmFjaydcbiAgICogfSlcbiAgICogYGBgXG4gICAqXG4gICAqICoqTm90ZSoqOiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgYC9vdGhlci1jYWxsYmFja2AgaXMgYW4gZXhpc3Rpbmcgcm91dGUgdGhhdCB3aWxsIGJlIGNhbGxlZFxuICAgKiBieSBhbnkgb3RoZXIgT0F1dGggcHJvdmlkZXIgd2l0aCBhIGBjb2RlYCAob3IgYGVycm9yYCBpbiBjYXNlIHdoZW4gc29tZXRoaW5nIHdlbnQgd3JvbmcpIGFuZCBgc3RhdGVgLlxuICAgKlxuICAgKi9cbiAgc2tpcFJlZGlyZWN0Q2FsbGJhY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYnVpbHQtaW4gSHR0cCBJbnRlcmNlcHRvciwgdXNlZCBmb3JcbiAgICogYXV0b21hdGljYWxseSBhdHRhY2hpbmcgYWNjZXNzIHRva2Vucy5cbiAgICovXG4gIGh0dHBJbnRlcmNlcHRvcj86IEh0dHBJbnRlcmNlcHRvckNvbmZpZztcblxuICAvKipcbiAgICogUGF0aCBpbiB5b3VyIGFwcGxpY2F0aW9uIHRvIHJlZGlyZWN0IHRvIHdoZW4gdGhlIEF1dGhvcml6YXRpb24gc2VydmVyXG4gICAqIHJldHVybnMgYW4gZXJyb3IuIERlZmF1bHRzIHRvIGAvYFxuICAgKi9cbiAgZXJyb3JQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuZ3VsYXIgc3BlY2lmaWMgc3RhdGUgdG8gYmUgc3RvcmVkIGJlZm9yZSByZWRpcmVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN0YXRlIHtcbiAgLyoqXG4gICAqIFRhcmdldCBwYXRoIHRoZSBhcHAgZ2V0cyByb3V0ZWQgdG8gYWZ0ZXJcbiAgICogaGFuZGxpbmcgdGhlIGNhbGxiYWNrIGZyb20gQXV0aDAgKGRlZmF1bHRzIHRvICcvJylcbiAgICovXG4gIHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogQW55IGN1c3RvbSBwYXJhbWV0ZXIgdG8gYmUgc3RvcmVkIGluIGFwcFN0YXRlXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBhY2Nlc3NpbmcgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICpcbiAqIFVzZSB0aGUgYEluamVjdGAgZGVjb3JhdG9yIHRvIGFjY2VzcyB0aGUgY29uZmlndXJhdGlvbiBmcm9tIGEgc2VydmljZSBvciBjb21wb25lbnQ6XG4gKlxuICogYGBgXG4gKiBjbGFzcyBNeVNlcnZpY2UoQEluamVjdChBdXRoQ29uZmlnU2VydmljZSkgY29uZmlnOiBBdXRoQ29uZmlnKSB7fVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBBdXRoQ29uZmlnU2VydmljZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoQ29uZmlnPihcbiAgJ2F1dGgwLWFuZ3VsYXIuY29uZmlnJ1xuKTtcblxuLyoqXG4gKiBHZXRzIGFuZCBzZXRzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnRlcm5hbCBBdXRoMCBjbGllbnQuIFRoaXMgY2FuIGJlXG4gKiB1c2VkIHRvIHByb3ZpZGUgY29uZmlndXJhdGlvbiBvdXRzaWRlIG9mIHVzaW5nIEF1dGhNb2R1bGUuZm9yUm9vdCwgaS5lLiBmcm9tXG4gKiBhIGZhY3RvcnkgcHJvdmlkZWQgYnkgQVBQX0lOSVRJQUxJWkVSLlxuICpcbiAqIEB1c2FnZVxuICpcbiAqIGBgYGpzXG4gKiAvLyBhcHAubW9kdWxlLnRzXG4gKiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIGltcG9ydCB7IEF1dGhNb2R1bGUsIEF1dGhDbGllbnRDb25maWcgfSBmcm9tICdAYXV0aDAvYXV0aDAtYW5ndWxhcic7XG4gKlxuICogLy8gUHJvdmlkZSBhbiBpbml0aWFsaXplciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBQcm9taXNlXG4gKiBmdW5jdGlvbiBjb25maWdJbml0aWFsaXplcihcbiAqICAgaHR0cDogSHR0cENsaWVudCxcbiAqICAgY29uZmlnOiBBdXRoQ2xpZW50Q29uZmlnXG4gKiApIHtcbiAqICAgcmV0dXJuICgpID0+XG4gKiAgICAgaHR0cFxuICogICAgICAgLmdldCgnL2NvbmZpZycpXG4gKiAgICAgICAudG9Qcm9taXNlKClcbiAqICAgICAgIC50aGVuKChsb2FkZWRDb25maWc6IGFueSkgPT4gY29uZmlnLnNldChsb2FkZWRDb25maWcpKTsgICAvLyBTZXQgdGhlIGNvbmZpZyB0aGF0IHdhcyBsb2FkZWQgYXN5bmNocm9ub3VzbHkgaGVyZVxuICogfVxuICpcbiAqIC8vIFByb3ZpZGUgQVBQX0lOSVRJQUxJWkVSIHdpdGggdGhpcyBmdW5jdGlvbi4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGNvbmZpZyBwYXNzZWQgdG8gQXV0aE1vZHVsZS5mb3JSb290XG4gKiBpbXBvcnRzOiBbXG4gKiAgIC8vIG90aGVyIGltcG9ydHMuLlxuICpcbiAqICAgSHR0cENsaWVudE1vZHVsZSxcbiAqICAgQXV0aE1vZHVsZS5mb3JSb290KCksICAgLy88LSBkb24ndCBwYXNzIGFueSBjb25maWcgaGVyZVxuICogXSxcbiAqIHByb3ZpZGVyczogW1xuICogICB7XG4gKiAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICogICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ0luaXRpYWxpemVyLCAgICAvLyA8LSBwYXNzIHlvdXIgaW5pdGlhbGl6ZXIgZnVuY3Rpb24gaGVyZVxuICogICAgIGRlcHM6IFtIdHRwQ2xpZW50LCBBdXRoQ2xpZW50Q29uZmlnXSxcbiAqICAgICBtdWx0aTogdHJ1ZSxcbiAqICAgfSxcbiAqIF0sXG4gKiBgYGBcbiAqXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXV0aENsaWVudENvbmZpZyB7XG4gIHByaXZhdGUgY29uZmlnPzogQXV0aENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEF1dGhDb25maWdTZXJ2aWNlKSBjb25maWc/OiBBdXRoQ29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5zZXQoY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjb25maWd1cmF0aW9uIHRvIGJlIHJlYWQgYnkgb3RoZXIgY29uc3VtZXJzIG9mIHRoZSBzZXJ2aWNlIChzZWUgdXNhZ2Ugbm90ZXMpXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24gdG8gc2V0XG4gICAqL1xuICBzZXQoY29uZmlnOiBBdXRoQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29uZmlnIHRoYXQgaGFzIGJlZW4gc2V0IGJ5IG90aGVyIGNvbnN1bWVycyBvZiB0aGUgc2VydmljZVxuICAgKi9cbiAgZ2V0KCk6IEF1dGhDb25maWcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyBhcyBBdXRoQ29uZmlnO1xuICB9XG59XG4iXX0=
@@ -1,40 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { of } from 'rxjs';
3
- import { take, switchMap, map } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./auth.service";
6
- export class AuthGuard {
7
- constructor(auth) {
8
- this.auth = auth;
9
- }
10
- canLoad(route, segments) {
11
- return this.auth.isAuthenticated$.pipe(take(1));
12
- }
13
- canActivate(next, state) {
14
- return this.redirectIfUnauthenticated(state);
15
- }
16
- canActivateChild(childRoute, state) {
17
- return this.redirectIfUnauthenticated(state);
18
- }
19
- redirectIfUnauthenticated(state) {
20
- return this.auth.isAuthenticated$.pipe(switchMap((loggedIn) => {
21
- if (!loggedIn) {
22
- return this.auth
23
- .loginWithRedirect({
24
- appState: { target: state.url },
25
- })
26
- .pipe(map(() => false));
27
- }
28
- return of(true);
29
- }));
30
- }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthGuard, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
32
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthGuard, decorators: [{
35
- type: Injectable,
36
- args: [{
37
- providedIn: 'root',
38
- }]
39
- }], ctorParameters: () => [{ type: i1.AuthService }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTXRELE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQW9CLElBQWlCO1FBQWpCLFNBQUksR0FBSixJQUFJLENBQWE7SUFBRyxDQUFDO0lBRXpDLE9BQU8sQ0FBQyxLQUFZLEVBQUUsUUFBc0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVyxDQUNULElBQTRCLEVBQzVCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxVQUFrQyxFQUNsQyxLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8seUJBQXlCLENBQy9CLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3BDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxPQUFPLElBQUksQ0FBQyxJQUFJO3FCQUNiLGlCQUFpQixDQUFDO29CQUNqQixRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRTtpQkFDaEMsQ0FBQztxQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQXBDVSxTQUFTO21IQUFULFNBQVMsY0FGUixNQUFNOzs0RkFFUCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG4gIFJvdXRlLFxuICBVcmxTZWdtZW50LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHN3aXRjaE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlKSB7fVxuXG4gIGNhbkxvYWQocm91dGU6IFJvdXRlLCBzZWdtZW50czogVXJsU2VnbWVudFtdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aC5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUodGFrZSgxKSk7XG4gIH1cblxuICBjYW5BY3RpdmF0ZShcbiAgICBuZXh0OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnJlZGlyZWN0SWZVbmF1dGhlbnRpY2F0ZWQoc3RhdGUpO1xuICB9XG5cbiAgY2FuQWN0aXZhdGVDaGlsZChcbiAgICBjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnJlZGlyZWN0SWZVbmF1dGhlbnRpY2F0ZWQoc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWRpcmVjdElmVW5hdXRoZW50aWNhdGVkKFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmF1dGguaXNBdXRoZW50aWNhdGVkJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChsb2dnZWRJbikgPT4ge1xuICAgICAgICBpZiAoIWxvZ2dlZEluKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFxuICAgICAgICAgICAgLmxvZ2luV2l0aFJlZGlyZWN0KHtcbiAgICAgICAgICAgICAgYXBwU3RhdGU6IHsgdGFyZ2V0OiBzdGF0ZS51cmwgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKCkgPT4gZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,134 +0,0 @@
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', 'missing_refresh_token'].includes(err.error));
124
- }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthHttpInterceptor, deps: [{ token: i1.AuthClientConfig }, { token: Auth0ClientService }, { token: i2.AuthState }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
126
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthHttpInterceptor }); }
127
- }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthHttpInterceptor, decorators: [{
129
- type: Injectable
130
- }], ctorParameters: () => [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBYyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUVMLDRCQUE0QixHQUc3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEdBQUcsRUFDSCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxLQUFLLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUluRCxNQUFNLFNBQVMsR0FDYixDQUFVLE9BQTRCLEVBQUUsRUFBRSxDQUMxQyxDQUFVLE9BQTRCLEVBQUUsRUFBRSxDQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFHM0UsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLGFBQStCLEVBQ0gsV0FBd0IsRUFDcEQsU0FBb0IsRUFDcEIsV0FBd0I7UUFIeEIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ0gsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDcEQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUMvQixDQUFDO0lBRUosU0FB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LE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBFdmVudCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCBvZiwgaWlmLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQXBpUm91dGVEZWZpbml0aW9uLFxuICBpc0h0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnLFxuICBBdXRoQ2xpZW50Q29uZmlnLFxuICBIdHRwSW50ZXJjZXB0b3JDb25maWcsXG59IGZyb20gJy4vYXV0aC5jb25maWcnO1xuXG5pbXBvcnQge1xuICBzd2l0Y2hNYXAsXG4gIGZpcnN0LFxuICBjb25jYXRNYXAsXG4gIGNhdGNoRXJyb3IsXG4gIHRhcCxcbiAgZmlsdGVyLFxuICBtZXJnZU1hcCxcbiAgbWFwVG8sXG4gIHBsdWNrLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoMENsaWVudCwgR2V0VG9rZW5TaWxlbnRseU9wdGlvbnMgfSBmcm9tICdAYXV0aDAvYXV0aDAtc3BhLWpzJztcbmltcG9ydCB7IEF1dGgwQ2xpZW50U2VydmljZSB9IGZyb20gJy4vYXV0aC5jbGllbnQnO1xuaW1wb3J0IHsgQXV0aFN0YXRlIH0gZnJvbSAnLi9hdXRoLnN0YXRlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5jb25zdCB3YWl0VW50aWwgPVxuICA8VFNpZ25hbD4oc2lnbmFsJDogT2JzZXJ2YWJsZTxUU2lnbmFsPikgPT5cbiAgPFRTb3VyY2U+KHNvdXJjZSQ6IE9ic2VydmFibGU8VFNvdXJjZT4pID0+XG4gICAgc291cmNlJC5waXBlKG1lcmdlTWFwKCh2YWx1ZSkgPT4gc2lnbmFsJC5waXBlKGZpcnN0KCksIG1hcFRvKHZhbHVlKSkpKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhIdHRwSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ0ZhY3Rvcnk6IEF1dGhDbGllbnRDb25maWcsXG4gICAgQEluamVjdChBdXRoMENsaWVudFNlcnZpY2UpIHByaXZhdGUgYXV0aDBDbGllbnQ6IEF1dGgwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFN0YXRlOiBBdXRoU3RhdGUsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcbiAgKSB7fVxuXG4gIGludGVyY2VwdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnRmFjdG9yeS5nZXQoKTtcbiAgICBpZiAoIWNvbmZpZy5odHRwSW50ZXJjZXB0b3I/LmFsbG93ZWRMaXN0KSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0xvYWRlZCQgPSB0aGlzLmF1dGhTZXJ2aWNlLmlzTG9hZGluZyQucGlwZShcbiAgICAgIGZpbHRlcigoaXNMb2FkaW5nKSA9PiAhaXNMb2FkaW5nKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5maW5kTWF0Y2hpbmdSb3V0ZShyZXEsIGNvbmZpZy5odHRwSW50ZXJjZXB0b3IpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKHJvdXRlKSA9PlxuICAgICAgICBpaWYoXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgYSByb3V0ZSB3YXMgbWF0Y2hlZFxuICAgICAgICAgICgpID0+IHJvdXRlICE9PSBudWxsLFxuICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBtYXRjaGluZyByb3V0ZSwgY2FsbCBnZXRUb2tlblNpbGVudGx5IGFuZCBhdHRhY2ggdGhlIHRva2VuIHRvIHRoZVxuICAgICAgICAgIC8vIG91dGdvaW5nIHJlcXVlc3RcbiAgICAgICAgICBvZihyb3V0ZSkucGlwZShcbiAgICAgICAgICAgIHdhaXRVbnRpbChpc0xvYWRlZCQpLFxuICAgICAgICAgICAgcGx1Y2soJ3Rva2VuT3B0aW9ucycpLFxuICAgICAgICAgICAgY29uY2F0TWFwPEdldFRva2VuU2lsZW50bHlPcHRpb25zLCBPYnNlcnZhYmxlPHN0cmluZz4+KChvcHRpb25zKSA9PlxuICAgICAgICAgICAgICB0aGlzLmdldEFjY2Vzc1Rva2VuU2lsZW50bHkob3B0aW9ucykucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsbG93QW5vbnltb3VzKHJvdXRlLCBlcnIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZignJyk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFN0YXRlLnNldEVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIHJlcXVlc3QgYW5kIGF0dGFjaCB0aGUgYmVhcmVyIHRva2VuXG4gICAgICAgICAgICAgIGNvbnN0IGNsb25lID0gdG9rZW5cbiAgICAgICAgICAgICAgICA/IHJlcS5jbG9uZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgYEJlYXJlciAke3Rva2VufWBcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgOiByZXE7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKGNsb25lKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICAvLyBJZiB0aGUgVVJJIGJlaW5nIGNhbGxlZCB3YXMgbm90IGZvdW5kIGluIG91ciBodHRwSW50ZXJjZXB0b3IgY29uZmlnLCBzaW1wbHlcbiAgICAgICAgICAvLyBwYXNzIHRoZSByZXF1ZXN0IHRocm91Z2ggd2l0aG91dCBhdHRhY2hpbmcgYSB0b2tlblxuICAgICAgICAgIG5leHQuaGFuZGxlKHJlcSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRHVwbGljYXRlIG9mIEF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuU2lsZW50bHksIGJ1dCB3aXRoIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nLlxuICAgKiBPbmx5IHVzZWQgaW50ZXJuYWxseSBpbiB0aGUgaW50ZXJjZXB0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgdG9rZW4gZmV0Y2guXG4gICAqL1xuICBwcml2YXRlIGdldEFjY2Vzc1Rva2VuU2lsZW50bHkoXG4gICAgb3B0aW9ucz86IEdldFRva2VuU2lsZW50bHlPcHRpb25zXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuYXV0aDBDbGllbnQpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNsaWVudCkgPT4gY2xpZW50LmdldFRva2VuU2lsZW50bHkob3B0aW9ucykpLFxuICAgICAgdGFwKCh0b2tlbikgPT4gdGhpcy5hdXRoU3RhdGUuc2V0QWNjZXNzVG9rZW4odG9rZW4pKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuYXV0aFN0YXRlLnJlZnJlc2goKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmlwcyB0aGUgcXVlcnkgYW5kIGZyYWdtZW50IGZyb20gdGhlIGdpdmVuIHVyaVxuICAgKlxuICAgKiBAcGFyYW0gdXJpIFRoZSB1cmkgdG8gcmVtb3ZlIHRoZSBxdWVyeSBhbmQgZnJhZ21lbnQgZnJvbVxuICAgKi9cbiAgcHJpdmF0ZSBzdHJpcFF1ZXJ5RnJvbSh1cmk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHVyaS5pbmRleE9mKCc/JykgPiAtMSkge1xuICAgICAgdXJpID0gdXJpLnN1YnN0cigwLCB1cmkuaW5kZXhPZignPycpKTtcbiAgICB9XG5cbiAgICBpZiAodXJpLmluZGV4T2YoJyMnKSA+IC0xKSB7XG4gICAgICB1cmkgPSB1cmkuc3Vic3RyKDAsIHVyaS5pbmRleE9mKCcjJykpO1xuICAgIH1cblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgcm91dGUgY2FuIGhhdmUgYW4gYWNjZXNzIHRva2VuIGF0dGFjaGVkIHRvIGl0LCBiYXNlZCBvbiBtYXRjaGluZyB0aGUgSFRUUCByZXF1ZXN0IGFnYWluc3RcbiAgICogdGhlIGludGVyY2VwdG9yIHJvdXRlIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgcm91dGUgdG8gdGVzdFxuICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgSFRUUCByZXF1ZXN0XG4gICAqL1xuICBwcml2YXRlIGNhbkF0dGFjaFRva2VuKFxuICAgIHJvdXRlOiBBcGlSb3V0ZURlZmluaXRpb24sXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PlxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCB0ZXN0UHJpbWl0aXZlID0gKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXF1ZXN0UGF0aCA9IHRoaXMuc3RyaXBRdWVyeUZyb20ocmVxdWVzdC51cmwpO1xuXG4gICAgICBpZiAodmFsdWUgPT09IHJlcXVlc3RQYXRoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgVVJMIGVuZHMgd2l0aCBhbiBhc3RlcmlzaywgbWF0Y2ggdXNpbmcgc3RhcnRzV2l0aC5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZhbHVlLmluZGV4T2YoJyonKSA9PT0gdmFsdWUubGVuZ3RoIC0gMSAmJlxuICAgICAgICByZXF1ZXN0LnVybC5zdGFydHNXaXRoKHZhbHVlLnN1YnN0cigwLCB2YWx1ZS5sZW5ndGggLSAxKSlcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGlmIChpc0h0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnKHJvdXRlKSkge1xuICAgICAgaWYgKHJvdXRlLmh0dHBNZXRob2QgJiYgcm91dGUuaHR0cE1ldGhvZCAhPT0gcmVxdWVzdC5tZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghcm91dGUudXJpICYmICFyb3V0ZS51cmlNYXRjaGVyKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnRWl0aGVyIGEgdXJpIG9yIHVyaU1hdGNoZXIgaXMgcmVxdWlyZWQgd2hlbiBjb25maWd1cmluZyB0aGUgSFRUUCBpbnRlcmNlcHRvci4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByb3V0ZS51cmlNYXRjaGVyXG4gICAgICAgID8gcm91dGUudXJpTWF0Y2hlcihyZXF1ZXN0LnVybClcbiAgICAgICAgOiB0ZXN0UHJpbWl0aXZlKHJvdXRlLnVyaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlc3RQcmltaXRpdmUocm91dGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWVzIHRvIG1hdGNoIGEgcm91dGUgZnJvbSB0aGUgU0RLIGNvbmZpZ3VyYXRpb24gdG8gdGhlIEhUVFAgcmVxdWVzdC5cbiAgICogSWYgYSBtYXRjaCBpcyBmb3VuZCwgdGhlIHJvdXRlIGNvbmZpZ3VyYXRpb24gaXMgcmV0dXJuZWQuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0IFRoZSBIdHRwIHJlcXVlc3RcbiAgICogQHBhcmFtIGNvbmZpZyBIdHRwSW50ZXJjZXB0b3JDb25maWdcbiAgICovXG4gIHByaXZhdGUgZmluZE1hdGNoaW5nUm91dGUoXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcbiAgICBjb25maWc6IEh0dHBJbnRlcmNlcHRvckNvbmZpZ1xuICApOiBPYnNlcnZhYmxlPEFwaVJvdXRlRGVmaW5pdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gZnJvbShjb25maWcuYWxsb3dlZExpc3QpLnBpcGUoXG4gICAgICBmaXJzdCgocm91dGUpID0+IHRoaXMuY2FuQXR0YWNoVG9rZW4ocm91dGUsIHJlcXVlc3QpLCBudWxsKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFsbG93QW5vbnltb3VzKHJvdXRlOiBBcGlSb3V0ZURlZmluaXRpb24gfCBudWxsLCBlcnI6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIXJvdXRlICYmXG4gICAgICBpc0h0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnKHJvdXRlKSAmJlxuICAgICAgISFyb3V0ZS5hbGxvd0Fub255bW91cyAmJlxuICAgICAgWydsb2dpbl9yZXF1aXJlZCcsICdjb25zZW50X3JlcXVpcmVkJywgJ21pc3NpbmdfcmVmcmVzaF90b2tlbiddLmluY2x1ZGVzKFxuICAgICAgICBlcnIuZXJyb3JcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -1,39 +0,0 @@
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
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
33
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: AuthModule }); }
34
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthModule }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthModule, decorators: [{
37
- type: NgModule
38
- }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLFVBQVU7SUFDckI7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW1CO1FBQ2hDLE9BQU87WUFDTCxRQUFRLEVBQUUsVUFBVTtZQUNwQixTQUFTLEVBQUU7Z0JBQ1QsV0FBVztnQkFDWCxTQUFTO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxNQUFNO2lCQUNqQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixVQUFVLEVBQUUsa0JBQWtCLENBQUMsWUFBWTtvQkFDM0MsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQ3pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzsrR0F4QlUsVUFBVTtnSEFBVixVQUFVO2dIQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBRHRCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBBdXRoQ29uZmlnU2VydmljZSwgQXV0aENsaWVudENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aDBDbGllbnRTZXJ2aWNlLCBBdXRoMENsaWVudEZhY3RvcnkgfSBmcm9tICcuL2F1dGguY2xpZW50JztcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vYXV0aC5ndWFyZCc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBhdXRoZW50aWNhdGlvbiBtb2R1bGUgc3lzdGVtLiBDb25maWd1cmF0aW9uIGNhbiBlaXRoZXIgYmUgc3BlY2lmaWVkIGhlcmUsXG4gICAqIG9yIGJ5IGNhbGxpbmcgQXV0aENsaWVudENvbmZpZy5zZXQgKHBlcmhhcHMgZnJvbSBhbiBBUFBfSU5JVElBTElaRVIgZmFjdG9yeSBmdW5jdGlvbikuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBTREsuXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBBdXRoQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBdXRoTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEF1dGhTZXJ2aWNlLFxuICAgICAgICBBdXRoR3VhcmQsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBdXRoQ29uZmlnU2VydmljZSxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQXV0aDBDbGllbnRTZXJ2aWNlLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IEF1dGgwQ2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQsXG4gICAgICAgICAgZGVwczogW0F1dGhDbGllbnRDb25maWddLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=