@odx/auth 3.4.0 → 3.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.
Files changed (30) hide show
  1. package/README.md +15 -2
  2. package/esm2020/lib/auth.config.mjs +5 -1
  3. package/esm2020/lib/auth.providers.mjs +14 -9
  4. package/esm2020/lib/helpers/handle-auth-error.mjs +21 -0
  5. package/esm2020/lib/helpers/index.mjs +2 -1
  6. package/esm2020/lib/models/auth-http-cache.mjs +15 -6
  7. package/esm2020/lib/models/index.mjs +2 -1
  8. package/esm2020/lib/models/offline-auth-error-handler.mjs +7 -0
  9. package/esm2020/plugins/service-connect/lib/helpers/service-connect-plugin-factory.mjs +5 -17
  10. package/esm2020/plugins/service-connect/lib/service-connect-rights.plugin.mjs +1 -2
  11. package/esm2020/plugins/service-connect/lib/service-connect.config.mjs +4 -3
  12. package/fesm2015/odx-auth-plugins-service-connect.mjs +7 -21
  13. package/fesm2015/odx-auth-plugins-service-connect.mjs.map +1 -1
  14. package/fesm2015/odx-auth.mjs +56 -14
  15. package/fesm2015/odx-auth.mjs.map +1 -1
  16. package/fesm2020/odx-auth-plugins-service-connect.mjs +7 -19
  17. package/fesm2020/odx-auth-plugins-service-connect.mjs.map +1 -1
  18. package/fesm2020/odx-auth.mjs +55 -14
  19. package/fesm2020/odx-auth.mjs.map +1 -1
  20. package/lib/auth.config.d.ts +1 -0
  21. package/lib/auth.providers.d.ts +1 -1
  22. package/lib/helpers/handle-auth-error.d.ts +3 -0
  23. package/lib/helpers/index.d.ts +1 -0
  24. package/lib/models/auth-http-cache.d.ts +2 -1
  25. package/lib/models/index.d.ts +1 -0
  26. package/lib/models/offline-auth-error-handler.d.ts +2 -0
  27. package/package.json +1 -1
  28. package/plugins/service-connect/lib/helpers/service-connect-plugin-factory.d.ts +3 -2
  29. package/plugins/service-connect/lib/service-connect-rights.plugin.d.ts +1 -1
  30. package/plugins/service-connect/lib/service-connect.config.d.ts +3 -0
package/README.md CHANGED
@@ -9,6 +9,21 @@
9
9
  npm install @odx/auth
10
10
  ```
11
11
 
12
+ ### Library structure
13
+
14
+ - **@odx/auth**: main entry point
15
+ - **provideAuth**: Main provider factory to enable authentication for an Angular application
16
+ - **AuthModule**: Angular module which bundles all components and directives for the UI
17
+ - **AuthService**: Service to perform different tasks regarding authentication and authorization
18
+ - **authGuard**: Angular guard to protect routes that require authentication or authorization
19
+ - **unauthGuard**: Angular guard to protect routes that don't require authentication or authorization
20
+ - ...
21
+ - **@odx/auth/plugins/service-connect**: main entry point for service connect auth plugins
22
+ - **serviceConnectRightsPlugin**: Auth plugin to load user rights from service connect
23
+ - **serviceConnectRightsGuard**: Auth guard to check for service connect user rights
24
+ - **ServiceConnectRightsDirective**: Auth directive to check for service connect user rights
25
+ - ...
26
+
12
27
  ### Usage
13
28
 
14
29
  Import the `AuthModule` from `@odx/auth` and add it to the application imports, to configure it use the `provideAuth` function.
@@ -54,5 +69,3 @@ In order to add the UI for signing in and out, add the `odx-auth` component to t
54
69
  </odx-auth>
55
70
  </odx-header>
56
71
  ```
57
-
58
- > The library provides some additional plugins that can be imported from `@odx/auth/plugins/*`
@@ -11,6 +11,10 @@ export const ODX_AUTH_CORE_PLUGINS = new InjectionToken('@odx/auth::CorePlugins'
11
11
  providedIn: 'root',
12
12
  factory: () => [],
13
13
  });
14
+ export const ODX_AUTH_ERROR_HANDLERS = new InjectionToken('@odx/auth::ErrorHandlers', {
15
+ providedIn: 'root',
16
+ factory: () => [],
17
+ });
14
18
  export const ODX_AUTH_PLUGINS = new InjectionToken('@odx/auth::Plugins', {
15
19
  providedIn: 'root',
16
20
  factory: () => {
@@ -38,4 +42,4 @@ export const { AuthDefaultConfig, AuthConfig, injectAuthConfig, provideAuthConfi
38
42
  enableLoadingScreen: false,
39
43
  loadingScreenMessage: null,
40
44
  });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTFFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUNwRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQW9DO0lBQzlELEdBQUcsRUFBRSw4Q0FBOEM7SUFDbkQsS0FBSyxFQUFFLCtDQUErQztJQUN0RCxJQUFJLEVBQUUsMENBQTBDO0NBQ2pELENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0Isd0JBQXdCLEVBQUU7SUFDckcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDbEIsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWUsb0JBQW9CLEVBQUU7SUFDckYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRWxELE9BQU8sQ0FBQyxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBK0JILE1BQU0sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtJQUM1SCxXQUFXLEVBQUUsTUFBTTtJQUNuQixZQUFZLEVBQUUsZ0JBQWdCO0lBQzlCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsYUFBYSxFQUFFLElBQUk7SUFDbkIsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUM1QixlQUFlLEVBQUUsS0FBSztJQUN0QixZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN0QixNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7SUFDRCxjQUFjO0lBQ2QsWUFBWTtJQUNaLGVBQWU7SUFDZixtQkFBbUIsRUFBRSxLQUFLO0lBQzFCLE9BQU8sRUFBRSxFQUFFO0lBQ1gsd0JBQXdCLEVBQUUsSUFBSTtJQUM5QixtQkFBbUIsRUFBRSxLQUFLO0lBQzFCLG9CQUFvQixFQUFFLElBQUk7Q0FDYixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljVGV4dENvbnRlbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBjcmVhdGVDb25maWdUb2tlbnMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgT0F1dGhFcnJvckV2ZW50LCBPQXV0aFN0b3JhZ2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IGNyZWF0ZUluaXRpYWxzLCByZXNvbHZlRW1haWwsIHJlc29sdmVVc2VybmFtZSB9IGZyb20gJy4vaGVscGVycyc7XG5cbmltcG9ydCB7IEF1dGhFbnZpcm9ubWVudCwgQXV0aG9yaXplZEhhbmRsZXIsIEF1dGhQbHVnaW4sIEF1dGhQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BVVRIX1NDT1BFUyA9IFsnb3BlbmlkJywgJ3Byb2ZpbGUnLCAnZW1haWwnLCAnb2ZmbGluZV9hY2Nlc3MnXTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lTU1VFUlM6IFJlY29yZDxBdXRoRW52aXJvbm1lbnQsIHN0cmluZz4gPSB7XG4gIGRldjogJ2h0dHBzOi8vZGV2LmxvZ2luLmRyYWVnZXIuY29tL29hdXRoMi9kZWZhdWx0JyxcbiAgc3RhZ2U6ICdodHRwczovL3Rlc3QubG9naW4uZHJhZWdlci5jb20vb2F1dGgyL2RlZmF1bHQnLFxuICBwcm9kOiAnaHR0cHM6Ly9sb2dpbi5kcmFlZ2VyLmNvbS9vYXV0aDIvZGVmYXVsdCcsXG59O1xuZXhwb3J0IGNvbnN0IE9EWF9BVVRIX0NPUkVfUExVR0lOUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoUGx1Z2luRmFjdG9yeVtdPignQG9keC9hdXRoOjpDb3JlUGx1Z2lucycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBbXSxcbn0pO1xuZXhwb3J0IGNvbnN0IE9EWF9BVVRIX1BMVUdJTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aFBsdWdpbltdPignQG9keC9hdXRoOjpQbHVnaW5zJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICBjb25zdCB7IHBsdWdpbnMgfSA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgICBjb25zdCBjb3JlUGx1Z2lucyA9IGluamVjdChPRFhfQVVUSF9DT1JFX1BMVUdJTlMpO1xuXG4gICAgcmV0dXJuIFsuLi5jb3JlUGx1Z2lucywgLi4ucGx1Z2luc10ubWFwKChwbHVnaW5GYWN0b3J5KSA9PiBwbHVnaW5GYWN0b3J5KCkpO1xuICB9LFxufSk7XG5cbmV4cG9ydCB0eXBlIEF1dGhFcnJvckhhbmRsZXJGbiA9IChlcnJvcjogT0F1dGhFcnJvckV2ZW50KSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgUmVzb2x2ZVVzZXJuYW1lRm4gPSAocmF3Q2xhaW1zOiBPZHhBdXRoLlJhd0lkZW50aXR5Q2xhaW1zKSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBSZXNvbHZlRW1haWxGbiA9IChyYXdDbGFpbXM6IE9keEF1dGguUmF3SWRlbnRpdHlDbGFpbXMpID0+IHN0cmluZztcbmV4cG9ydCB0eXBlIENyZWF0ZUluaXRpYWxzRm4gPSAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICBlbnZpcm9ubWVudDogQXV0aEVudmlyb25tZW50O1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgaXNzdWVyPzogc3RyaW5nO1xuICByZWRpcmVjdFBhdGg6IHN0cmluZztcbiAgYWxsb3dlZFVybHM6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD47XG4gIHRpbWVvdXRGYWN0b3I6IG51bWJlcjtcbiAgbWF4T2ZmbGluZVRpbWU6IG51bWJlcjtcbiAgbG9hZFVzZXJQcm9maWxlOiBib29sZWFuO1xuICBwb3N0TG9nb3V0UmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIHNjb3Blcz86IHN0cmluZ1tdO1xuICBkaXNjb3ZlcnlVcmw/OiBzdHJpbmc7XG4gIGVycm9ySGFuZGxlcjogQXV0aEVycm9ySGFuZGxlckZuO1xuICBjcmVhdGVJbml0aWFsczogQ3JlYXRlSW5pdGlhbHNGbjtcbiAgcmVzb2x2ZUVtYWlsOiBSZXNvbHZlRW1haWxGbjtcbiAgcmVzb2x2ZVVzZXJuYW1lOiBSZXNvbHZlVXNlcm5hbWVGbjtcbiAgc3RvcmFnZT86IE9BdXRoU3RvcmFnZTtcbiAgcGx1Z2luczogQXV0aFBsdWdpbkZhY3RvcnlbXTtcbiAgc2hvd1JlZGlyZWN0T3ZlcmxheTogYm9vbGVhbjtcbiAgZGVmYXVsdEF1dGhvcml6ZWRIYW5kbGVyPzogQXV0aG9yaXplZEhhbmRsZXIgfCBudWxsO1xuICBlbmFibGVMb2FkaW5nU2NyZWVuOiBib29sZWFuO1xuICBsb2FkaW5nU2NyZWVuTWVzc2FnZT86IER5bmFtaWNUZXh0Q29udGVudCB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB7IEF1dGhEZWZhdWx0Q29uZmlnLCBBdXRoQ29uZmlnLCBpbmplY3RBdXRoQ29uZmlnLCBwcm92aWRlQXV0aENvbmZpZyB9ID0gY3JlYXRlQ29uZmlnVG9rZW5zKCdBdXRoJywgJ0BvZHgvYXV0aCcsIHtcbiAgZW52aXJvbm1lbnQ6ICdwcm9kJyxcbiAgcmVkaXJlY3RQYXRoOiAnbG9naW4vY2FsbGJhY2snLFxuICBhbGxvd2VkVXJsczogW10sXG4gIHRpbWVvdXRGYWN0b3I6IDAuNzUsXG4gIG1heE9mZmxpbmVUaW1lOiAyNCAqIDYwICogNjAsIC8vIDEgZGF5XG4gIGxvYWRVc2VyUHJvZmlsZTogZmFsc2UsXG4gIGVycm9ySGFuZGxlcjogKGVycm9yKSA9PiB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0sXG4gIGNyZWF0ZUluaXRpYWxzLFxuICByZXNvbHZlRW1haWwsXG4gIHJlc29sdmVVc2VybmFtZSxcbiAgc2hvd1JlZGlyZWN0T3ZlcmxheTogZmFsc2UsXG4gIHBsdWdpbnM6IFtdLFxuICBkZWZhdWx0QXV0aG9yaXplZEhhbmRsZXI6IG51bGwsXG4gIGVuYWJsZUxvYWRpbmdTY3JlZW46IGZhbHNlLFxuICBsb2FkaW5nU2NyZWVuTWVzc2FnZTogbnVsbCxcbn0gYXMgQXV0aENvbmZpZyk7XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTFFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUNwRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQW9DO0lBQzlELEdBQUcsRUFBRSw4Q0FBOEM7SUFDbkQsS0FBSyxFQUFFLCtDQUErQztJQUN0RCxJQUFJLEVBQUUsMENBQTBDO0NBQ2pELENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0Isd0JBQXdCLEVBQUU7SUFDckcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDbEIsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQXVCLDBCQUEwQixFQUFFO0lBQzFHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0NBQ2xCLENBQUMsQ0FBQztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFlLG9CQUFvQixFQUFFO0lBQ3JGLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUVsRCxPQUFPLENBQUMsR0FBRyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNGLENBQUMsQ0FBQztBQStCSCxNQUFNLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7SUFDNUgsV0FBVyxFQUFFLE1BQU07SUFDbkIsWUFBWSxFQUFFLGdCQUFnQjtJQUM5QixXQUFXLEVBQUUsRUFBRTtJQUNmLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGNBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDNUIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDdEIsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0lBQ0QsY0FBYztJQUNkLFlBQVk7SUFDWixlQUFlO0lBQ2YsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixPQUFPLEVBQUUsRUFBRTtJQUNYLHdCQUF3QixFQUFFLElBQUk7SUFDOUIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixvQkFBb0IsRUFBRSxJQUFJO0NBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY1RleHRDb250ZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgY3JlYXRlQ29uZmlnVG9rZW5zIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IE9BdXRoRXJyb3JFdmVudCwgT0F1dGhTdG9yYWdlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBjcmVhdGVJbml0aWFscywgcmVzb2x2ZUVtYWlsLCByZXNvbHZlVXNlcm5hbWUgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBBdXRoRW52aXJvbm1lbnQsIEF1dGhvcml6ZWRIYW5kbGVyLCBBdXRoUGx1Z2luLCBBdXRoUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVVUSF9TQ09QRVMgPSBbJ29wZW5pZCcsICdwcm9maWxlJywgJ2VtYWlsJywgJ29mZmxpbmVfYWNjZXNzJ107XG5leHBvcnQgY29uc3QgREVGQVVMVF9JU1NVRVJTOiBSZWNvcmQ8QXV0aEVudmlyb25tZW50LCBzdHJpbmc+ID0ge1xuICBkZXY6ICdodHRwczovL2Rldi5sb2dpbi5kcmFlZ2VyLmNvbS9vYXV0aDIvZGVmYXVsdCcsXG4gIHN0YWdlOiAnaHR0cHM6Ly90ZXN0LmxvZ2luLmRyYWVnZXIuY29tL29hdXRoMi9kZWZhdWx0JyxcbiAgcHJvZDogJ2h0dHBzOi8vbG9naW4uZHJhZWdlci5jb20vb2F1dGgyL2RlZmF1bHQnLFxufTtcbmV4cG9ydCBjb25zdCBPRFhfQVVUSF9DT1JFX1BMVUdJTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aFBsdWdpbkZhY3RvcnlbXT4oJ0BvZHgvYXV0aDo6Q29yZVBsdWdpbnMnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gW10sXG59KTtcbmV4cG9ydCBjb25zdCBPRFhfQVVUSF9FUlJPUl9IQU5ETEVSUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoRXJyb3JIYW5kbGVyRm5bXT4oJ0BvZHgvYXV0aDo6RXJyb3JIYW5kbGVycycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBbXSxcbn0pO1xuZXhwb3J0IGNvbnN0IE9EWF9BVVRIX1BMVUdJTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aFBsdWdpbltdPignQG9keC9hdXRoOjpQbHVnaW5zJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICBjb25zdCB7IHBsdWdpbnMgfSA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgICBjb25zdCBjb3JlUGx1Z2lucyA9IGluamVjdChPRFhfQVVUSF9DT1JFX1BMVUdJTlMpO1xuXG4gICAgcmV0dXJuIFsuLi5jb3JlUGx1Z2lucywgLi4ucGx1Z2luc10ubWFwKChwbHVnaW5GYWN0b3J5KSA9PiBwbHVnaW5GYWN0b3J5KCkpO1xuICB9LFxufSk7XG5cbmV4cG9ydCB0eXBlIEF1dGhFcnJvckhhbmRsZXJGbiA9IChlcnJvcjogT0F1dGhFcnJvckV2ZW50KSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgUmVzb2x2ZVVzZXJuYW1lRm4gPSAocmF3Q2xhaW1zOiBPZHhBdXRoLlJhd0lkZW50aXR5Q2xhaW1zKSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBSZXNvbHZlRW1haWxGbiA9IChyYXdDbGFpbXM6IE9keEF1dGguUmF3SWRlbnRpdHlDbGFpbXMpID0+IHN0cmluZztcbmV4cG9ydCB0eXBlIENyZWF0ZUluaXRpYWxzRm4gPSAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICBlbnZpcm9ubWVudDogQXV0aEVudmlyb25tZW50O1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgaXNzdWVyPzogc3RyaW5nO1xuICByZWRpcmVjdFBhdGg6IHN0cmluZztcbiAgYWxsb3dlZFVybHM6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD47XG4gIHRpbWVvdXRGYWN0b3I6IG51bWJlcjtcbiAgbWF4T2ZmbGluZVRpbWU6IG51bWJlcjtcbiAgbG9hZFVzZXJQcm9maWxlOiBib29sZWFuO1xuICBwb3N0TG9nb3V0UmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIHNjb3Blcz86IHN0cmluZ1tdO1xuICBkaXNjb3ZlcnlVcmw/OiBzdHJpbmc7XG4gIGVycm9ySGFuZGxlcjogQXV0aEVycm9ySGFuZGxlckZuO1xuICBjcmVhdGVJbml0aWFsczogQ3JlYXRlSW5pdGlhbHNGbjtcbiAgcmVzb2x2ZUVtYWlsOiBSZXNvbHZlRW1haWxGbjtcbiAgcmVzb2x2ZVVzZXJuYW1lOiBSZXNvbHZlVXNlcm5hbWVGbjtcbiAgc3RvcmFnZT86IE9BdXRoU3RvcmFnZTtcbiAgcGx1Z2luczogQXV0aFBsdWdpbkZhY3RvcnlbXTtcbiAgc2hvd1JlZGlyZWN0T3ZlcmxheTogYm9vbGVhbjtcbiAgZGVmYXVsdEF1dGhvcml6ZWRIYW5kbGVyPzogQXV0aG9yaXplZEhhbmRsZXIgfCBudWxsO1xuICBlbmFibGVMb2FkaW5nU2NyZWVuOiBib29sZWFuO1xuICBsb2FkaW5nU2NyZWVuTWVzc2FnZT86IER5bmFtaWNUZXh0Q29udGVudCB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB7IEF1dGhEZWZhdWx0Q29uZmlnLCBBdXRoQ29uZmlnLCBpbmplY3RBdXRoQ29uZmlnLCBwcm92aWRlQXV0aENvbmZpZyB9ID0gY3JlYXRlQ29uZmlnVG9rZW5zKCdBdXRoJywgJ0BvZHgvYXV0aCcsIHtcbiAgZW52aXJvbm1lbnQ6ICdwcm9kJyxcbiAgcmVkaXJlY3RQYXRoOiAnbG9naW4vY2FsbGJhY2snLFxuICBhbGxvd2VkVXJsczogW10sXG4gIHRpbWVvdXRGYWN0b3I6IDAuNzUsXG4gIG1heE9mZmxpbmVUaW1lOiAyNCAqIDYwICogNjAsIC8vIDEgZGF5XG4gIGxvYWRVc2VyUHJvZmlsZTogZmFsc2UsXG4gIGVycm9ySGFuZGxlcjogKGVycm9yKSA9PiB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0sXG4gIGNyZWF0ZUluaXRpYWxzLFxuICByZXNvbHZlRW1haWwsXG4gIHJlc29sdmVVc2VybmFtZSxcbiAgc2hvd1JlZGlyZWN0T3ZlcmxheTogZmFsc2UsXG4gIHBsdWdpbnM6IFtdLFxuICBkZWZhdWx0QXV0aG9yaXplZEhhbmRsZXI6IG51bGwsXG4gIGVuYWJsZUxvYWRpbmdTY3JlZW46IGZhbHNlLFxuICBsb2FkaW5nU2NyZWVuTWVzc2FnZTogbnVsbCxcbn0gYXMgQXV0aENvbmZpZyk7XG4iXX0=
@@ -1,10 +1,12 @@
1
- import { APP_INITIALIZER, EnvironmentInjector, ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';
1
+ import { APP_INITIALIZER, ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';
2
2
  import { WindowRef } from '@odx/angular';
3
3
  import { buildUrl, isString } from '@odx/angular/utils';
4
4
  import { OAuthModuleConfig, OAuthStorage, provideOAuthClient } from 'angular-oauth2-oidc';
5
5
  import { tap } from 'rxjs';
6
- import { AuthConfig, DEFAULT_AUTH_SCOPES, DEFAULT_ISSUERS, injectAuthConfig, ODX_AUTH_CORE_PLUGINS, provideAuthConfig } from './auth.config';
6
+ import { DEFAULT_AUTH_SCOPES, DEFAULT_ISSUERS, injectAuthConfig, ODX_AUTH_CORE_PLUGINS, ODX_AUTH_ERROR_HANDLERS, provideAuthConfig, } from './auth.config';
7
7
  import { AuthService } from './auth.service';
8
+ import { handleAuthError } from './helpers';
9
+ import { offlineAuthErrorHandler } from './models';
8
10
  import { coreIdentityPlugin, loadingScreenPlugin } from './plugins';
9
11
  export function configureInterceptor() {
10
12
  const { allowedUrls } = injectAuthConfig();
@@ -15,11 +17,10 @@ export function configureInterceptor() {
15
17
  },
16
18
  };
17
19
  }
18
- export function initializeAuthErrorHandler() {
20
+ export function initializeAuthErrorHandlers() {
19
21
  const authService = inject(AuthService);
20
- const injector = inject(EnvironmentInjector);
21
- const { errorHandler } = injectAuthConfig();
22
- authService.errors$.pipe(tap((error) => injector.runInContext(() => errorHandler(error)))).subscribe();
22
+ const handler = handleAuthError(inject(ODX_AUTH_ERROR_HANDLERS));
23
+ authService.errors$.pipe(tap((error) => handler(error))).subscribe();
23
24
  }
24
25
  export function initalizeAuthConfig() {
25
26
  const { clientId, scopes, redirectPath, environment, postLogoutRedirectUrl, issuer, timeoutFactor, discoveryUrl } = injectAuthConfig();
@@ -49,9 +50,13 @@ export function provideAuth(config) {
49
50
  },
50
51
  {
51
52
  provide: ENVIRONMENT_INITIALIZER,
52
- useValue: initializeAuthErrorHandler,
53
+ useValue: initializeAuthErrorHandlers,
53
54
  multi: true,
54
55
  },
56
+ {
57
+ provide: ODX_AUTH_ERROR_HANDLERS,
58
+ useFactory: () => [offlineAuthErrorHandler, injectAuthConfig().errorHandler],
59
+ },
55
60
  {
56
61
  provide: APP_INITIALIZER,
57
62
  useFactory: initalizeAuthConfig,
@@ -59,7 +64,7 @@ export function provideAuth(config) {
59
64
  },
60
65
  {
61
66
  provide: OAuthStorage,
62
- useFactory: () => inject(AuthConfig).storage ?? inject(WindowRef).nativeWindow.localStorage,
67
+ useFactory: () => injectAuthConfig().storage ?? inject(WindowRef).nativeWindow.localStorage,
63
68
  },
64
69
  {
65
70
  provide: ODX_AUTH_CORE_PLUGINS,
@@ -67,4 +72,4 @@ export function provideAuth(config) {
67
72
  },
68
73
  ]);
69
74
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBd0IsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBc0MsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0ksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwRSxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzNDLE9BQU87UUFDTCxjQUFjLEVBQUU7WUFDZCxtQkFBbUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDN0ksZUFBZSxFQUFFLElBQUk7U0FDdEI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSwwQkFBMEI7SUFDeEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBRTVDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDekcsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDdkksTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV0RixPQUFPLEdBQUcsRUFBRSxDQUNWLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDckIsUUFBUTtRQUNSLE1BQU0sRUFBRSxNQUFNLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQztRQUM5QyxLQUFLO1FBQ0wsV0FBVyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDO1FBQzNDLHFCQUFxQixFQUFFLHFCQUFxQjtRQUM1QyxzQkFBc0IsRUFBRSxJQUFJO1FBQzVCLGlDQUFpQyxFQUFFLENBQUMsWUFBWTtRQUNoRCxZQUFZLEVBQUUsTUFBTTtRQUNwQixvQkFBb0IsRUFBRSxXQUFXLEtBQUssS0FBSztRQUMzQyxhQUFhO0tBQ2QsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQStCLE1BQThDO0lBQ3RHLE9BQU8sd0JBQXdCLENBQUM7UUFDOUIsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1FBQ3pCLGtCQUFrQixFQUFFO1FBQ3BCO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixVQUFVLEVBQUUsb0JBQW9CO1NBQ2pDO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsWUFBWTtZQUNyQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFlBQVk7U0FDNUY7UUFDRDtZQUNFLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsUUFBUSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUM7U0FDcEQ7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudEluamVjdG9yLCBFbnZpcm9ubWVudFByb3ZpZGVycywgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIGluamVjdCwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgYnVpbGRVcmwsIENvbmZpZ0RlcGVuZGVuY2llcywgQ29uZmlnUHJvdmlkZXIsIGlzU3RyaW5nIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IE9BdXRoTW9kdWxlQ29uZmlnLCBPQXV0aFN0b3JhZ2UsIHByb3ZpZGVPQXV0aENsaWVudCB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBERUZBVUxUX0FVVEhfU0NPUEVTLCBERUZBVUxUX0lTU1VFUlMsIGluamVjdEF1dGhDb25maWcsIE9EWF9BVVRIX0NPUkVfUExVR0lOUywgcHJvdmlkZUF1dGhDb25maWcgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29yZUlkZW50aXR5UGx1Z2luLCBsb2FkaW5nU2NyZWVuUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW5zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZUludGVyY2VwdG9yKCk6IE9BdXRoTW9kdWxlQ29uZmlnIHtcbiAgY29uc3QgeyBhbGxvd2VkVXJscyB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICByZXR1cm4ge1xuICAgIHJlc291cmNlU2VydmVyOiB7XG4gICAgICBjdXN0b21VcmxWYWxpZGF0aW9uOiAodXJsKSA9PiBhbGxvd2VkVXJscy5zb21lKChhbGxvd2VkVXJsKSA9PiAoaXNTdHJpbmcoYWxsb3dlZFVybCkgPyB1cmwuc3RhcnRzV2l0aChhbGxvd2VkVXJsKSA6ICEhdXJsLm1hdGNoKGFsbG93ZWRVcmwpKSksXG4gICAgICBzZW5kQWNjZXNzVG9rZW46IHRydWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVBdXRoRXJyb3JIYW5kbGVyKCk6IHZvaWQge1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICBjb25zdCB7IGVycm9ySGFuZGxlciB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuXG4gIGF1dGhTZXJ2aWNlLmVycm9ycyQucGlwZSh0YXAoKGVycm9yKSA9PiBpbmplY3Rvci5ydW5JbkNvbnRleHQoKCkgPT4gZXJyb3JIYW5kbGVyKGVycm9yKSkpKS5zdWJzY3JpYmUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRhbGl6ZUF1dGhDb25maWcoKTogKCkgPT4gUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgY2xpZW50SWQsIHNjb3BlcywgcmVkaXJlY3RQYXRoLCBlbnZpcm9ubWVudCwgcG9zdExvZ291dFJlZGlyZWN0VXJsLCBpc3N1ZXIsIHRpbWVvdXRGYWN0b3IsIGRpc2NvdmVyeVVybCB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IG9yaWdpbiA9IGluamVjdChXaW5kb3dSZWYpLmdldE9yaWdpbigpO1xuICBjb25zdCBzY29wZSA9IEFycmF5LmZyb20obmV3IFNldChERUZBVUxUX0FVVEhfU0NPUEVTLmNvbmNhdChzY29wZXMgPz8gW10pKSkuam9pbignICcpO1xuXG4gIHJldHVybiAoKSA9PlxuICAgIGF1dGhTZXJ2aWNlLmluaXRpYWxpemUoe1xuICAgICAgY2xpZW50SWQsXG4gICAgICBpc3N1ZXI6IGlzc3VlciA/PyBERUZBVUxUX0lTU1VFUlNbZW52aXJvbm1lbnRdLFxuICAgICAgc2NvcGUsXG4gICAgICByZWRpcmVjdFVyaTogYnVpbGRVcmwob3JpZ2luLCByZWRpcmVjdFBhdGgpLFxuICAgICAgcG9zdExvZ291dFJlZGlyZWN0VXJpOiBwb3N0TG9nb3V0UmVkaXJlY3RVcmwsXG4gICAgICBwcmVzZXJ2ZVJlcXVlc3RlZFJvdXRlOiB0cnVlLFxuICAgICAgc3RyaWN0RGlzY292ZXJ5RG9jdW1lbnRWYWxpZGF0aW9uOiAhZGlzY292ZXJ5VXJsLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnY29kZScsXG4gICAgICBzaG93RGVidWdJbmZvcm1hdGlvbjogZW52aXJvbm1lbnQgPT09ICdkZXYnLFxuICAgICAgdGltZW91dEZhY3RvcixcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBdXRoPEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXM+KGNvbmZpZzogQ29uZmlnUHJvdmlkZXI8UGFydGlhbDxBdXRoQ29uZmlnPiwgRD4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHByb3ZpZGVBdXRoQ29uZmlnKGNvbmZpZyksXG4gICAgcHJvdmlkZU9BdXRoQ2xpZW50KCksXG4gICAge1xuICAgICAgcHJvdmlkZTogT0F1dGhNb2R1bGVDb25maWcsXG4gICAgICB1c2VGYWN0b3J5OiBjb25maWd1cmVJbnRlcmNlcHRvcixcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlVmFsdWU6IGluaXRpYWxpemVBdXRoRXJyb3JIYW5kbGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VGYWN0b3J5OiBpbml0YWxpemVBdXRoQ29uZmlnLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBPQXV0aFN0b3JhZ2UsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBpbmplY3QoQXV0aENvbmZpZykuc3RvcmFnZSA/PyBpbmplY3QoV2luZG93UmVmKS5uYXRpdmVXaW5kb3cubG9jYWxTdG9yYWdlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogT0RYX0FVVEhfQ09SRV9QTFVHSU5TLFxuICAgICAgdXNlVmFsdWU6IFtjb3JlSWRlbnRpdHlQbHVnaW4sIGxvYWRpbmdTY3JlZW5QbHVnaW5dLFxuICAgIH0sXG4gIF0pO1xufVxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBd0IsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBc0MsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEUsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUMzQyxPQUFPO1FBQ0wsY0FBYyxFQUFFO1lBQ2QsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENB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QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgRW52aXJvbm1lbnRQcm92aWRlcnMsIEVOVklST05NRU5UX0lOSVRJQUxJWkVSLCBpbmplY3QsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IGJ1aWxkVXJsLCBDb25maWdEZXBlbmRlbmNpZXMsIENvbmZpZ1Byb3ZpZGVyLCBpc1N0cmluZyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBPQXV0aE1vZHVsZUNvbmZpZywgT0F1dGhTdG9yYWdlLCBwcm92aWRlT0F1dGhDbGllbnQgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQXV0aENvbmZpZyxcbiAgREVGQVVMVF9BVVRIX1NDT1BFUyxcbiAgREVGQVVMVF9JU1NVRVJTLFxuICBpbmplY3RBdXRoQ29uZmlnLFxuICBPRFhfQVVUSF9DT1JFX1BMVUdJTlMsXG4gIE9EWF9BVVRIX0VSUk9SX0hBTkRMRVJTLFxuICBwcm92aWRlQXV0aENvbmZpZyxcbn0gZnJvbSAnLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IGhhbmRsZUF1dGhFcnJvciB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBvZmZsaW5lQXV0aEVycm9ySGFuZGxlciB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IGNvcmVJZGVudGl0eVBsdWdpbiwgbG9hZGluZ1NjcmVlblBsdWdpbiB9IGZyb20gJy4vcGx1Z2lucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVJbnRlcmNlcHRvcigpOiBPQXV0aE1vZHVsZUNvbmZpZyB7XG4gIGNvbnN0IHsgYWxsb3dlZFVybHMgfSA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgcmV0dXJuIHtcbiAgICByZXNvdXJjZVNlcnZlcjoge1xuICAgICAgY3VzdG9tVXJsVmFsaWRhdGlvbjogKHVybCkgPT4gYWxsb3dlZFVybHMuc29tZSgoYWxsb3dlZFVybCkgPT4gKGlzU3RyaW5nKGFsbG93ZWRVcmwpID8gdXJsLnN0YXJ0c1dpdGgoYWxsb3dlZFVybCkgOiAhIXVybC5tYXRjaChhbGxvd2VkVXJsKSkpLFxuICAgICAgc2VuZEFjY2Vzc1Rva2VuOiB0cnVlLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplQXV0aEVycm9ySGFuZGxlcnMoKTogdm9pZCB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3QgaGFuZGxlciA9IGhhbmRsZUF1dGhFcnJvcihpbmplY3QoT0RYX0FVVEhfRVJST1JfSEFORExFUlMpKTtcblxuICBhdXRoU2VydmljZS5lcnJvcnMkLnBpcGUodGFwKChlcnJvcikgPT4gaGFuZGxlcihlcnJvcikpKS5zdWJzY3JpYmUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRhbGl6ZUF1dGhDb25maWcoKTogKCkgPT4gUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgY2xpZW50SWQsIHNjb3BlcywgcmVkaXJlY3RQYXRoLCBlbnZpcm9ubWVudCwgcG9zdExvZ291dFJlZGlyZWN0VXJsLCBpc3N1ZXIsIHRpbWVvdXRGYWN0b3IsIGRpc2NvdmVyeVVybCB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IG9yaWdpbiA9IGluamVjdChXaW5kb3dSZWYpLmdldE9yaWdpbigpO1xuICBjb25zdCBzY29wZSA9IEFycmF5LmZyb20obmV3IFNldChERUZBVUxUX0FVVEhfU0NPUEVTLmNvbmNhdChzY29wZXMgPz8gW10pKSkuam9pbignICcpO1xuXG4gIHJldHVybiAoKSA9PlxuICAgIGF1dGhTZXJ2aWNlLmluaXRpYWxpemUoe1xuICAgICAgY2xpZW50SWQsXG4gICAgICBpc3N1ZXI6IGlzc3VlciA/PyBERUZBVUxUX0lTU1VFUlNbZW52aXJvbm1lbnRdLFxuICAgICAgc2NvcGUsXG4gICAgICByZWRpcmVjdFVyaTogYnVpbGRVcmwob3JpZ2luLCByZWRpcmVjdFBhdGgpLFxuICAgICAgcG9zdExvZ291dFJlZGlyZWN0VXJpOiBwb3N0TG9nb3V0UmVkaXJlY3RVcmwsXG4gICAgICBwcmVzZXJ2ZVJlcXVlc3RlZFJvdXRlOiB0cnVlLFxuICAgICAgc3RyaWN0RGlzY292ZXJ5RG9jdW1lbnRWYWxpZGF0aW9uOiAhZGlzY292ZXJ5VXJsLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnY29kZScsXG4gICAgICBzaG93RGVidWdJbmZvcm1hdGlvbjogZW52aXJvbm1lbnQgPT09ICdkZXYnLFxuICAgICAgdGltZW91dEZhY3RvcixcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBdXRoPEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXM+KGNvbmZpZzogQ29uZmlnUHJvdmlkZXI8UGFydGlhbDxBdXRoQ29uZmlnPiwgRD4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHByb3ZpZGVBdXRoQ29uZmlnKGNvbmZpZyksXG4gICAgcHJvdmlkZU9BdXRoQ2xpZW50KCksXG4gICAge1xuICAgICAgcHJvdmlkZTogT0F1dGhNb2R1bGVDb25maWcsXG4gICAgICB1c2VGYWN0b3J5OiBjb25maWd1cmVJbnRlcmNlcHRvcixcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlVmFsdWU6IGluaXRpYWxpemVBdXRoRXJyb3JIYW5kbGVycyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogT0RYX0FVVEhfRVJST1JfSEFORExFUlMsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBbb2ZmbGluZUF1dGhFcnJvckhhbmRsZXIsIGluamVjdEF1dGhDb25maWcoKS5lcnJvckhhbmRsZXJdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogaW5pdGFsaXplQXV0aENvbmZpZyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogT0F1dGhTdG9yYWdlLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gaW5qZWN0QXV0aENvbmZpZygpLnN0b3JhZ2UgPz8gaW5qZWN0KFdpbmRvd1JlZikubmF0aXZlV2luZG93LmxvY2FsU3RvcmFnZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE9EWF9BVVRIX0NPUkVfUExVR0lOUyxcbiAgICAgIHVzZVZhbHVlOiBbY29yZUlkZW50aXR5UGx1Z2luLCBsb2FkaW5nU2NyZWVuUGx1Z2luXSxcbiAgICB9LFxuICBdKTtcbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { EnvironmentInjector, inject } from '@angular/core';
2
+ import { OAuthErrorEvent } from 'angular-oauth2-oidc';
3
+ export function handleAuthError(handlers) {
4
+ const injector = inject(EnvironmentInjector);
5
+ return (error) => {
6
+ injector.runInContext(() => {
7
+ for (const handler of handlers) {
8
+ try {
9
+ handler(error);
10
+ break;
11
+ }
12
+ catch (unhandledError) {
13
+ if (!(unhandledError instanceof OAuthErrorEvent))
14
+ throw error;
15
+ continue;
16
+ }
17
+ }
18
+ });
19
+ };
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLWF1dGgtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvaGVscGVycy9oYW5kbGUtYXV0aC1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd0RCxNQUFNLFVBQVUsZUFBZSxDQUFDLFFBQThCO0lBQzVELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRTdDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNmLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO1lBQ3pCLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO2dCQUM5QixJQUFJO29CQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDZixNQUFNO2lCQUNQO2dCQUFDLE9BQU8sY0FBYyxFQUFFO29CQUN2QixJQUFJLENBQUMsQ0FBQyxjQUFjLFlBQVksZUFBZSxDQUFDO3dCQUFFLE1BQU0sS0FBSyxDQUFDO29CQUM5RCxTQUFTO2lCQUNWO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudEluamVjdG9yLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9BdXRoRXJyb3JFdmVudCB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgQXV0aEVycm9ySGFuZGxlckZuIH0gZnJvbSAnLi4vYXV0aC5jb25maWcnO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlQXV0aEVycm9yKGhhbmRsZXJzOiBBdXRoRXJyb3JIYW5kbGVyRm5bXSk6IChlcnJvcjogT0F1dGhFcnJvckV2ZW50KSA9PiB2b2lkIHtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cbiAgcmV0dXJuIChlcnJvcikgPT4ge1xuICAgIGluamVjdG9yLnJ1bkluQ29udGV4dCgoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgaGFuZGxlcnMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBoYW5kbGVyKGVycm9yKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBjYXRjaCAodW5oYW5kbGVkRXJyb3IpIHtcbiAgICAgICAgICBpZiAoISh1bmhhbmRsZWRFcnJvciBpbnN0YW5jZW9mIE9BdXRoRXJyb3JFdmVudCkpIHRocm93IGVycm9yO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
@@ -1,4 +1,5 @@
1
1
  export * from './create-inititals';
2
+ export * from './handle-auth-error';
2
3
  export * from './resolve-email';
3
4
  export * from './resolve-username';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLWluaXRpdGFscyc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc29sdmUtZW1haWwnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNvbHZlLXVzZXJuYW1lJztcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jcmVhdGUtaW5pdGl0YWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaGFuZGxlLWF1dGgtZXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNvbHZlLWVtYWlsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzb2x2ZS11c2VybmFtZSc7XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import { inject, Injectable, InjectionToken } from '@angular/core';
2
2
  import { WindowRef } from '@odx/angular';
3
+ import { OAuthService } from 'angular-oauth2-oidc';
3
4
  import * as i0 from "@angular/core";
4
5
  export const ODX_AUTH_HTTP_CACHE_STORAGE = new InjectionToken('@odx/auth::AuthHttpCacheStorage', {
5
6
  providedIn: 'root',
@@ -8,18 +9,26 @@ export const ODX_AUTH_HTTP_CACHE_STORAGE = new InjectionToken('@odx/auth::AuthHt
8
9
  export class AuthHttpCache {
9
10
  constructor() {
10
11
  this.cacheStorage = inject(ODX_AUTH_HTTP_CACHE_STORAGE);
12
+ this.oauthService = inject(OAuthService);
11
13
  }
12
14
  async delete(request) {
13
15
  const cache = await this.cacheStorage.open(AuthHttpCache.CACHE_KEY);
14
16
  return cache.delete(request);
15
17
  }
16
- async request(request) {
18
+ async request(requestInfo, authentication = false) {
19
+ const request = new Request(requestInfo);
20
+ const authorizationHeader = authentication ? this.oauthService.authorizationHeader() : null;
21
+ if (authorizationHeader) {
22
+ request.headers.set('Authorization', authorizationHeader);
23
+ }
17
24
  const cache = await this.cacheStorage.open(AuthHttpCache.CACHE_KEY);
18
- try {
19
- await cache.add(request);
25
+ const response = await fetch(request).catch(() => null);
26
+ if (response?.ok) {
27
+ await cache.put(request, response);
20
28
  }
21
- catch {
22
- // ignore request errors
29
+ if (authorizationHeader && response?.status === 401) {
30
+ await cache.delete(request);
31
+ await this.oauthService.refreshToken().catch(() => null);
23
32
  }
24
33
  return cache.match(request).then((res) => res?.json() ?? null);
25
34
  }
@@ -31,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
31
40
  type: Injectable,
32
41
  args: [{ providedIn: 'root' }]
33
42
  }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1odHRwLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL21vZGVscy9hdXRoLWh0dHAtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXpDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFlLGlDQUFpQyxFQUFFO0lBQzdHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU07Q0FDckQsQ0FBQyxDQUFDO0FBR0gsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFHbUIsaUJBQVksR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztLQWtCckU7SUFoQlEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUEwQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUksT0FBMEI7UUFDaEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsSUFBSTtZQUNGLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMxQjtRQUFDLE1BQU07WUFDTix3QkFBd0I7U0FDekI7UUFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQzs7QUFsQnVCLHVCQUFTLEdBQUcsc0JBQXNCLENBQUM7MEdBRGhELGFBQWE7OEdBQWIsYUFBYSxjQURBLE1BQU07MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcblxuZXhwb3J0IGNvbnN0IE9EWF9BVVRIX0hUVFBfQ0FDSEVfU1RPUkFHRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDYWNoZVN0b3JhZ2U+KCdAb2R4L2F1dGg6OkF1dGhIdHRwQ2FjaGVTdG9yYWdlJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IGluamVjdChXaW5kb3dSZWYpLm5hdGl2ZVdpbmRvdy5jYWNoZXMsXG59KTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRoSHR0cENhY2hlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfS0VZID0gJ0BvZHgvYXV0aC9odHRwLWNhY2hlJztcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVN0b3JhZ2UgPSBpbmplY3QoT0RYX0FVVEhfSFRUUF9DQUNIRV9TVE9SQUdFKTtcblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlKHJlcXVlc3Q6IFJlcXVlc3RJbmZvIHwgVVJMKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCB0aGlzLmNhY2hlU3RvcmFnZS5vcGVuKEF1dGhIdHRwQ2FjaGUuQ0FDSEVfS0VZKTtcblxuICAgIHJldHVybiBjYWNoZS5kZWxldGUocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxUPihyZXF1ZXN0OiBSZXF1ZXN0SW5mbyB8IFVSTCk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICBjb25zdCBjYWNoZSA9IGF3YWl0IHRoaXMuY2FjaGVTdG9yYWdlLm9wZW4oQXV0aEh0dHBDYWNoZS5DQUNIRV9LRVkpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjYWNoZS5hZGQocmVxdWVzdCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBpZ25vcmUgcmVxdWVzdCBlcnJvcnNcbiAgICB9XG5cbiAgICByZXR1cm4gY2FjaGUubWF0Y2gocmVxdWVzdCkudGhlbigocmVzKSA9PiByZXM/Lmpzb24oKSA/PyBudWxsKTtcbiAgfVxufVxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1odHRwLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL21vZGVscy9hdXRoLWh0dHAtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVuRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLGNBQWMsQ0FBZSxpQ0FBaUMsRUFBRTtJQUM3RyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNO0NBQ3JELENBQUMsQ0FBQztBQUdILE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBR21CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDbkQsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0EwQnREO0lBeEJRLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBMEI7UUFDNUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUFJLFdBQThCLEVBQUUsY0FBYyxHQUFHLEtBQUs7UUFDNUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVGLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLG1CQUFtQixDQUFDLENBQUM7U0FDM0Q7UUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxRQUFRLEVBQUUsRUFBRSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJLG1CQUFtQixJQUFJLFFBQVEsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFO1lBQ25ELE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFEO1FBRUQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7O0FBM0J1Qix1QkFBUyxHQUFHLHNCQUFzQixDQUFDOzBHQURoRCxhQUFhOzhHQUFiLGFBQWEsY0FEQSxNQUFNOzJGQUNuQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcblxuZXhwb3J0IGNvbnN0IE9EWF9BVVRIX0hUVFBfQ0FDSEVfU1RPUkFHRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDYWNoZVN0b3JhZ2U+KCdAb2R4L2F1dGg6OkF1dGhIdHRwQ2FjaGVTdG9yYWdlJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IGluamVjdChXaW5kb3dSZWYpLm5hdGl2ZVdpbmRvdy5jYWNoZXMsXG59KTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRoSHR0cENhY2hlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfS0VZID0gJ0BvZHgvYXV0aC9odHRwLWNhY2hlJztcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVN0b3JhZ2UgPSBpbmplY3QoT0RYX0FVVEhfSFRUUF9DQUNIRV9TVE9SQUdFKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvYXV0aFNlcnZpY2UgPSBpbmplY3QoT0F1dGhTZXJ2aWNlKTtcblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlKHJlcXVlc3Q6IFJlcXVlc3RJbmZvIHwgVVJMKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCB0aGlzLmNhY2hlU3RvcmFnZS5vcGVuKEF1dGhIdHRwQ2FjaGUuQ0FDSEVfS0VZKTtcblxuICAgIHJldHVybiBjYWNoZS5kZWxldGUocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxUPihyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8gfCBVUkwsIGF1dGhlbnRpY2F0aW9uID0gZmFsc2UpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHJlcXVlc3RJbmZvKTtcbiAgICBjb25zdCBhdXRob3JpemF0aW9uSGVhZGVyID0gYXV0aGVudGljYXRpb24gPyB0aGlzLm9hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyKCkgOiBudWxsO1xuICAgIGlmIChhdXRob3JpemF0aW9uSGVhZGVyKSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYXV0aG9yaXphdGlvbkhlYWRlcik7XG4gICAgfVxuICAgIGNvbnN0IGNhY2hlID0gYXdhaXQgdGhpcy5jYWNoZVN0b3JhZ2Uub3BlbihBdXRoSHR0cENhY2hlLkNBQ0hFX0tFWSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXF1ZXN0KS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICBpZiAocmVzcG9uc2U/Lm9rKSB7XG4gICAgICBhd2FpdCBjYWNoZS5wdXQocmVxdWVzdCwgcmVzcG9uc2UpO1xuICAgIH1cbiAgICBpZiAoYXV0aG9yaXphdGlvbkhlYWRlciAmJiByZXNwb25zZT8uc3RhdHVzID09PSA0MDEpIHtcbiAgICAgIGF3YWl0IGNhY2hlLmRlbGV0ZShyZXF1ZXN0KTtcbiAgICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZS5tYXRjaChyZXF1ZXN0KS50aGVuKChyZXMpID0+IHJlcz8uanNvbigpID8/IG51bGwpO1xuICB9XG59XG4iXX0=
@@ -2,4 +2,5 @@ export * from './auth-environment';
2
2
  export * from './auth-http-cache';
3
3
  export * from './auth-plugin-manager';
4
4
  export * from './authorized-handler';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dGgtZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLWh0dHAtY2FjaGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLXBsdWdpbi1tYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aG9yaXplZC1oYW5kbGVyJztcbiJdfQ==
5
+ export * from './offline-auth-error-handler';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0aC1lbnZpcm9ubWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgtaHR0cC1jYWNoZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgtcGx1Z2luLW1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRob3JpemVkLWhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9vZmZsaW5lLWF1dGgtZXJyb3ItaGFuZGxlcic7XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export const offlineAuthErrorHandler = (error) => {
2
+ if (error.type === 'discovery_document_load_error' && error.reason?.status === 504) {
3
+ return;
4
+ }
5
+ throw error;
6
+ };
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS1hdXRoLWVycm9yLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvbW9kZWxzL29mZmxpbmUtYXV0aC1lcnJvci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF1QixDQUFDLEtBQUssRUFBRSxFQUFFO0lBQ25FLElBQUksS0FBSyxDQUFDLElBQUksS0FBSywrQkFBK0IsSUFBSyxLQUFLLENBQUMsTUFBNEIsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQ3pHLE9BQU87S0FDUjtJQUNELE1BQU0sS0FBSyxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBdXRoRXJyb3JIYW5kbGVyRm4gfSBmcm9tICcuLi9hdXRoLmNvbmZpZyc7XG5cbmV4cG9ydCBjb25zdCBvZmZsaW5lQXV0aEVycm9ySGFuZGxlcjogQXV0aEVycm9ySGFuZGxlckZuID0gKGVycm9yKSA9PiB7XG4gIGlmIChlcnJvci50eXBlID09PSAnZGlzY292ZXJ5X2RvY3VtZW50X2xvYWRfZXJyb3InICYmIChlcnJvci5yZWFzb24gYXMgSHR0cEVycm9yUmVzcG9uc2UpPy5zdGF0dXMgPT09IDUwNCkge1xuICAgIHJldHVybjtcbiAgfVxuICB0aHJvdyBlcnJvcjtcbn07XG4iXX0=
@@ -1,27 +1,15 @@
1
1
  import { inject } from '@angular/core';
2
2
  import { AuthHttpCache, injectAuthConfig } from '@odx/auth';
3
- import { defer } from 'rxjs';
3
+ import { defer, map } from 'rxjs';
4
4
  import { buildServiceConnectUrl } from './build-service-connect-url';
5
5
  export function serviceConnectPluginFactory(options) {
6
6
  return (pluginOptions) => () => {
7
+ options.setup?.(pluginOptions);
7
8
  const { environment } = injectAuthConfig();
8
9
  const httpCache = inject(AuthHttpCache);
9
- options.setup?.();
10
10
  const url = buildServiceConnectUrl(pluginOptions?.environment ?? environment, ...options.endpoint);
11
- const plugin = (authService) => defer(async () => {
12
- const request = new Request(url);
13
- const token = authService.getAccessToken();
14
- let result = null;
15
- if (token) {
16
- request.headers.set('Authorization', `Bearer ${token}`);
17
- result = await httpCache.request(request).then((res) => options.parseResponse(res));
18
- }
19
- else if (!authService.isAuthenticated()) {
20
- await httpCache.delete(request);
21
- }
22
- return result ?? options.defaultValue ?? {};
23
- });
24
- return plugin;
11
+ const parseResponse = (dto) => options.parseResponse(dto) ?? options.defaultValue ?? {};
12
+ return () => defer(() => httpCache.request(url, true)).pipe(map((dto) => parseResponse(dto)));
25
13
  };
26
14
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXBsdWdpbi1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL2hlbHBlcnMvc2VydmljZS1jb25uZWN0LXBsdWdpbi1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBaUMsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQWFyRSxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLE9BQWdEO0lBRWhELE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTtRQUM3QixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUMzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbEIsTUFBTSxHQUFHLEdBQUcsc0JBQXNCLENBQUMsYUFBYSxFQUFFLFdBQVcsSUFBSSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkcsTUFBTSxNQUFNLEdBQWUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUN6QyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0MsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksS0FBSyxFQUFFO2dCQUNULE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBRXhELE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQU0sT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDMUY7aUJBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDekMsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2pDO1lBRUQsT0FBTyxNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoSHR0cENhY2hlLCBBdXRoUGx1Z2luLCBBdXRoUGx1Z2luRmFjdG9yeSwgaW5qZWN0QXV0aENvbmZpZyB9IGZyb20gJ0BvZHgvYXV0aCc7XG5pbXBvcnQgeyBkZWZlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VydmljZUNvbm5lY3RFbnZpcm9ubWVudCB9IGZyb20gJy4uL3NlcnZpY2UtY29ubmVjdC5jb25maWcnO1xuaW1wb3J0IHsgYnVpbGRTZXJ2aWNlQ29ubmVjdFVybCB9IGZyb20gJy4vYnVpbGQtc2VydmljZS1jb25uZWN0LXVybCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUNvbm5lY3RQbHVnaW5PcHRpb25zIHtcbiAgZW52aXJvbm1lbnQ/OiBTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeU9wdGlvbnM8RHRvPiB7XG4gIGVuZHBvaW50OiBzdHJpbmdbXTtcbiAgcGFyc2VSZXNwb25zZTogKHJlczogRHRvIHwgbnVsbCkgPT4gUGFydGlhbDxPZHhBdXRoLkF1dGhQbHVnaW5SZXN1bHQ+O1xuICBkZWZhdWx0VmFsdWU/OiBQYXJ0aWFsPE9keEF1dGguQXV0aFBsdWdpblJlc3VsdD47XG4gIHNldHVwPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeTxEdG8gPSB1bmtub3duPihcbiAgb3B0aW9uczogU2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5T3B0aW9uczxEdG8+LFxuKTogKHBsdWdpbk9wdGlvbnM/OiBTZXJ2aWNlQ29ubmVjdFBsdWdpbk9wdGlvbnMpID0+IEF1dGhQbHVnaW5GYWN0b3J5IHtcbiAgcmV0dXJuIChwbHVnaW5PcHRpb25zKSA9PiAoKSA9PiB7XG4gICAgY29uc3QgeyBlbnZpcm9ubWVudCB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICAgIGNvbnN0IGh0dHBDYWNoZSA9IGluamVjdChBdXRoSHR0cENhY2hlKTtcbiAgICBvcHRpb25zLnNldHVwPy4oKTtcbiAgICBjb25zdCB1cmwgPSBidWlsZFNlcnZpY2VDb25uZWN0VXJsKHBsdWdpbk9wdGlvbnM/LmVudmlyb25tZW50ID8/IGVudmlyb25tZW50LCAuLi5vcHRpb25zLmVuZHBvaW50KTtcblxuICAgIGNvbnN0IHBsdWdpbjogQXV0aFBsdWdpbiA9IChhdXRoU2VydmljZSkgPT5cbiAgICAgIGRlZmVyKGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCk7XG4gICAgICAgIGNvbnN0IHRva2VuID0gYXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgIHJlcXVlc3QuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dG9rZW59YCk7XG5cbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBodHRwQ2FjaGUucmVxdWVzdDxEdG8+KHJlcXVlc3QpLnRoZW4oKHJlcykgPT4gb3B0aW9ucy5wYXJzZVJlc3BvbnNlKHJlcykpO1xuICAgICAgICB9IGVsc2UgaWYgKCFhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSkge1xuICAgICAgICAgIGF3YWl0IGh0dHBDYWNoZS5kZWxldGUocmVxdWVzdCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0ID8/IG9wdGlvbnMuZGVmYXVsdFZhbHVlID8/IHt9O1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gcGx1Z2luO1xuICB9O1xufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXBsdWdpbi1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL2hlbHBlcnMvc2VydmljZS1jb25uZWN0LXBsdWdpbi1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBcUIsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFlckUsTUFBTSxVQUFVLDJCQUEyQixDQUFnQixPQUFnRDtJQUN6RyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDN0IsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QyxNQUFNLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsV0FBVyxJQUFJLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRyxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUVwRyxPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aEh0dHBDYWNoZSwgQXV0aFBsdWdpbkZhY3RvcnksIGluamVjdEF1dGhDb25maWcgfSBmcm9tICdAb2R4L2F1dGgnO1xuaW1wb3J0IHsgZGVmZXIsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VydmljZUNvbm5lY3RFbnZpcm9ubWVudCB9IGZyb20gJy4uL3NlcnZpY2UtY29ubmVjdC5jb25maWcnO1xuaW1wb3J0IHsgYnVpbGRTZXJ2aWNlQ29ubmVjdFVybCB9IGZyb20gJy4vYnVpbGQtc2VydmljZS1jb25uZWN0LXVybCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUNvbm5lY3RQbHVnaW5PcHRpb25zIHtcbiAgZW52aXJvbm1lbnQ/OiBTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeU9wdGlvbnM8RHRvPiB7XG4gIGVuZHBvaW50OiBzdHJpbmdbXTtcbiAgcGFyc2VSZXNwb25zZTogKHJlczogRHRvIHwgbnVsbCkgPT4gUGFydGlhbDxPZHhBdXRoLkF1dGhQbHVnaW5SZXN1bHQ+O1xuICBkZWZhdWx0VmFsdWU/OiBQYXJ0aWFsPE9keEF1dGguQXV0aFBsdWdpblJlc3VsdD47XG4gIHNldHVwPzogKHBsdWdpbk9wdGlvbnM/OiBTZXJ2aWNlQ29ubmVjdFBsdWdpbk9wdGlvbnMpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIFNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeSA9IChwbHVnaW5PcHRpb25zPzogU2VydmljZUNvbm5lY3RQbHVnaW5PcHRpb25zKSA9PiBBdXRoUGx1Z2luRmFjdG9yeTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeTxEdG8gPSB1bmtub3duPihvcHRpb25zOiBTZXJ2aWNlQ29ubmVjdFBsdWdpbkZhY3RvcnlPcHRpb25zPER0bz4pOiBTZXJ2aWNlQ29ubmVjdFBsdWdpbkZhY3Rvcnkge1xuICByZXR1cm4gKHBsdWdpbk9wdGlvbnMpID0+ICgpID0+IHtcbiAgICBvcHRpb25zLnNldHVwPy4ocGx1Z2luT3B0aW9ucyk7XG4gICAgY29uc3QgeyBlbnZpcm9ubWVudCB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICAgIGNvbnN0IGh0dHBDYWNoZSA9IGluamVjdChBdXRoSHR0cENhY2hlKTtcbiAgICBjb25zdCB1cmwgPSBidWlsZFNlcnZpY2VDb25uZWN0VXJsKHBsdWdpbk9wdGlvbnM/LmVudmlyb25tZW50ID8/IGVudmlyb25tZW50LCAuLi5vcHRpb25zLmVuZHBvaW50KTtcbiAgICBjb25zdCBwYXJzZVJlc3BvbnNlID0gKGR0bzogRHRvIHwgbnVsbCkgPT4gb3B0aW9ucy5wYXJzZVJlc3BvbnNlKGR0bykgPz8gb3B0aW9ucy5kZWZhdWx0VmFsdWUgPz8ge307XG5cbiAgICByZXR1cm4gKCkgPT4gZGVmZXIoKCkgPT4gaHR0cENhY2hlLnJlcXVlc3Q8RHRvPih1cmwsIHRydWUpKS5waXBlKG1hcCgoZHRvKSA9PiBwYXJzZVJlc3BvbnNlKGR0bykpKTtcbiAgfTtcbn1cbiJdfQ==
@@ -5,6 +5,5 @@ export const serviceConnectRightsPlugin = serviceConnectPluginFactory({
5
5
  endpoint: [ServiceConnectEndpoints.userRights],
6
6
  parseResponse: (res) => ({ rights: res?.rights ?? [] }),
7
7
  defaultValue: { rights: [] },
8
- // setup: () => inject(AuthConfig).scopes?.push(ServiceConnectScopes.RIGHTS); // TODO: enable scope when supported by the CSI team
9
8
  });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXJpZ2h0cy5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvc2VydmljZS1jb25uZWN0LXJpZ2h0cy5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sMkJBQTJCLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsMkJBQTJCLENBQXFDO0lBQ3hHLFFBQVEsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQztJQUM5QyxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO0lBQzVCLG1JQUFtSTtDQUNwSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZXRTZXJ2aWNlQ29ubmVjdFJpZ2h0c1Jlc3BvbnNlRHRvIH0gZnJvbSAnLi9kdG9zJztcbmltcG9ydCB7IHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTZXJ2aWNlQ29ubmVjdEVuZHBvaW50cyB9IGZyb20gJy4vc2VydmljZS1jb25uZWN0LmNvbmZpZyc7XG5pbXBvcnQgJy4vc2VydmljZS1jb25uZWN0LnR5cGluZ3MnO1xuXG5leHBvcnQgY29uc3Qgc2VydmljZUNvbm5lY3RSaWdodHNQbHVnaW4gPSBzZXJ2aWNlQ29ubmVjdFBsdWdpbkZhY3Rvcnk8R2V0U2VydmljZUNvbm5lY3RSaWdodHNSZXNwb25zZUR0bz4oe1xuICBlbmRwb2ludDogW1NlcnZpY2VDb25uZWN0RW5kcG9pbnRzLnVzZXJSaWdodHNdLFxuICBwYXJzZVJlc3BvbnNlOiAocmVzKSA9PiAoeyByaWdodHM6IHJlcz8ucmlnaHRzID8/IFtdIH0pLFxuICBkZWZhdWx0VmFsdWU6IHsgcmlnaHRzOiBbXSB9LFxuICAvLyAgc2V0dXA6ICgpID0+IGluamVjdChBdXRoQ29uZmlnKS5zY29wZXM/LnB1c2goU2VydmljZUNvbm5lY3RTY29wZXMuUklHSFRTKTsgLy8gVE9ETzogZW5hYmxlIHNjb3BlIHdoZW4gc3VwcG9ydGVkIGJ5IHRoZSBDU0kgdGVhbVxufSk7XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXJpZ2h0cy5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvc2VydmljZS1jb25uZWN0LXJpZ2h0cy5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sMkJBQTJCLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsMkJBQTJCLENBQXFDO0lBQ3hHLFFBQVEsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQztJQUM5QyxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO0NBQzdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdldFNlcnZpY2VDb25uZWN0UmlnaHRzUmVzcG9uc2VEdG8gfSBmcm9tICcuL2R0b3MnO1xuaW1wb3J0IHsgc2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNlcnZpY2VDb25uZWN0RW5kcG9pbnRzIH0gZnJvbSAnLi9zZXJ2aWNlLWNvbm5lY3QuY29uZmlnJztcbmltcG9ydCAnLi9zZXJ2aWNlLWNvbm5lY3QudHlwaW5ncyc7XG5cbmV4cG9ydCBjb25zdCBzZXJ2aWNlQ29ubmVjdFJpZ2h0c1BsdWdpbiA9IHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeTxHZXRTZXJ2aWNlQ29ubmVjdFJpZ2h0c1Jlc3BvbnNlRHRvPih7XG4gIGVuZHBvaW50OiBbU2VydmljZUNvbm5lY3RFbmRwb2ludHMudXNlclJpZ2h0c10sXG4gIHBhcnNlUmVzcG9uc2U6IChyZXMpID0+ICh7IHJpZ2h0czogcmVzPy5yaWdodHMgPz8gW10gfSksXG4gIGRlZmF1bHRWYWx1ZTogeyByaWdodHM6IFtdIH0sXG59KTtcbiJdfQ==
@@ -5,10 +5,11 @@ export const ServiceConnnectEnvironments = {
5
5
  };
6
6
  export const ServiceConnectScopes = {
7
7
  BASE: 'dcid',
8
- // RIGHTS: 'dcid-rights', // TODO: enable scope when supported by the CSI team
9
- // INSTITUTION: 'dcid-instiution', // TODO: enable scope when supported by the CSI team
8
+ PROFILE: 'dcid.profile',
9
+ RIGHTS: 'dcid.rights',
10
+ INSTITUTION: 'dcid.instiution',
10
11
  };
11
12
  export const ServiceConnectEndpoints = {
12
13
  userRights: '/users/me/rights',
13
14
  };
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9zZXJ2aWNlLWNvbm5lY3QuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFvQztJQUMxRSxHQUFHLEVBQUUsc0NBQXNDO0lBQzNDLEtBQUssRUFBRSx5Q0FBeUM7SUFDaEQsSUFBSSxFQUFFLGlDQUFpQztDQUN4QyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsSUFBSSxFQUFFLE1BQU07SUFDWiw4RUFBOEU7SUFDOUUsdUZBQXVGO0NBQ3hGLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxVQUFVLEVBQUUsa0JBQWtCO0NBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoRW52aXJvbm1lbnQgfSBmcm9tICdAb2R4L2F1dGgnO1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50ID0geyBjdXN0b206IHN0cmluZyB9O1xuZXhwb3J0IGNvbnN0IFNlcnZpY2VDb25ubmVjdEVudmlyb25tZW50czogUmVjb3JkPEF1dGhFbnZpcm9ubWVudCwgc3RyaW5nPiA9IHtcbiAgZGV2OiAnaHR0cHM6Ly9hcGkudGVzdC5jb25uZWN0LmRyYWVnZXIuY29tJyxcbiAgc3RhZ2U6ICdodHRwczovL2FwaS5zdGFnaW5nLmNvbm5lY3QuZHJhZWdlci5jb20nLFxuICBwcm9kOiAnaHR0cHM6Ly9hcGkuY29ubmVjdC5kcmFlZ2VyLmNvbScsXG59O1xuZXhwb3J0IGNvbnN0IFNlcnZpY2VDb25uZWN0U2NvcGVzID0ge1xuICBCQVNFOiAnZGNpZCcsXG4gIC8vIFJJR0hUUzogJ2RjaWQtcmlnaHRzJywgLy8gVE9ETzogZW5hYmxlIHNjb3BlIHdoZW4gc3VwcG9ydGVkIGJ5IHRoZSBDU0kgdGVhbVxuICAvLyBJTlNUSVRVVElPTjogJ2RjaWQtaW5zdGl1dGlvbicsIC8vIFRPRE86IGVuYWJsZSBzY29wZSB3aGVuIHN1cHBvcnRlZCBieSB0aGUgQ1NJIHRlYW1cbn07XG5leHBvcnQgY29uc3QgU2VydmljZUNvbm5lY3RFbmRwb2ludHMgPSB7XG4gIHVzZXJSaWdodHM6ICcvdXNlcnMvbWUvcmlnaHRzJyxcbn07XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9zZXJ2aWNlLWNvbm5lY3QuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFvQztJQUMxRSxHQUFHLEVBQUUsc0NBQXNDO0lBQzNDLEtBQUssRUFBRSx5Q0FBeUM7SUFDaEQsSUFBSSxFQUFFLGlDQUFpQztDQUN4QyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsSUFBSSxFQUFFLE1BQU07SUFDWixPQUFPLEVBQUUsY0FBYztJQUN2QixNQUFNLEVBQUUsYUFBYTtJQUNyQixXQUFXLEVBQUUsaUJBQWlCO0NBQy9CLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxVQUFVLEVBQUUsa0JBQWtCO0NBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoRW52aXJvbm1lbnQgfSBmcm9tICdAb2R4L2F1dGgnO1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50ID0geyBjdXN0b206IHN0cmluZyB9O1xuZXhwb3J0IGNvbnN0IFNlcnZpY2VDb25ubmVjdEVudmlyb25tZW50czogUmVjb3JkPEF1dGhFbnZpcm9ubWVudCwgc3RyaW5nPiA9IHtcbiAgZGV2OiAnaHR0cHM6Ly9hcGkudGVzdC5jb25uZWN0LmRyYWVnZXIuY29tJyxcbiAgc3RhZ2U6ICdodHRwczovL2FwaS5zdGFnaW5nLmNvbm5lY3QuZHJhZWdlci5jb20nLFxuICBwcm9kOiAnaHR0cHM6Ly9hcGkuY29ubmVjdC5kcmFlZ2VyLmNvbScsXG59O1xuZXhwb3J0IGNvbnN0IFNlcnZpY2VDb25uZWN0U2NvcGVzID0ge1xuICBCQVNFOiAnZGNpZCcsXG4gIFBST0ZJTEU6ICdkY2lkLnByb2ZpbGUnLFxuICBSSUdIVFM6ICdkY2lkLnJpZ2h0cycsXG4gIElOU1RJVFVUSU9OOiAnZGNpZC5pbnN0aXV0aW9uJyxcbn07XG5leHBvcnQgY29uc3QgU2VydmljZUNvbm5lY3RFbmRwb2ludHMgPSB7XG4gIHVzZXJSaWdodHM6ICcvdXNlcnMvbWUvcmlnaHRzJyxcbn07XG4iXX0=
@@ -1,10 +1,9 @@
1
1
  import { isString, buildUrl } from '@odx/angular/utils';
2
- import { __awaiter } from 'tslib';
3
2
  import * as i0 from '@angular/core';
4
3
  import { inject, Directive, Input } from '@angular/core';
5
4
  import * as i1 from '@odx/auth';
6
5
  import { injectAuthConfig, AuthHttpCache, AuthDirective, authGuard } from '@odx/auth';
7
- import { defer } from 'rxjs';
6
+ import { defer, map } from 'rxjs';
8
7
 
9
8
  const ServiceConnnectEnvironments = {
10
9
  dev: 'https://api.test.connect.draeger.com',
@@ -13,8 +12,9 @@ const ServiceConnnectEnvironments = {
13
12
  };
14
13
  const ServiceConnectScopes = {
15
14
  BASE: 'dcid',
16
- // RIGHTS: 'dcid-rights', // TODO: enable scope when supported by the CSI team
17
- // INSTITUTION: 'dcid-instiution', // TODO: enable scope when supported by the CSI team
15
+ PROFILE: 'dcid.profile',
16
+ RIGHTS: 'dcid.rights',
17
+ INSTITUTION: 'dcid.instiution',
18
18
  };
19
19
  const ServiceConnectEndpoints = {
20
20
  userRights: '/users/me/rights',
@@ -38,25 +38,12 @@ function hasRolesOrRightsHandler(rolesOrRights) {
38
38
  function serviceConnectPluginFactory(options) {
39
39
  return (pluginOptions) => () => {
40
40
  var _a, _b;
41
+ (_a = options.setup) === null || _a === void 0 ? void 0 : _a.call(options, pluginOptions);
41
42
  const { environment } = injectAuthConfig();
42
43
  const httpCache = inject(AuthHttpCache);
43
- (_a = options.setup) === null || _a === void 0 ? void 0 : _a.call(options);
44
44
  const url = buildServiceConnectUrl((_b = pluginOptions === null || pluginOptions === void 0 ? void 0 : pluginOptions.environment) !== null && _b !== void 0 ? _b : environment, ...options.endpoint);
45
- const plugin = (authService) => defer(() => __awaiter(this, void 0, void 0, function* () {
46
- var _c;
47
- const request = new Request(url);
48
- const token = authService.getAccessToken();
49
- let result = null;
50
- if (token) {
51
- request.headers.set('Authorization', `Bearer ${token}`);
52
- result = yield httpCache.request(request).then((res) => options.parseResponse(res));
53
- }
54
- else if (!authService.isAuthenticated()) {
55
- yield httpCache.delete(request);
56
- }
57
- return (_c = result !== null && result !== void 0 ? result : options.defaultValue) !== null && _c !== void 0 ? _c : {};
58
- }));
59
- return plugin;
45
+ const parseResponse = (dto) => { var _a, _b; return (_b = (_a = options.parseResponse(dto)) !== null && _a !== void 0 ? _a : options.defaultValue) !== null && _b !== void 0 ? _b : {}; };
46
+ return () => defer(() => httpCache.request(url, true)).pipe(map((dto) => parseResponse(dto)));
60
47
  };
61
48
  }
62
49
 
@@ -96,7 +83,6 @@ const serviceConnectRightsPlugin = serviceConnectPluginFactory({
96
83
  endpoint: [ServiceConnectEndpoints.userRights],
97
84
  parseResponse: (res) => { var _a; return ({ rights: (_a = res === null || res === void 0 ? void 0 : res.rights) !== null && _a !== void 0 ? _a : [] }); },
98
85
  defaultValue: { rights: [] },
99
- // setup: () => inject(AuthConfig).scopes?.push(ServiceConnectScopes.RIGHTS); // TODO: enable scope when supported by the CSI team
100
86
  });
101
87
 
102
88
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"odx-auth-plugins-service-connect.mjs","sources":["../../../../packages/auth/plugins/service-connect/src/lib/service-connect.config.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/build-service-connect-url.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights-handler.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/service-connect-plugin-factory.ts","../../../../packages/auth/plugins/service-connect/src/lib/service-connect-rights.directive.ts","../../../../packages/auth/plugins/service-connect/src/lib/service-connect-rights.guard.ts","../../../../packages/auth/plugins/service-connect/src/lib/service-connect-rights.plugin.ts","../../../../packages/auth/plugins/service-connect/src/odx-auth-plugins-service-connect.ts"],"sourcesContent":["import { AuthEnvironment } from '@odx/auth';\n\nexport type ServiceConnectEnvironment = { custom: string };\nexport const ServiceConnnectEnvironments: Record<AuthEnvironment, string> = {\n dev: 'https://api.test.connect.draeger.com',\n stage: 'https://api.staging.connect.draeger.com',\n prod: 'https://api.connect.draeger.com',\n};\nexport const ServiceConnectScopes = {\n BASE: 'dcid',\n // RIGHTS: 'dcid-rights', // TODO: enable scope when supported by the CSI team\n // INSTITUTION: 'dcid-instiution', // TODO: enable scope when supported by the CSI team\n};\nexport const ServiceConnectEndpoints = {\n userRights: '/users/me/rights',\n};\n","import { buildUrl, isString } from '@odx/angular/utils';\nimport { AuthEnvironment } from '@odx/auth';\nimport { ServiceConnectEnvironment, ServiceConnnectEnvironments } from '../service-connect.config';\n\nexport function buildServiceConnectUrl(environment: ServiceConnectEnvironment | AuthEnvironment, ...endpoints: string[]): string {\n if (isString(environment)) {\n return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);\n }\n return buildUrl(environment.custom, ...endpoints);\n}\n","export type Right = string | number;\nexport type Role = Right[];\nexport type RolesOrRights = Array<Role | Right>;\n\nexport function hasRolesOrRights(userRights: Right[], rolesOrRights: RolesOrRights): boolean {\n return rolesOrRights.some((rights) => (Array.isArray(rights) ? rights : [rights])?.every((right) => userRights.includes(right)));\n}\n","import { AuthorizedHandler } from '@odx/auth';\nimport { hasRolesOrRights, RolesOrRights } from './has-roles-or-rights';\n\nexport function hasRolesOrRightsHandler(rolesOrRights: RolesOrRights): AuthorizedHandler {\n return (claims) => hasRolesOrRights(claims?.rights ?? [], rolesOrRights);\n}\n","import { inject } from '@angular/core';\nimport { AuthHttpCache, AuthPlugin, AuthPluginFactory, injectAuthConfig } from '@odx/auth';\nimport { defer } from 'rxjs';\nimport { ServiceConnectEnvironment } from '../service-connect.config';\nimport { buildServiceConnectUrl } from './build-service-connect-url';\n\nexport interface ServiceConnectPluginOptions {\n environment?: ServiceConnectEnvironment;\n}\n\nexport interface ServiceConnectPluginFactoryOptions<Dto> {\n endpoint: string[];\n parseResponse: (res: Dto | null) => Partial<OdxAuth.AuthPluginResult>;\n defaultValue?: Partial<OdxAuth.AuthPluginResult>;\n setup?: () => void;\n}\n\nexport function serviceConnectPluginFactory<Dto = unknown>(\n options: ServiceConnectPluginFactoryOptions<Dto>,\n): (pluginOptions?: ServiceConnectPluginOptions) => AuthPluginFactory {\n return (pluginOptions) => () => {\n const { environment } = injectAuthConfig();\n const httpCache = inject(AuthHttpCache);\n options.setup?.();\n const url = buildServiceConnectUrl(pluginOptions?.environment ?? environment, ...options.endpoint);\n\n const plugin: AuthPlugin = (authService) =>\n defer(async () => {\n const request = new Request(url);\n const token = authService.getAccessToken();\n let result = null;\n if (token) {\n request.headers.set('Authorization', `Bearer ${token}`);\n\n result = await httpCache.request<Dto>(request).then((res) => options.parseResponse(res));\n } else if (!authService.isAuthenticated()) {\n await httpCache.delete(request);\n }\n\n return result ?? options.defaultValue ?? {};\n });\n\n return plugin;\n };\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { AuthDirective } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[odxAuthServiceConnectRights]',\n hostDirectives: [\n {\n directive: AuthDirective,\n inputs: ['odxAuthElse:odxAuthServiceConnectRightsElse'],\n },\n ],\n})\nexport class ServiceConnectRightsDirective {\n private readonly authDirective = inject(AuthDirective, { host: true });\n\n @Input('odxAuthServiceConnectRights')\n public set rolesOrRights(value: RolesOrRights | null | undefined) {\n this.authDirective.authorizationHandler = hasRolesOrRightsHandler(value ?? []);\n }\n}\n","import { CanActivateFn } from '@angular/router';\nimport { authGuard } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function serviceConnectRightsGuard(rolesOrRights: RolesOrRights, redirectTo?: string | any[]): CanActivateFn {\n return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo);\n}\n","import { GetServiceConnectRightsResponseDto } from './dtos';\nimport { serviceConnectPluginFactory } from './helpers';\nimport { ServiceConnectEndpoints } from './service-connect.config';\nimport './service-connect.typings';\n\nexport const serviceConnectRightsPlugin = serviceConnectPluginFactory<GetServiceConnectRightsResponseDto>({\n endpoint: [ServiceConnectEndpoints.userRights],\n parseResponse: (res) => ({ rights: res?.rights ?? [] }),\n defaultValue: { rights: [] },\n // setup: () => inject(AuthConfig).scopes?.push(ServiceConnectScopes.RIGHTS); // TODO: enable scope when supported by the CSI team\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-auth-plugins-service-connect.mjs","sources":["../../../../packages/auth/plugins/service-connect/src/lib/service-connect.config.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/build-service-connect-url.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights-handler.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/service-connect-plugin-factory.ts","../../../../packages/auth/plugins/service-connect/src/lib/service-connect-rights.directive.ts","../../../../packages/auth/plugins/service-connect/src/lib/service-connect-rights.guard.ts","../../../../packages/auth/plugins/service-connect/src/lib/service-connect-rights.plugin.ts","../../../../packages/auth/plugins/service-connect/src/odx-auth-plugins-service-connect.ts"],"sourcesContent":["import { AuthEnvironment } from '@odx/auth';\n\nexport type ServiceConnectEnvironment = { custom: string };\nexport const ServiceConnnectEnvironments: Record<AuthEnvironment, string> = {\n dev: 'https://api.test.connect.draeger.com',\n stage: 'https://api.staging.connect.draeger.com',\n prod: 'https://api.connect.draeger.com',\n};\nexport const ServiceConnectScopes = {\n BASE: 'dcid',\n PROFILE: 'dcid.profile',\n RIGHTS: 'dcid.rights',\n INSTITUTION: 'dcid.instiution',\n};\nexport const ServiceConnectEndpoints = {\n userRights: '/users/me/rights',\n};\n","import { buildUrl, isString } from '@odx/angular/utils';\nimport { AuthEnvironment } from '@odx/auth';\nimport { ServiceConnectEnvironment, ServiceConnnectEnvironments } from '../service-connect.config';\n\nexport function buildServiceConnectUrl(environment: ServiceConnectEnvironment | AuthEnvironment, ...endpoints: string[]): string {\n if (isString(environment)) {\n return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);\n }\n return buildUrl(environment.custom, ...endpoints);\n}\n","export type Right = string | number;\nexport type Role = Right[];\nexport type RolesOrRights = Array<Role | Right>;\n\nexport function hasRolesOrRights(userRights: Right[], rolesOrRights: RolesOrRights): boolean {\n return rolesOrRights.some((rights) => (Array.isArray(rights) ? rights : [rights])?.every((right) => userRights.includes(right)));\n}\n","import { AuthorizedHandler } from '@odx/auth';\nimport { hasRolesOrRights, RolesOrRights } from './has-roles-or-rights';\n\nexport function hasRolesOrRightsHandler(rolesOrRights: RolesOrRights): AuthorizedHandler {\n return (claims) => hasRolesOrRights(claims?.rights ?? [], rolesOrRights);\n}\n","import { inject } from '@angular/core';\nimport { AuthHttpCache, AuthPluginFactory, injectAuthConfig } from '@odx/auth';\nimport { defer, map } from 'rxjs';\nimport { ServiceConnectEnvironment } from '../service-connect.config';\nimport { buildServiceConnectUrl } from './build-service-connect-url';\n\nexport interface ServiceConnectPluginOptions {\n environment?: ServiceConnectEnvironment;\n}\n\nexport interface ServiceConnectPluginFactoryOptions<Dto> {\n endpoint: string[];\n parseResponse: (res: Dto | null) => Partial<OdxAuth.AuthPluginResult>;\n defaultValue?: Partial<OdxAuth.AuthPluginResult>;\n setup?: (pluginOptions?: ServiceConnectPluginOptions) => void;\n}\n\nexport type ServiceConnectPluginFactory = (pluginOptions?: ServiceConnectPluginOptions) => AuthPluginFactory;\n\nexport function serviceConnectPluginFactory<Dto = unknown>(options: ServiceConnectPluginFactoryOptions<Dto>): ServiceConnectPluginFactory {\n return (pluginOptions) => () => {\n options.setup?.(pluginOptions);\n const { environment } = injectAuthConfig();\n const httpCache = inject(AuthHttpCache);\n const url = buildServiceConnectUrl(pluginOptions?.environment ?? environment, ...options.endpoint);\n const parseResponse = (dto: Dto | null) => options.parseResponse(dto) ?? options.defaultValue ?? {};\n\n return () => defer(() => httpCache.request<Dto>(url, true)).pipe(map((dto) => parseResponse(dto)));\n };\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { AuthDirective } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[odxAuthServiceConnectRights]',\n hostDirectives: [\n {\n directive: AuthDirective,\n inputs: ['odxAuthElse:odxAuthServiceConnectRightsElse'],\n },\n ],\n})\nexport class ServiceConnectRightsDirective {\n private readonly authDirective = inject(AuthDirective, { host: true });\n\n @Input('odxAuthServiceConnectRights')\n public set rolesOrRights(value: RolesOrRights | null | undefined) {\n this.authDirective.authorizationHandler = hasRolesOrRightsHandler(value ?? []);\n }\n}\n","import { CanActivateFn } from '@angular/router';\nimport { authGuard } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function serviceConnectRightsGuard(rolesOrRights: RolesOrRights, redirectTo?: string | any[]): CanActivateFn {\n return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo);\n}\n","import { GetServiceConnectRightsResponseDto } from './dtos';\nimport { serviceConnectPluginFactory } from './helpers';\nimport { ServiceConnectEndpoints } from './service-connect.config';\nimport './service-connect.typings';\n\nexport const serviceConnectRightsPlugin = serviceConnectPluginFactory<GetServiceConnectRightsResponseDto>({\n endpoint: [ServiceConnectEndpoints.userRights],\n parseResponse: (res) => ({ rights: res?.rights ?? [] }),\n defaultValue: { rights: [] },\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}