@odx/auth 6.0.2 → 8.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.
Files changed (63) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +16 -10
  3. package/esm2022/index.mjs +2 -1
  4. package/esm2022/lib/auth.config.mjs +6 -23
  5. package/esm2022/lib/auth.guard.mjs +10 -3
  6. package/esm2022/lib/auth.i18n.mjs +1 -1
  7. package/esm2022/lib/auth.interceptor.mjs +15 -0
  8. package/esm2022/lib/auth.logger.mjs +3 -0
  9. package/esm2022/lib/auth.providers.mjs +53 -36
  10. package/esm2022/lib/auth.service.mjs +27 -15
  11. package/esm2022/lib/auth.typings.mjs +1 -1
  12. package/esm2022/lib/components/auth-loading-screen/auth-loading-screen.component.mjs +6 -6
  13. package/esm2022/lib/helpers/create-auth-host-url.mjs +6 -0
  14. package/esm2022/lib/helpers/index.mjs +4 -1
  15. package/esm2022/lib/helpers/set-http-auth-header.mjs +13 -0
  16. package/esm2022/lib/helpers/user-language-loader.mjs +10 -0
  17. package/esm2022/lib/models/auth-environment.mjs +3 -2
  18. package/esm2022/lib/models/auth-http-cache.mjs +19 -23
  19. package/esm2022/lib/models/auth-plugin-manager.mjs +14 -9
  20. package/esm2022/lib/plugins/core-debug.plugin.mjs +20 -0
  21. package/esm2022/lib/plugins/index.mjs +2 -1
  22. package/esm2022/lib/plugins/user-profile-link.plugin.mjs +3 -3
  23. package/esm2022/lib/unauth.guard.mjs +10 -3
  24. package/esm2022/plugins/service-connect/index.mjs +2 -2
  25. package/esm2022/plugins/service-connect/lib/dtos/get-service-connect-user-response.dto.mjs +2 -0
  26. package/esm2022/plugins/service-connect/lib/dtos/index.mjs +2 -1
  27. package/esm2022/plugins/service-connect/lib/service-connect-rights.guard.mjs +3 -3
  28. package/esm2022/plugins/service-connect/lib/service-connect-rights.plugin.mjs +1 -2
  29. package/esm2022/plugins/service-connect/lib/service-connect-user-language.plugin.mjs +8 -0
  30. package/esm2022/plugins/service-connect/lib/service-connect.config.mjs +6 -4
  31. package/fesm2022/odx-auth-plugins-service-connect.mjs +15 -9
  32. package/fesm2022/odx-auth-plugins-service-connect.mjs.map +1 -1
  33. package/fesm2022/odx-auth.mjs +308 -240
  34. package/fesm2022/odx-auth.mjs.map +1 -1
  35. package/index.d.ts +1 -0
  36. package/lib/auth.config.d.ts +11 -10
  37. package/lib/auth.guard.d.ts +1 -1
  38. package/lib/auth.i18n.d.ts +2 -2
  39. package/lib/auth.interceptor.d.ts +2 -0
  40. package/lib/auth.logger.d.ts +3 -0
  41. package/lib/auth.providers.d.ts +7 -4
  42. package/lib/auth.service.d.ts +6 -2
  43. package/lib/auth.typings.d.ts +1 -1
  44. package/lib/helpers/create-auth-host-url.d.ts +2 -0
  45. package/lib/helpers/index.d.ts +3 -0
  46. package/lib/helpers/set-http-auth-header.d.ts +2 -0
  47. package/lib/helpers/user-language-loader.d.ts +4 -0
  48. package/lib/models/auth-environment.d.ts +6 -1
  49. package/lib/models/auth-http-cache.d.ts +3 -1
  50. package/lib/models/auth-plugin-manager.d.ts +2 -0
  51. package/lib/plugins/core-debug.plugin.d.ts +2 -0
  52. package/lib/plugins/index.d.ts +1 -0
  53. package/lib/unauth.guard.d.ts +1 -1
  54. package/package.json +2 -2
  55. package/plugins/service-connect/index.d.ts +1 -1
  56. package/plugins/service-connect/lib/dtos/get-service-connect-user-response.dto.d.ts +3 -0
  57. package/plugins/service-connect/lib/dtos/index.d.ts +1 -0
  58. package/plugins/service-connect/lib/service-connect-rights.guard.d.ts +1 -1
  59. package/plugins/service-connect/lib/service-connect-rights.plugin.d.ts +8 -1
  60. package/plugins/service-connect/lib/service-connect-user-language.plugin.d.ts +1 -0
  61. package/plugins/service-connect/lib/service-connect.config.d.ts +1 -0
  62. package/esm2022/plugins/service-connect/lib/service-connect.typings.mjs +0 -2
  63. package/plugins/service-connect/lib/service-connect.typings.d.ts +0 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # @odx/auth
2
2
 
3
+ ## 8.0.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 106b206: Add ability for guards to redirect to external URL
8
+
9
+ Add `userLanguageLoader` to load the active language from identity claims
10
+
11
+ Add new config option to enable debug information
12
+
13
+ Add new config option to enforce sign in for requests made to a protected URL
14
+
15
+ Add new config option to configure a global auth plugin timeout
16
+
17
+ Add new config option to set the time the intercetpor waits for an access token in milliseconds
18
+
19
+ ### Patch Changes
20
+
21
+ - a553e2c: Replace the external library intercetor with own interceptor implementation to ensure a valid access token is send
22
+ - Updated dependencies [fe51ce2]
23
+ - Updated dependencies [3d72124]
24
+ - @odx/angular@5.0.0
25
+
26
+ ## 7.0.0
27
+
28
+ ### Patch Changes
29
+
30
+ - Updated dependencies [e5b4916]
31
+ - @odx/angular@4.0.0
32
+
3
33
  ## 6.0.2
4
34
 
5
35
  ### Patch Changes
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @odx/auth
2
2
 
3
- [<img src="https://img.shields.io/npm/v/@odx/angular" />](https://npmjs.org/package/@odx/auth)
3
+ [<img src="https://img.shields.io/npm/v/@odx/auth" />](https://npmjs.org/package/@odx/auth)
4
4
  [<img src="https://img.shields.io/npm/dependency-version/@odx/auth/peer/@odx/angular" />](https://npmjs.org/package/@odx/angular)
5
5
 
6
6
  ### Install 🚀
@@ -41,24 +41,30 @@ The configuration object has the following interface:
41
41
  interface AuthConfig {
42
42
  environment: AuthEnvironment;
43
43
  clientId: string;
44
- issuer: string;
44
+ issuer?: string;
45
45
  redirectPath: string;
46
46
  allowedUrls: Array<string | RegExp>;
47
47
  timeoutFactor: number;
48
48
  maxOfflineTime: number;
49
49
  loadUserProfile: boolean;
50
- postLogoutRedirectUrl: string;
51
- scopes: string[];
52
- discoveryUrl: string;
50
+ postLogoutRedirectUrl?: string;
51
+ scopes?: string[];
52
+ discoveryUrl?: string;
53
53
  errorHandler: AuthErrorHandlerFn;
54
54
  createInitials: CreateInitialsFn;
55
55
  resolveEmail: ResolveEmailFn;
56
56
  resolveUsername: ResolveUsernameFn;
57
- storage: OAuthStorage;
57
+ storage?: OAuthStorage;
58
58
  plugins: AuthPluginFactory[];
59
- showRedirectOverlay: boolean;
60
- userProfileLink: string;
61
- requireSignIn: boolean;
59
+ defaultAuthorizedHandler?: AuthorizedHandler | null;
60
+ enableLoadingScreen: boolean;
61
+ refreshTokenOnInit?: boolean;
62
+ loadingScreenMessage?: DynamicTextContent | null;
63
+ userProfileUrl?: string;
64
+ requireSignIn?: boolean;
65
+ requireSignInForRequests?: boolean;
66
+ waitForTokenInMs?: number;
67
+ showDebugInformation?: boolean;
62
68
  }
63
69
  ```
64
70
 
@@ -72,4 +78,4 @@ In order to add the UI for signing in and out, add the `odx-auth` component to t
72
78
  </odx-header>
73
79
  ```
74
80
 
75
- > Use the `LanguageService.setLanguage` method from **`@odx/angular`** to change the language.
81
+ > Use the `LocalizationService.setLanguage` method from **`@odx/angular/localization`** to change the language.
package/esm2022/index.mjs CHANGED
@@ -2,6 +2,7 @@ export * from './lib/auth.component';
2
2
  export * from './lib/auth.config';
3
3
  export * from './lib/auth.directive';
4
4
  export * from './lib/auth.guard';
5
+ export * from './lib/auth.interceptor';
5
6
  export * from './lib/auth.module';
6
7
  export * from './lib/auth.providers';
7
8
  export * from './lib/auth.service';
@@ -12,4 +13,4 @@ export * from './lib/helpers';
12
13
  export * from './lib/models';
13
14
  export * from './lib/plugins';
14
15
  export * from './lib/unauth.guard';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgudHlwaW5ncyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGx1Z2lucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91bmF1dGguZ3VhcmQnO1xuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgucHJvdmlkZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLnR5cGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsdWdpbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdW5hdXRoLmd1YXJkJztcbiJdfQ==
@@ -1,33 +1,17 @@
1
- import { inject, InjectionToken } from '@angular/core';
2
1
  import { createConfigTokens } from '@odx/angular/utils';
3
2
  import { createInitials, resolveEmail, resolveUsername } from './helpers';
4
- export const DEFAULT_AUTH_SCOPES = ['openid', 'profile', 'email', 'offline_access'];
5
- export const DEFAULT_OKTA_URLS = {
3
+ export const AUTH_HTTP_HEADER = 'Authorization';
4
+ export const ODX_AUTH_DEFAULT_SCOPES = ['openid', 'profile', 'email', 'offline_access'];
5
+ export const ODX_AUTH_HOSTS = {
6
6
  dev: 'https://dev.login.draeger.com',
7
7
  stage: 'https://test.login.draeger.com',
8
8
  prod: 'https://login.draeger.com',
9
9
  };
10
- export const DEFAULT_USER_PROFILE_URLS = {
10
+ export const ODX_AUTH_USER_PROFILE_HOSTS = {
11
11
  dev: 'https://lemon-ocean-04a922703.3.azurestaticapps.net',
12
12
  stage: 'https://purple-cliff-0e61c5703.3.azurestaticapps.net',
13
13
  prod: 'https://id.draeger.com',
14
14
  };
15
- export const ODX_AUTH_CORE_PLUGINS = new InjectionToken('@odx/auth::CorePlugins', {
16
- providedIn: 'root',
17
- factory: () => [],
18
- });
19
- export const ODX_AUTH_ERROR_HANDLERS = new InjectionToken('@odx/auth::ErrorHandlers', {
20
- providedIn: 'root',
21
- factory: () => [],
22
- });
23
- export const ODX_AUTH_PLUGINS = new InjectionToken('@odx/auth::Plugins', {
24
- providedIn: 'root',
25
- factory: () => {
26
- const { plugins } = injectAuthConfig();
27
- const corePlugins = inject(ODX_AUTH_CORE_PLUGINS);
28
- return [...corePlugins, ...plugins].map((pluginFactory) => pluginFactory());
29
- },
30
- });
31
15
  export const { AuthDefaultConfig, AuthConfig, injectAuthConfig, provideAuthConfig } = createConfigTokens('Auth', '@odx/auth', {
32
16
  environment: 'prod',
33
17
  redirectPath: 'login/callback',
@@ -45,7 +29,6 @@ export const { AuthDefaultConfig, AuthConfig, injectAuthConfig, provideAuthConfi
45
29
  defaultAuthorizedHandler: null,
46
30
  enableLoadingScreen: true,
47
31
  loadingScreenMessage: null,
48
- refreshTokenOnInit: true,
49
- requireSignIn: false,
32
+ waitForTokenInMs: 1000,
50
33
  });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJMUUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3BGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFvQztJQUNoRSxHQUFHLEVBQUUsK0JBQStCO0lBQ3BDLEtBQUssRUFBRSxnQ0FBZ0M7SUFDdkMsSUFBSSxFQUFFLDJCQUEyQjtDQUNsQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQW9DO0lBQ3hFLEdBQUcsRUFBRSxxREFBcUQ7SUFDMUQsS0FBSyxFQUFFLHNEQUFzRDtJQUM3RCxJQUFJLEVBQUUsd0JBQXdCO0NBQy9CLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0Isd0JBQXdCLEVBQUU7SUFDckcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDbEIsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQXVCLDBCQUEwQixFQUFFO0lBQzFHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0NBQ2xCLENBQUMsQ0FBQztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFlLG9CQUFvQixFQUFFO0lBQ3JGLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUVsRCxPQUFPLENBQUMsR0FBRyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNGLENBQUMsQ0FBQztBQWlDSCxNQUFNLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7SUFDNUgsV0FBVyxFQUFFLE1BQU07SUFDbkIsWUFBWSxFQUFFLGdCQUFnQjtJQUM5QixXQUFXLEVBQUUsRUFBRTtJQUNmLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGNBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDNUIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDdEIsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0lBQ0QsY0FBYztJQUNkLFlBQVk7SUFDWixlQUFlO0lBQ2YsT0FBTyxFQUFFLEVBQUU7SUFDWCx3QkFBd0IsRUFBRSxJQUFJO0lBQzlCLG1CQUFtQixFQUFFLElBQUk7SUFDekIsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLGFBQWEsRUFBRSxLQUFLO0NBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY1RleHRDb250ZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgY3JlYXRlQ29uZmlnVG9rZW5zIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IE9BdXRoRXJyb3JFdmVudCwgT0F1dGhTdG9yYWdlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBjcmVhdGVJbml0aWFscywgcmVzb2x2ZUVtYWlsLCByZXNvbHZlVXNlcm5hbWUgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBBdXRoRW52aXJvbm1lbnQsIEF1dGhvcml6ZWRIYW5kbGVyLCBBdXRoUGx1Z2luLCBBdXRoUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVVUSF9TQ09QRVMgPSBbJ29wZW5pZCcsICdwcm9maWxlJywgJ2VtYWlsJywgJ29mZmxpbmVfYWNjZXNzJ107XG5leHBvcnQgY29uc3QgREVGQVVMVF9PS1RBX1VSTFM6IFJlY29yZDxBdXRoRW52aXJvbm1lbnQsIHN0cmluZz4gPSB7XG4gIGRldjogJ2h0dHBzOi8vZGV2LmxvZ2luLmRyYWVnZXIuY29tJyxcbiAgc3RhZ2U6ICdodHRwczovL3Rlc3QubG9naW4uZHJhZWdlci5jb20nLFxuICBwcm9kOiAnaHR0cHM6Ly9sb2dpbi5kcmFlZ2VyLmNvbScsXG59O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVNFUl9QUk9GSUxFX1VSTFM6IFJlY29yZDxBdXRoRW52aXJvbm1lbnQsIHN0cmluZz4gPSB7XG4gIGRldjogJ2h0dHBzOi8vbGVtb24tb2NlYW4tMDRhOTIyNzAzLjMuYXp1cmVzdGF0aWNhcHBzLm5ldCcsXG4gIHN0YWdlOiAnaHR0cHM6Ly9wdXJwbGUtY2xpZmYtMGU2MWM1NzAzLjMuYXp1cmVzdGF0aWNhcHBzLm5ldCcsXG4gIHByb2Q6ICdodHRwczovL2lkLmRyYWVnZXIuY29tJyxcbn07XG5leHBvcnQgY29uc3QgT0RYX0FVVEhfQ09SRV9QTFVHSU5TID0gbmV3IEluamVjdGlvblRva2VuPEF1dGhQbHVnaW5GYWN0b3J5W10+KCdAb2R4L2F1dGg6OkNvcmVQbHVnaW5zJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IFtdLFxufSk7XG5leHBvcnQgY29uc3QgT0RYX0FVVEhfRVJST1JfSEFORExFUlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aEVycm9ySGFuZGxlckZuW10+KCdAb2R4L2F1dGg6OkVycm9ySGFuZGxlcnMnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gW10sXG59KTtcbmV4cG9ydCBjb25zdCBPRFhfQVVUSF9QTFVHSU5TID0gbmV3IEluamVjdGlvblRva2VuPEF1dGhQbHVnaW5bXT4oJ0BvZHgvYXV0aDo6UGx1Z2lucycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgY29uc3QgeyBwbHVnaW5zIH0gPSBpbmplY3RBdXRoQ29uZmlnKCk7XG4gICAgY29uc3QgY29yZVBsdWdpbnMgPSBpbmplY3QoT0RYX0FVVEhfQ09SRV9QTFVHSU5TKTtcblxuICAgIHJldHVybiBbLi4uY29yZVBsdWdpbnMsIC4uLnBsdWdpbnNdLm1hcCgocGx1Z2luRmFjdG9yeSkgPT4gcGx1Z2luRmFjdG9yeSgpKTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgdHlwZSBBdXRoRXJyb3JIYW5kbGVyRm4gPSAoZXJyb3I6IE9BdXRoRXJyb3JFdmVudCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIFJlc29sdmVVc2VybmFtZUZuID0gKHJhd0NsYWltczogT2R4QXV0aC5SYXdJZGVudGl0eUNsYWltcykgPT4gc3RyaW5nO1xuZXhwb3J0IHR5cGUgUmVzb2x2ZUVtYWlsRm4gPSAocmF3Q2xhaW1zOiBPZHhBdXRoLlJhd0lkZW50aXR5Q2xhaW1zKSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBDcmVhdGVJbml0aWFsc0ZuID0gKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRoQ29uZmlnIHtcbiAgZW52aXJvbm1lbnQ6IEF1dGhFbnZpcm9ubWVudDtcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIGlzc3Vlcj86IHN0cmluZztcbiAgcmVkaXJlY3RQYXRoOiBzdHJpbmc7XG4gIGFsbG93ZWRVcmxzOiBBcnJheTxzdHJpbmcgfCBSZWdFeHA+O1xuICB0aW1lb3V0RmFjdG9yOiBudW1iZXI7XG4gIG1heE9mZmxpbmVUaW1lOiBudW1iZXI7XG4gIGxvYWRVc2VyUHJvZmlsZTogYm9vbGVhbjtcbiAgcG9zdExvZ291dFJlZGlyZWN0VXJsPzogc3RyaW5nO1xuICBzY29wZXM/OiBzdHJpbmdbXTtcbiAgZGlzY292ZXJ5VXJsPzogc3RyaW5nO1xuICBlcnJvckhhbmRsZXI6IEF1dGhFcnJvckhhbmRsZXJGbjtcbiAgY3JlYXRlSW5pdGlhbHM6IENyZWF0ZUluaXRpYWxzRm47XG4gIHJlc29sdmVFbWFpbDogUmVzb2x2ZUVtYWlsRm47XG4gIHJlc29sdmVVc2VybmFtZTogUmVzb2x2ZVVzZXJuYW1lRm47XG4gIHN0b3JhZ2U/OiBPQXV0aFN0b3JhZ2U7XG4gIHBsdWdpbnM6IEF1dGhQbHVnaW5GYWN0b3J5W107XG4gIGRlZmF1bHRBdXRob3JpemVkSGFuZGxlcj86IEF1dGhvcml6ZWRIYW5kbGVyIHwgbnVsbDtcbiAgZW5hYmxlTG9hZGluZ1NjcmVlbjogYm9vbGVhbjtcbiAgcmVmcmVzaFRva2VuT25Jbml0OiBib29sZWFuO1xuICBsb2FkaW5nU2NyZWVuTWVzc2FnZT86IER5bmFtaWNUZXh0Q29udGVudCB8IG51bGw7XG4gIHVzZXJQcm9maWxlVXJsPzogc3RyaW5nO1xuICByZXF1aXJlU2lnbkluPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHsgQXV0aERlZmF1bHRDb25maWcsIEF1dGhDb25maWcsIGluamVjdEF1dGhDb25maWcsIHByb3ZpZGVBdXRoQ29uZmlnIH0gPSBjcmVhdGVDb25maWdUb2tlbnMoJ0F1dGgnLCAnQG9keC9hdXRoJywge1xuICBlbnZpcm9ubWVudDogJ3Byb2QnLFxuICByZWRpcmVjdFBhdGg6ICdsb2dpbi9jYWxsYmFjaycsXG4gIGFsbG93ZWRVcmxzOiBbXSxcbiAgdGltZW91dEZhY3RvcjogMC43NSxcbiAgbWF4T2ZmbGluZVRpbWU6IDI0ICogNjAgKiA2MCwgLy8gMSBkYXlcbiAgbG9hZFVzZXJQcm9maWxlOiBmYWxzZSxcbiAgZXJyb3JIYW5kbGVyOiAoZXJyb3IpID0+IHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfSxcbiAgY3JlYXRlSW5pdGlhbHMsXG4gIHJlc29sdmVFbWFpbCxcbiAgcmVzb2x2ZVVzZXJuYW1lLFxuICBwbHVnaW5zOiBbXSxcbiAgZGVmYXVsdEF1dGhvcml6ZWRIYW5kbGVyOiBudWxsLFxuICBlbmFibGVMb2FkaW5nU2NyZWVuOiB0cnVlLFxuICBsb2FkaW5nU2NyZWVuTWVzc2FnZTogbnVsbCxcbiAgcmVmcmVzaFRva2VuT25Jbml0OiB0cnVlLFxuICByZXF1aXJlU2lnbkluOiBmYWxzZSxcbn0gYXMgQXV0aENvbmZpZyk7XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJMUUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQW9DO0lBQzdELEdBQUcsRUFBRSwrQkFBK0I7SUFDcEMsS0FBSyxFQUFFLGdDQUFnQztJQUN2QyxJQUFJLEVBQUUsMkJBQTJCO0NBQ2xDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBb0M7SUFDMUUsR0FBRyxFQUFFLHFEQUFxRDtJQUMxRCxLQUFLLEVBQUUsc0RBQXNEO0lBQzdELElBQUksRUFBRSx3QkFBd0I7Q0FDL0IsQ0FBQztBQXFDRixNQUFNLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7SUFDNUgsV0FBVyxFQUFFLE1BQU07SUFDbkIsWUFBWSxFQUFFLGdCQUFnQjtJQUM5QixXQUFXLEVBQUUsRUFBRTtJQUNmLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGNBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDNUIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDdEIsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0lBQ0QsY0FBYztJQUNkLFlBQVk7SUFDWixlQUFlO0lBQ2YsT0FBTyxFQUFFLEVBQUU7SUFDWCx3QkFBd0IsRUFBRSxJQUFJO0lBQzlCLG1CQUFtQixFQUFFLElBQUk7SUFDekIsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixnQkFBZ0IsRUFBRSxJQUFJO0NBQ1QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY1RleHRDb250ZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgY3JlYXRlQ29uZmlnVG9rZW5zIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IE9BdXRoRXJyb3JFdmVudCwgT0F1dGhTdG9yYWdlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBjcmVhdGVJbml0aWFscywgcmVzb2x2ZUVtYWlsLCByZXNvbHZlVXNlcm5hbWUgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBBdXRoRW52aXJvbm1lbnQsIEF1dGhvcml6ZWRIYW5kbGVyLCBBdXRoUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IEFVVEhfSFRUUF9IRUFERVIgPSAnQXV0aG9yaXphdGlvbic7XG5leHBvcnQgY29uc3QgT0RYX0FVVEhfREVGQVVMVF9TQ09QRVMgPSBbJ29wZW5pZCcsICdwcm9maWxlJywgJ2VtYWlsJywgJ29mZmxpbmVfYWNjZXNzJ107XG5leHBvcnQgY29uc3QgT0RYX0FVVEhfSE9TVFM6IFJlY29yZDxBdXRoRW52aXJvbm1lbnQsIHN0cmluZz4gPSB7XG4gIGRldjogJ2h0dHBzOi8vZGV2LmxvZ2luLmRyYWVnZXIuY29tJyxcbiAgc3RhZ2U6ICdodHRwczovL3Rlc3QubG9naW4uZHJhZWdlci5jb20nLFxuICBwcm9kOiAnaHR0cHM6Ly9sb2dpbi5kcmFlZ2VyLmNvbScsXG59O1xuZXhwb3J0IGNvbnN0IE9EWF9BVVRIX1VTRVJfUFJPRklMRV9IT1NUUzogUmVjb3JkPEF1dGhFbnZpcm9ubWVudCwgc3RyaW5nPiA9IHtcbiAgZGV2OiAnaHR0cHM6Ly9sZW1vbi1vY2Vhbi0wNGE5MjI3MDMuMy5henVyZXN0YXRpY2FwcHMubmV0JyxcbiAgc3RhZ2U6ICdodHRwczovL3B1cnBsZS1jbGlmZi0wZTYxYzU3MDMuMy5henVyZXN0YXRpY2FwcHMubmV0JyxcbiAgcHJvZDogJ2h0dHBzOi8vaWQuZHJhZWdlci5jb20nLFxufTtcblxuZXhwb3J0IHR5cGUgQXV0aEVycm9ySGFuZGxlckZuID0gKGVycm9yOiBPQXV0aEVycm9yRXZlbnQpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBSZXNvbHZlVXNlcm5hbWVGbiA9IChyYXdDbGFpbXM6IE9keEF1dGguUmF3SWRlbnRpdHlDbGFpbXMpID0+IHN0cmluZztcbmV4cG9ydCB0eXBlIFJlc29sdmVFbWFpbEZuID0gKHJhd0NsYWltczogT2R4QXV0aC5SYXdJZGVudGl0eUNsYWltcykgPT4gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQ3JlYXRlSW5pdGlhbHNGbiA9ICh2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIGVudmlyb25tZW50OiBBdXRoRW52aXJvbm1lbnQ7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICBpc3N1ZXI/OiBzdHJpbmc7XG4gIHJlZGlyZWN0UGF0aDogc3RyaW5nO1xuICBhbGxvd2VkVXJsczogQXJyYXk8c3RyaW5nIHwgUmVnRXhwPjtcbiAgdGltZW91dEZhY3RvcjogbnVtYmVyO1xuICBtYXhPZmZsaW5lVGltZTogbnVtYmVyO1xuICBsb2FkVXNlclByb2ZpbGU6IGJvb2xlYW47XG4gIHBvc3RMb2dvdXRSZWRpcmVjdFVybD86IHN0cmluZztcbiAgc2NvcGVzPzogc3RyaW5nW107XG4gIGRpc2NvdmVyeVVybD86IHN0cmluZztcbiAgZXJyb3JIYW5kbGVyOiBBdXRoRXJyb3JIYW5kbGVyRm47XG4gIGNyZWF0ZUluaXRpYWxzOiBDcmVhdGVJbml0aWFsc0ZuO1xuICByZXNvbHZlRW1haWw6IFJlc29sdmVFbWFpbEZuO1xuICByZXNvbHZlVXNlcm5hbWU6IFJlc29sdmVVc2VybmFtZUZuO1xuICBzdG9yYWdlPzogT0F1dGhTdG9yYWdlO1xuICBwbHVnaW5zOiBBdXRoUGx1Z2luRmFjdG9yeVtdO1xuICBkZWZhdWx0QXV0aG9yaXplZEhhbmRsZXI/OiBBdXRob3JpemVkSGFuZGxlciB8IG51bGw7XG4gIGVuYWJsZUxvYWRpbmdTY3JlZW46IGJvb2xlYW47XG4gIHJlZnJlc2hUb2tlbk9uSW5pdD86IGJvb2xlYW47XG4gIGxvYWRpbmdTY3JlZW5NZXNzYWdlPzogRHluYW1pY1RleHRDb250ZW50IHwgbnVsbDtcbiAgdXNlclByb2ZpbGVVcmw/OiBzdHJpbmc7XG4gIHJlcXVpcmVTaWduSW4/OiBib29sZWFuO1xuICByZXF1aXJlU2lnbkluRm9yUmVxdWVzdHM/OiBib29sZWFuO1xuICB3YWl0Rm9yVG9rZW5Jbk1zPzogbnVtYmVyO1xuICBzaG93RGVidWdJbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIHBsdWdpblRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCB7IEF1dGhEZWZhdWx0Q29uZmlnLCBBdXRoQ29uZmlnLCBpbmplY3RBdXRoQ29uZmlnLCBwcm92aWRlQXV0aENvbmZpZyB9ID0gY3JlYXRlQ29uZmlnVG9rZW5zKCdBdXRoJywgJ0BvZHgvYXV0aCcsIHtcbiAgZW52aXJvbm1lbnQ6ICdwcm9kJyxcbiAgcmVkaXJlY3RQYXRoOiAnbG9naW4vY2FsbGJhY2snLFxuICBhbGxvd2VkVXJsczogW10sXG4gIHRpbWVvdXRGYWN0b3I6IDAuNzUsXG4gIG1heE9mZmxpbmVUaW1lOiAyNCAqIDYwICogNjAsIC8vIDEgZGF5XG4gIGxvYWRVc2VyUHJvZmlsZTogZmFsc2UsXG4gIGVycm9ySGFuZGxlcjogKGVycm9yKSA9PiB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0sXG4gIGNyZWF0ZUluaXRpYWxzLFxuICByZXNvbHZlRW1haWwsXG4gIHJlc29sdmVVc2VybmFtZSxcbiAgcGx1Z2luczogW10sXG4gIGRlZmF1bHRBdXRob3JpemVkSGFuZGxlcjogbnVsbCxcbiAgZW5hYmxlTG9hZGluZ1NjcmVlbjogdHJ1ZSxcbiAgbG9hZGluZ1NjcmVlbk1lc3NhZ2U6IG51bGwsXG4gIHdhaXRGb3JUb2tlbkluTXM6IDEwMDAsXG59IGFzIEF1dGhDb25maWcpO1xuIl19
@@ -1,12 +1,14 @@
1
1
  import { inject } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
+ import { WindowRef } from '@odx/angular';
3
4
  import { isString } from '@odx/angular/utils';
4
5
  import { EMPTY, of, switchMap, take, tap } from 'rxjs';
5
6
  import { AuthService } from './auth.service';
6
7
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- export function authGuard(authorizedHandler, redirectTo) {
8
+ export function authGuard(authorizedHandler, redirectTo, isExternal = false) {
8
9
  return (_, state) => {
9
10
  const authService = inject(AuthService);
11
+ const windowRef = inject(WindowRef);
10
12
  const router = inject(Router, { optional: true });
11
13
  return authService.isAuthenticated$.pipe(switchMap((isAuthenticated) => {
12
14
  if (!isAuthenticated) {
@@ -18,7 +20,12 @@ export function authGuard(authorizedHandler, redirectTo) {
18
20
  if (isAuthorized || !router)
19
21
  return;
20
22
  if (isString(redirectTo)) {
21
- router.navigateByUrl(redirectTo);
23
+ if (isExternal) {
24
+ windowRef.location.assign(redirectTo);
25
+ }
26
+ else {
27
+ router.navigateByUrl(redirectTo);
28
+ }
22
29
  }
23
30
  else if (Array.isArray(redirectTo)) {
24
31
  router.navigate(redirectTo);
@@ -26,4 +33,4 @@ export function authGuard(authorizedHandler, redirectTo) {
26
33
  }), take(1));
27
34
  };
28
35
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9zcmMvbGliL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsOERBQThEO0FBQzlELE1BQU0sVUFBVSxTQUFTLENBQUMsaUJBQXFDLEVBQUUsVUFBMkI7SUFDMUYsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWxELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDdEMsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDcEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRTlCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFDRCxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNuQixJQUFJLFlBQVksSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUNwQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDeEIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNsQztpQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3BDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBFTVBUWSwgb2YsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhvcml6ZWRIYW5kbGVyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGF1dGhHdWFyZChhdXRob3JpemVkSGFuZGxlcj86IEF1dGhvcml6ZWRIYW5kbGVyLCByZWRpcmVjdFRvPzogYW55W10gfCBzdHJpbmcpOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuIChfLCBzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaXNBdXRoZW50aWNhdGVkKSA9PiB7XG4gICAgICAgIGlmICghaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgYXV0aFNlcnZpY2Uuc2lnbkluKHN0YXRlLnVybCk7XG5cbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKGF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZChhdXRob3JpemVkSGFuZGxlcikpO1xuICAgICAgfSksXG4gICAgICB0YXAoKGlzQXV0aG9yaXplZCkgPT4ge1xuICAgICAgICBpZiAoaXNBdXRob3JpemVkIHx8ICFyb3V0ZXIpIHJldHVybjtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHJlZGlyZWN0VG8pKSB7XG4gICAgICAgICAgcm91dGVyLm5hdmlnYXRlQnlVcmwocmVkaXJlY3RUbyk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZWRpcmVjdFRvKSkge1xuICAgICAgICAgIHJvdXRlci5uYXZpZ2F0ZShyZWRpcmVjdFRvKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH07XG59XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9zcmMvbGliL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3Qyw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxpQkFBcUMsRUFBRSxVQUEyQixFQUFFLFVBQVUsR0FBRyxLQUFLO0lBQzlHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDbEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbEQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN0QyxTQUFTLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUNwQixXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFOUIsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ25CLElBQUksWUFBWSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQ3BDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN4QixJQUFJLFVBQVUsRUFBRTtvQkFDZCxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDdkM7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDbEM7YUFDRjtpQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3BDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgRU1QVFksIG9mLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBdXRob3JpemVkSGFuZGxlciB9IGZyb20gJy4vbW9kZWxzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBhdXRoR3VhcmQoYXV0aG9yaXplZEhhbmRsZXI/OiBBdXRob3JpemVkSGFuZGxlciwgcmVkaXJlY3RUbz86IGFueVtdIHwgc3RyaW5nLCBpc0V4dGVybmFsID0gZmFsc2UpOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuIChfLCBzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgICBjb25zdCB3aW5kb3dSZWYgPSBpbmplY3QoV2luZG93UmVmKTtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaXNBdXRoZW50aWNhdGVkKSA9PiB7XG4gICAgICAgIGlmICghaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgYXV0aFNlcnZpY2Uuc2lnbkluKHN0YXRlLnVybCk7XG5cbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKGF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZChhdXRob3JpemVkSGFuZGxlcikpO1xuICAgICAgfSksXG4gICAgICB0YXAoKGlzQXV0aG9yaXplZCkgPT4ge1xuICAgICAgICBpZiAoaXNBdXRob3JpemVkIHx8ICFyb3V0ZXIpIHJldHVybjtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHJlZGlyZWN0VG8pKSB7XG4gICAgICAgICAgaWYgKGlzRXh0ZXJuYWwpIHtcbiAgICAgICAgICAgIHdpbmRvd1JlZi5sb2NhdGlvbi5hc3NpZ24ocmVkaXJlY3RUbyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJlZGlyZWN0VG8pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlZGlyZWN0VG8pKSB7XG4gICAgICAgICAgcm91dGVyLm5hdmlnYXRlKHJlZGlyZWN0VG8pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
@@ -10,4 +10,4 @@ export default {
10
10
  signOutButtonText: 'Ausloggen',
11
11
  },
12
12
  };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvYXV0aC5pMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGVBQWU7SUFDYixFQUFFLEVBQUU7UUFDRixlQUFlLEVBQUUsWUFBWTtRQUM3QixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLGlCQUFpQixFQUFFLFVBQVU7S0FDOUI7SUFDRCxFQUFFLEVBQUU7UUFDRixlQUFlLEVBQUUsYUFBYTtRQUM5QixnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLGlCQUFpQixFQUFFLFdBQVc7S0FDL0I7Q0FDYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNsYXRpb25zIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsL3RyYW5zbGF0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZW46IHtcbiAgICB1c2VyUHJvZmlsZUxpbms6ICdNeSBwcm9maWxlJyxcbiAgICBzaWduSW5CdXR0b25UZXh0OiAnU2lnbiBpbicsXG4gICAgc2lnbk91dEJ1dHRvblRleHQ6ICdTaWduIG91dCcsXG4gIH0sXG4gIGRlOiB7XG4gICAgdXNlclByb2ZpbGVMaW5rOiAnTWVpbiBQcm9maWwnLFxuICAgIHNpZ25JbkJ1dHRvblRleHQ6ICdFaW5sb2dnZW4nLFxuICAgIHNpZ25PdXRCdXR0b25UZXh0OiAnQXVzbG9nZ2VuJyxcbiAgfSxcbn0gYXMgVHJhbnNsYXRpb25zO1xuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvYXV0aC5pMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGVBQWU7SUFDYixFQUFFLEVBQUU7UUFDRixlQUFlLEVBQUUsWUFBWTtRQUM3QixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLGlCQUFpQixFQUFFLFVBQVU7S0FDOUI7SUFDRCxFQUFFLEVBQUU7UUFDRixlQUFlLEVBQUUsYUFBYTtRQUM5QixnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLGlCQUFpQixFQUFFLFdBQVc7S0FDL0I7Q0FDbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0aW9uT2JqZWN0IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsL3RyYW5zbGF0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZW46IHtcbiAgICB1c2VyUHJvZmlsZUxpbms6ICdNeSBwcm9maWxlJyxcbiAgICBzaWduSW5CdXR0b25UZXh0OiAnU2lnbiBpbicsXG4gICAgc2lnbk91dEJ1dHRvblRleHQ6ICdTaWduIG91dCcsXG4gIH0sXG4gIGRlOiB7XG4gICAgdXNlclByb2ZpbGVMaW5rOiAnTWVpbiBQcm9maWwnLFxuICAgIHNpZ25JbkJ1dHRvblRleHQ6ICdFaW5sb2dnZW4nLFxuICAgIHNpZ25PdXRCdXR0b25UZXh0OiAnQXVzbG9nZ2VuJyxcbiAgfSxcbn0gYXMgVHJhbnNsYXRpb25PYmplY3Q7XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { inject } from '@angular/core';
2
+ import { matchUrl } from '@odx/angular/utils';
3
+ import { mergeMap } from 'rxjs';
4
+ import { injectAuthConfig } from './auth.config';
5
+ import { AuthService } from './auth.service';
6
+ export const authInterceptor = (req, next) => {
7
+ const { allowedUrls, requireSignInForRequests } = injectAuthConfig();
8
+ const isUrlAllowed = allowedUrls.some((allowedUrl) => matchUrl(req.url, allowedUrl));
9
+ if (!isUrlAllowed) {
10
+ return next(req);
11
+ }
12
+ const authService = inject(AuthService);
13
+ return authService.prepareAuthRequest$(req, requireSignInForRequests).pipe(mergeMap(next));
14
+ };
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9zcmMvbGliL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBc0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDOUQsTUFBTSxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDckUsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNyRixJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2xCO0lBQ0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sV0FBVyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3RixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWF0Y2hVcmwgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGluamVjdEF1dGhDb25maWcgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgYXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXEsIG5leHQpID0+IHtcbiAgY29uc3QgeyBhbGxvd2VkVXJscywgcmVxdWlyZVNpZ25JbkZvclJlcXVlc3RzIH0gPSBpbmplY3RBdXRoQ29uZmlnKCk7XG4gIGNvbnN0IGlzVXJsQWxsb3dlZCA9IGFsbG93ZWRVcmxzLnNvbWUoKGFsbG93ZWRVcmwpID0+IG1hdGNoVXJsKHJlcS51cmwsIGFsbG93ZWRVcmwpKTtcbiAgaWYgKCFpc1VybEFsbG93ZWQpIHtcbiAgICByZXR1cm4gbmV4dChyZXEpO1xuICB9XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcblxuICByZXR1cm4gYXV0aFNlcnZpY2UucHJlcGFyZUF1dGhSZXF1ZXN0JChyZXEsIHJlcXVpcmVTaWduSW5Gb3JSZXF1ZXN0cykucGlwZShtZXJnZU1hcChuZXh0KSk7XG59O1xuIl19
@@ -0,0 +1,3 @@
1
+ import { Logger } from '@odx/angular/internal';
2
+ export default new Logger('@odx/auth');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLmxvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0MsZUFBZSxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBMb2dnZXIoJ0BvZHgvYXV0aCcpO1xuIl19
@@ -1,23 +1,54 @@
1
- import { APP_INITIALIZER, ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';
1
+ import { provideHttpClient, withInterceptors } from '@angular/common/http';
2
+ import { APP_INITIALIZER, ENVIRONMENT_INITIALIZER, InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';
2
3
  import { WindowRef } from '@odx/angular';
3
4
  import { DynamicViewService } from '@odx/angular/cdk/dynamic-view';
4
- import { buildUrl, isString } from '@odx/angular/utils';
5
- import { OAuthModuleConfig, OAuthStorage, provideOAuthClient } from 'angular-oauth2-oidc';
5
+ import { buildUrl } from '@odx/angular/utils';
6
+ import { OAuthStorage, provideOAuthClient } from 'angular-oauth2-oidc';
6
7
  import { tap } from 'rxjs';
7
- import { DEFAULT_AUTH_SCOPES, DEFAULT_OKTA_URLS, injectAuthConfig, ODX_AUTH_CORE_PLUGINS, ODX_AUTH_ERROR_HANDLERS, provideAuthConfig, } from './auth.config';
8
+ import { ODX_AUTH_DEFAULT_SCOPES, injectAuthConfig, provideAuthConfig } from './auth.config';
9
+ import { authInterceptor } from './auth.interceptor';
10
+ import logger from './auth.logger';
8
11
  import { AuthService } from './auth.service';
9
12
  import { AuthLoadingScreenComponent } from './components';
10
- import { handleAuthError } from './helpers';
13
+ import { createAuthHostUrl, handleAuthError } from './helpers';
11
14
  import { offlineAuthErrorHandler } from './models';
12
- import { coreIdentityPlugin, userProfileUrlPlugin } from './plugins';
13
- export function configureInterceptor() {
14
- const { allowedUrls } = injectAuthConfig();
15
- const urls = allowedUrls.filter(Boolean);
15
+ import { coreDebugPlugin, coreIdentityPlugin, userProfileUrlPlugin } from './plugins';
16
+ export const ODX_AUTH_ERROR_HANDLERS = new InjectionToken('@odx/auth::ErrorHandlers', {
17
+ providedIn: 'root',
18
+ factory: () => {
19
+ const { errorHandler } = injectAuthConfig();
20
+ return [offlineAuthErrorHandler, errorHandler];
21
+ },
22
+ });
23
+ export const ODX_AUTH_CORE_PLUGINS = new InjectionToken('@odx/auth::CorePlugins', {
24
+ providedIn: 'root',
25
+ factory: () => {
26
+ const { showDebugInformation } = injectAuthConfig();
27
+ const plugins = [coreIdentityPlugin, userProfileUrlPlugin];
28
+ if (showDebugInformation) {
29
+ plugins.push(coreDebugPlugin);
30
+ }
31
+ return plugins;
32
+ },
33
+ });
34
+ export const ODX_AUTH_PLUGINS = new InjectionToken('@odx/auth::Plugins', {
35
+ providedIn: 'root',
36
+ factory: () => {
37
+ const { plugins } = injectAuthConfig();
38
+ const corePlugins = inject(ODX_AUTH_CORE_PLUGINS);
39
+ return [...corePlugins, ...plugins].map((pluginFactory) => pluginFactory());
40
+ },
41
+ });
42
+ export function provideAuthLogger() {
16
43
  return {
17
- resourceServer: {
18
- customUrlValidation: (url) => urls.some((allowedUrl) => (isString(allowedUrl) ? url.startsWith(allowedUrl) : !!url.match(allowedUrl))),
19
- sendAccessToken: true,
44
+ provide: ENVIRONMENT_INITIALIZER,
45
+ useFactory: () => {
46
+ const { showDebugInformation } = injectAuthConfig();
47
+ if (!showDebugInformation)
48
+ logger.disable();
49
+ return () => void 0;
20
50
  },
51
+ multi: true,
21
52
  };
22
53
  }
23
54
  export function initializeAuthErrorHandlers() {
@@ -28,41 +59,31 @@ export function initializeAuthErrorHandlers() {
28
59
  export function initalizeAuthConfig() {
29
60
  const { clientId, scopes, redirectPath, environment, postLogoutRedirectUrl, issuer, timeoutFactor, discoveryUrl, enableLoadingScreen } = injectAuthConfig();
30
61
  const authService = inject(AuthService);
31
- const origin = inject(WindowRef).getOrigin();
32
- const scope = Array.from(new Set(DEFAULT_AUTH_SCOPES.concat(scopes ?? []))).join(' ');
62
+ const redirectUri = buildUrl(inject(WindowRef).getOrigin(), redirectPath);
63
+ const scope = Array.from(new Set(ODX_AUTH_DEFAULT_SCOPES.concat(scopes ?? []))).join(' ');
33
64
  if (enableLoadingScreen) {
34
65
  AuthLoadingScreenComponent.initialize(authService, inject(DynamicViewService));
35
66
  }
36
67
  return () => authService.initialize({
37
68
  clientId,
38
- issuer: issuer ?? `${DEFAULT_OKTA_URLS[environment]}/oauth2/default`,
69
+ issuer: issuer ?? createAuthHostUrl(environment, 'oauth2/default'),
39
70
  scope,
40
- redirectUri: buildUrl(origin, redirectPath),
71
+ redirectUri,
41
72
  postLogoutRedirectUri: postLogoutRedirectUrl,
42
73
  preserveRequestedRoute: true,
43
74
  strictDiscoveryDocumentValidation: !discoveryUrl,
44
75
  responseType: 'code',
45
- showDebugInformation: environment === 'dev',
76
+ showDebugInformation: false,
46
77
  timeoutFactor,
78
+ waitForTokenInMsec: 1000,
47
79
  });
48
80
  }
49
81
  export function provideAuth(config) {
50
82
  return makeEnvironmentProviders([
51
83
  provideAuthConfig(config),
52
- provideOAuthClient(),
53
- {
54
- provide: OAuthModuleConfig,
55
- useFactory: configureInterceptor,
56
- },
57
- {
58
- provide: ENVIRONMENT_INITIALIZER,
59
- useValue: initializeAuthErrorHandlers,
60
- multi: true,
61
- },
62
- {
63
- provide: ODX_AUTH_ERROR_HANDLERS,
64
- useFactory: () => [offlineAuthErrorHandler, injectAuthConfig().errorHandler],
65
- },
84
+ provideAuthLogger(),
85
+ provideOAuthClient({ resourceServer: { sendAccessToken: false, allowedUrls: [] } }),
86
+ provideHttpClient(withInterceptors([authInterceptor])),
66
87
  {
67
88
  provide: APP_INITIALIZER,
68
89
  useFactory: initalizeAuthConfig,
@@ -72,10 +93,6 @@ export function provideAuth(config) {
72
93
  provide: OAuthStorage,
73
94
  useFactory: () => injectAuthConfig().storage ?? inject(WindowRef).nativeWindow.localStorage,
74
95
  },
75
- {
76
- provide: ODX_AUTH_CORE_PLUGINS,
77
- useValue: [coreIdentityPlugin, userProfileUrlPlugin],
78
- },
79
96
  ]);
80
97
  }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUV2QixNQUFNLEVBQ04sd0JBQXdCLEVBQ3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFDLFFBQVEsRUFBc0MsUUFBUSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDMUYsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDakQsT0FBTyxFQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRW5FLE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDekMsTUFBTSxJQUFJLEdBQUcsV0FBVyxD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VSxFQUFFLG1CQUFtQjtZQUMvQixLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsWUFBWTtZQUNyQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZO1NBQzVGO1FBQ0Q7WUFDRSxPQUFPLEVBQUUscUJBQXFCO1lBQzlCLFFBQVEsRUFBRSxDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDO1NBQ3JEO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFQUF9JTklUSUFMSVpFUixcbiAgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBpbmplY3QsXG4gIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVyc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V2luZG93UmVmfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHtEeW5hbWljVmlld1NlcnZpY2V9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcbmltcG9ydCB7YnVpbGRVcmwsIENvbmZpZ0RlcGVuZGVuY2llcywgQ29uZmlnUHJvdmlkZXIsIGlzU3RyaW5nfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHtPQXV0aE1vZHVsZUNvbmZpZywgT0F1dGhTdG9yYWdlLCBwcm92aWRlT0F1dGhDbGllbnR9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHt0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQXV0aENvbmZpZyxcbiAgREVGQVVMVF9BVVRIX1NDT1BFUyxcbiAgREVGQVVMVF9PS1RBX1VSTFMsXG4gIGluamVjdEF1dGhDb25maWcsXG4gIE9EWF9BVVRIX0NPUkVfUExVR0lOUyxcbiAgT0RYX0FVVEhfRVJST1JfSEFORExFUlMsXG4gIHByb3ZpZGVBdXRoQ29uZmlnLFxufSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7QXV0aFNlcnZpY2V9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7QXV0aExvYWRpbmdTY3JlZW5Db21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQge2hhbmRsZUF1dGhFcnJvcn0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7b2ZmbGluZUF1dGhFcnJvckhhbmRsZXJ9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7Y29yZUlkZW50aXR5UGx1Z2luLCB1c2VyUHJvZmlsZVVybFBsdWdpbn0gZnJvbSAnLi9wbHVnaW5zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZUludGVyY2VwdG9yKCk6IE9BdXRoTW9kdWxlQ29uZmlnIHtcbiAgY29uc3Qge2FsbG93ZWRVcmxzfSA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgY29uc3QgdXJscyA9IGFsbG93ZWRVcmxzLmZpbHRlcihCb29sZWFuKTtcblxuICByZXR1cm4ge1xuICAgIHJlc291cmNlU2VydmVyOiB7XG4gICAgICBjdXN0b21VcmxWYWxpZGF0aW9uOiAodXJsKSA9PiB1cmxzLnNvbWUoKGFsbG93ZWRVcmwpID0+IChpc1N0cmluZyhhbGxvd2VkVXJsKSA/IHVybC5zdGFydHNXaXRoKGFsbG93ZWRVcmwpIDogISF1cmwubWF0Y2goYWxsb3dlZFVybCkpKSxcbiAgICAgIHNlbmRBY2Nlc3NUb2tlbjogdHJ1ZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZUF1dGhFcnJvckhhbmRsZXJzKCk6IHZvaWQge1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IGhhbmRsZXIgPSBoYW5kbGVBdXRoRXJyb3IoaW5qZWN0KE9EWF9BVVRIX0VSUk9SX0hBTkRMRVJTKSk7XG5cbiAgYXV0aFNlcnZpY2UuZXJyb3JzJC5waXBlKHRhcCgoZXJyb3IpID0+IGhhbmRsZXIoZXJyb3IpKSkuc3Vic2NyaWJlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0YWxpemVBdXRoQ29uZmlnKCk6ICgpID0+IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgY2xpZW50SWQsXG4gICAgc2NvcGVzLFxuICAgIHJlZGlyZWN0UGF0aCxcbiAgICBlbnZpcm9ubWVudCxcbiAgICBwb3N0TG9nb3V0UmVkaXJlY3RVcmwsXG4gICAgaXNzdWVyLFxuICAgIHRpbWVvdXRGYWN0b3IsXG4gICAgZGlzY292ZXJ5VXJsLFxuICAgIGVuYWJsZUxvYWRpbmdTY3JlZW5cbiAgfSA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBjb25zdCBvcmlnaW4gPSBpbmplY3QoV2luZG93UmVmKS5nZXRPcmlnaW4oKTtcbiAgY29uc3Qgc2NvcGUgPSBBcnJheS5mcm9tKG5ldyBTZXQoREVGQVVMVF9BVVRIX1NDT1BFUy5jb25jYXQoc2NvcGVzID8/IFtdKSkpLmpvaW4oJyAnKTtcbiAgaWYgKGVuYWJsZUxvYWRpbmdTY3JlZW4pIHtcbiAgICBBdXRoTG9hZGluZ1NjcmVlbkNvbXBvbmVudC5pbml0aWFsaXplKGF1dGhTZXJ2aWNlLCBpbmplY3QoRHluYW1pY1ZpZXdTZXJ2aWNlKSk7XG4gIH1cbiAgcmV0dXJuICgpID0+XG4gICAgYXV0aFNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICBjbGllbnRJZCxcbiAgICAgIGlzc3VlcjogaXNzdWVyID8/IGAke0RFRkFVTFRfT0tUQV9VUkxTW2Vudmlyb25tZW50XX0vb2F1dGgyL2RlZmF1bHRgLFxuICAgICAgc2NvcGUsXG4gICAgICByZWRpcmVjdFVyaTogYnVpbGRVcmwob3JpZ2luLCByZWRpcmVjdFBhdGgpLFxuICAgICAgcG9zdExvZ291dFJlZGlyZWN0VXJpOiBwb3N0TG9nb3V0UmVkaXJlY3RVcmwsXG4gICAgICBwcmVzZXJ2ZVJlcXVlc3RlZFJvdXRlOiB0cnVlLFxuICAgICAgc3RyaWN0RGlzY292ZXJ5RG9jdW1lbnRWYWxpZGF0aW9uOiAhZGlzY292ZXJ5VXJsLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnY29kZScsXG4gICAgICBzaG93RGVidWdJbmZvcm1hdGlvbjogZW52aXJvbm1lbnQgPT09ICdkZXYnLFxuICAgICAgdGltZW91dEZhY3RvcixcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBdXRoPEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXM+KGNvbmZpZzogQ29uZmlnUHJvdmlkZXI8UGFydGlhbDxBdXRoQ29uZmlnPiwgRD4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHByb3ZpZGVBdXRoQ29uZmlnKGNvbmZpZyksXG4gICAgcHJvdmlkZU9BdXRoQ2xpZW50KCksXG4gICAge1xuICAgICAgcHJvdmlkZTogT0F1dGhNb2R1bGVDb25maWcsXG4gICAgICB1c2VGYWN0b3J5OiBjb25maWd1cmVJbnRlcmNlcHRvcixcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlVmFsdWU6IGluaXRpYWxpemVBdXRoRXJyb3JIYW5kbGVycyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogT0RYX0FVVEhfRVJST1JfSEFORExFUlMsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBbb2ZmbGluZUF1dGhFcnJvckhhbmRsZXIsIGluamVjdEF1dGhDb25maWcoKS5lcnJvckhhbmRsZXJdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogaW5pdGFsaXplQXV0aENvbmZpZyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogT0F1dGhTdG9yYWdlLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gaW5qZWN0QXV0aENvbmZpZygpLnN0b3JhZ2UgPz8gaW5qZWN0KFdpbmRvd1JlZikubmF0aXZlV2luZG93LmxvY2FsU3RvcmFnZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE9EWF9BVVRIX0NPUkVfUExVR0lOUyxcbiAgICAgIHVzZVZhbHVlOiBbY29yZUlkZW50aXR5UGx1Z2luLCB1c2VyUHJvZmlsZVVybFBsdWdpbl0sXG4gICAgfSxcbiAgXSk7XG59XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUF3QixjQUFjLEVBQVksTUFBTSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNKLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFzQyxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQWtDLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBaUMsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FB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QUFZO1NBQzVGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb3ZpZGVIdHRwQ2xpZW50LCB3aXRoSW50ZXJjZXB0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgRW52aXJvbm1lbnRQcm92aWRlcnMsIEluamVjdGlvblRva2VuLCBQcm92aWRlciwgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBEeW5hbWljVmlld1NlcnZpY2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBDb25maWdEZXBlbmRlbmNpZXMsIENvbmZpZ1Byb3ZpZGVyLCBidWlsZFVybCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBPQXV0aFN0b3JhZ2UsIHByb3ZpZGVPQXV0aENsaWVudCB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBBdXRoRXJyb3JIYW5kbGVyRm4sIE9EWF9BVVRIX0RFRkFVTFRfU0NPUEVTLCBpbmplY3RBdXRoQ29uZmlnLCBwcm92aWRlQXV0aENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgYXV0aEludGVyY2VwdG9yIH0gZnJvbSAnLi9hdXRoLmludGVyY2VwdG9yJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9hdXRoLmxvZ2dlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhMb2FkaW5nU2NyZWVuQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhIb3N0VXJsLCBoYW5kbGVBdXRoRXJyb3IgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXV0aFBsdWdpbiwgQXV0aFBsdWdpbkZhY3RvcnksIG9mZmxpbmVBdXRoRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgY29yZURlYnVnUGx1Z2luLCBjb3JlSWRlbnRpdHlQbHVnaW4sIHVzZXJQcm9maWxlVXJsUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW5zJztcblxuZXhwb3J0IGNvbnN0IE9EWF9BVVRIX0VSUk9SX0hBTkRMRVJTID0gbmV3IEluamVjdGlvblRva2VuPEF1dGhFcnJvckhhbmRsZXJGbltdPignQG9keC9hdXRoOjpFcnJvckhhbmRsZXJzJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICBjb25zdCB7IGVycm9ySGFuZGxlciB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuXG4gICAgcmV0dXJuIFtvZmZsaW5lQXV0aEVycm9ySGFuZGxlciwgZXJyb3JIYW5kbGVyXTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgT0RYX0FVVEhfQ09SRV9QTFVHSU5TID0gbmV3IEluamVjdGlvblRva2VuPEF1dGhQbHVnaW5GYWN0b3J5W10+KCdAb2R4L2F1dGg6OkNvcmVQbHVnaW5zJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICBjb25zdCB7IHNob3dEZWJ1Z0luZm9ybWF0aW9uIH0gPSBpbmplY3RBdXRoQ29uZmlnKCk7XG4gICAgY29uc3QgcGx1Z2lucyA9IFtjb3JlSWRlbnRpdHlQbHVnaW4sIHVzZXJQcm9maWxlVXJsUGx1Z2luXTtcbiAgICBpZiAoc2hvd0RlYnVnSW5mb3JtYXRpb24pIHtcbiAgICAgIHBsdWdpbnMucHVzaChjb3JlRGVidWdQbHVnaW4pO1xuICAgIH1cblxuICAgIHJldHVybiBwbHVnaW5zO1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBPRFhfQVVUSF9QTFVHSU5TID0gbmV3IEluamVjdGlvblRva2VuPEF1dGhQbHVnaW5bXT4oJ0BvZHgvYXV0aDo6UGx1Z2lucycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgY29uc3QgeyBwbHVnaW5zIH0gPSBpbmplY3RBdXRoQ29uZmlnKCk7XG4gICAgY29uc3QgY29yZVBsdWdpbnMgPSBpbmplY3QoT0RYX0FVVEhfQ09SRV9QTFVHSU5TKTtcblxuICAgIHJldHVybiBbLi4uY29yZVBsdWdpbnMsIC4uLnBsdWdpbnNdLm1hcCgocGx1Z2luRmFjdG9yeSkgPT4gcGx1Z2luRmFjdG9yeSgpKTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUF1dGhMb2dnZXIoKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgIGNvbnN0IHsgc2hvd0RlYnVnSW5mb3JtYXRpb24gfSA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgICAgIGlmICghc2hvd0RlYnVnSW5mb3JtYXRpb24pIGxvZ2dlci5kaXNhYmxlKCk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB2b2lkIDA7XG4gICAgfSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVBdXRoRXJyb3JIYW5kbGVycygpOiB2b2lkIHtcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBjb25zdCBoYW5kbGVyID0gaGFuZGxlQXV0aEVycm9yKGluamVjdChPRFhfQVVUSF9FUlJPUl9IQU5ETEVSUykpO1xuXG4gIGF1dGhTZXJ2aWNlLmVycm9ycyQucGlwZSh0YXAoKGVycm9yKSA9PiBoYW5kbGVyKGVycm9yKSkpLnN1YnNjcmliZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGFsaXplQXV0aENvbmZpZygpOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBjbGllbnRJZCwgc2NvcGVzLCByZWRpcmVjdFBhdGgsIGVudmlyb25tZW50LCBwb3N0TG9nb3V0UmVkaXJlY3RVcmwsIGlzc3VlciwgdGltZW91dEZhY3RvciwgZGlzY292ZXJ5VXJsLCBlbmFibGVMb2FkaW5nU2NyZWVuIH0gPSBpbmplY3RBdXRoQ29uZmlnKCk7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3QgcmVkaXJlY3RVcmkgPSBidWlsZFVybChpbmplY3QoV2luZG93UmVmKS5nZXRPcmlnaW4oKSwgcmVkaXJlY3RQYXRoKTtcbiAgY29uc3Qgc2NvcGUgPSBBcnJheS5mcm9tKG5ldyBTZXQoT0RYX0FVVEhfREVGQVVMVF9TQ09QRVMuY29uY2F0KHNjb3BlcyA/PyBbXSkpKS5qb2luKCcgJyk7XG4gIGlmIChlbmFibGVMb2FkaW5nU2NyZWVuKSB7XG4gICAgQXV0aExvYWRpbmdTY3JlZW5Db21wb25lbnQuaW5pdGlhbGl6ZShhdXRoU2VydmljZSwgaW5qZWN0KER5bmFtaWNWaWV3U2VydmljZSkpO1xuICB9XG4gIHJldHVybiAoKSA9PlxuICAgIGF1dGhTZXJ2aWNlLmluaXRpYWxpemUoe1xuICAgICAgY2xpZW50SWQsXG4gICAgICBpc3N1ZXI6IGlzc3VlciA/PyBjcmVhdGVBdXRoSG9zdFVybChlbnZpcm9ubWVudCwgJ29hdXRoMi9kZWZhdWx0JyksXG4gICAgICBzY29wZSxcbiAgICAgIHJlZGlyZWN0VXJpLFxuICAgICAgcG9zdExvZ291dFJlZGlyZWN0VXJpOiBwb3N0TG9nb3V0UmVkaXJlY3RVcmwsXG4gICAgICBwcmVzZXJ2ZVJlcXVlc3RlZFJvdXRlOiB0cnVlLFxuICAgICAgc3RyaWN0RGlzY292ZXJ5RG9jdW1lbnRWYWxpZGF0aW9uOiAhZGlzY292ZXJ5VXJsLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnY29kZScsXG4gICAgICBzaG93RGVidWdJbmZvcm1hdGlvbjogZmFsc2UsXG4gICAgICB0aW1lb3V0RmFjdG9yLFxuICAgICAgd2FpdEZvclRva2VuSW5Nc2VjOiAxMDAwLFxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUF1dGg8RCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcz4oY29uZmlnOiBDb25maWdQcm92aWRlcjxQYXJ0aWFsPEF1dGhDb25maWc+LCBEPik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgcHJvdmlkZUF1dGhDb25maWcoY29uZmlnKSxcbiAgICBwcm92aWRlQXV0aExvZ2dlcigpLFxuICAgIHByb3ZpZGVPQXV0aENsaWVudCh7IHJlc291cmNlU2VydmVyOiB7IHNlbmRBY2Nlc3NUb2tlbjogZmFsc2UsIGFsbG93ZWRVcmxzOiBbXSB9IH0pLFxuICAgIHByb3ZpZGVIdHRwQ2xpZW50KHdpdGhJbnRlcmNlcHRvcnMoW2F1dGhJbnRlcmNlcHRvcl0pKSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VGYWN0b3J5OiBpbml0YWxpemVBdXRoQ29uZmlnLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBPQXV0aFN0b3JhZ2UsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBpbmplY3RBdXRoQ29uZmlnKCkuc3RvcmFnZSA/PyBpbmplY3QoV2luZG93UmVmKS5uYXRpdmVXaW5kb3cubG9jYWxTdG9yYWdlLFxuICAgIH0sXG4gIF0pO1xufVxuIl19