@odx/auth 7.0.0 → 8.0.1

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 (65) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +16 -10
  3. package/esm2022/index.mjs +2 -1
  4. package/esm2022/lib/auth.component.mjs +2 -2
  5. package/esm2022/lib/auth.config.mjs +6 -23
  6. package/esm2022/lib/auth.guard.mjs +10 -3
  7. package/esm2022/lib/auth.i18n.mjs +1 -1
  8. package/esm2022/lib/auth.interceptor.mjs +15 -0
  9. package/esm2022/lib/auth.logger.mjs +3 -0
  10. package/esm2022/lib/auth.providers.mjs +53 -36
  11. package/esm2022/lib/auth.service.mjs +29 -17
  12. package/esm2022/lib/auth.typings.mjs +1 -1
  13. package/esm2022/lib/components/auth-actions/auth-actions.component.mjs +2 -2
  14. package/esm2022/lib/components/auth-loading-screen/auth-loading-screen.component.mjs +6 -6
  15. package/esm2022/lib/helpers/create-auth-host-url.mjs +6 -0
  16. package/esm2022/lib/helpers/index.mjs +4 -1
  17. package/esm2022/lib/helpers/set-http-auth-header.mjs +13 -0
  18. package/esm2022/lib/helpers/user-language-loader.mjs +10 -0
  19. package/esm2022/lib/models/auth-environment.mjs +3 -2
  20. package/esm2022/lib/models/auth-http-cache.mjs +19 -23
  21. package/esm2022/lib/models/auth-plugin-manager.mjs +14 -9
  22. package/esm2022/lib/plugins/core-debug.plugin.mjs +20 -0
  23. package/esm2022/lib/plugins/index.mjs +2 -1
  24. package/esm2022/lib/plugins/user-profile-link.plugin.mjs +3 -3
  25. package/esm2022/lib/unauth.guard.mjs +10 -3
  26. package/esm2022/plugins/service-connect/index.mjs +2 -2
  27. package/esm2022/plugins/service-connect/lib/dtos/get-service-connect-user-response.dto.mjs +2 -0
  28. package/esm2022/plugins/service-connect/lib/dtos/index.mjs +2 -1
  29. package/esm2022/plugins/service-connect/lib/service-connect-rights.guard.mjs +3 -3
  30. package/esm2022/plugins/service-connect/lib/service-connect-rights.plugin.mjs +1 -2
  31. package/esm2022/plugins/service-connect/lib/service-connect-user-language.plugin.mjs +8 -0
  32. package/esm2022/plugins/service-connect/lib/service-connect.config.mjs +6 -4
  33. package/fesm2022/odx-auth-plugins-service-connect.mjs +15 -9
  34. package/fesm2022/odx-auth-plugins-service-connect.mjs.map +1 -1
  35. package/fesm2022/odx-auth.mjs +311 -243
  36. package/fesm2022/odx-auth.mjs.map +1 -1
  37. package/index.d.ts +1 -0
  38. package/lib/auth.config.d.ts +11 -10
  39. package/lib/auth.guard.d.ts +1 -1
  40. package/lib/auth.i18n.d.ts +2 -2
  41. package/lib/auth.interceptor.d.ts +2 -0
  42. package/lib/auth.logger.d.ts +3 -0
  43. package/lib/auth.providers.d.ts +7 -4
  44. package/lib/auth.service.d.ts +6 -2
  45. package/lib/auth.typings.d.ts +1 -1
  46. package/lib/helpers/create-auth-host-url.d.ts +2 -0
  47. package/lib/helpers/index.d.ts +3 -0
  48. package/lib/helpers/set-http-auth-header.d.ts +2 -0
  49. package/lib/helpers/user-language-loader.d.ts +4 -0
  50. package/lib/models/auth-environment.d.ts +6 -1
  51. package/lib/models/auth-http-cache.d.ts +3 -1
  52. package/lib/models/auth-plugin-manager.d.ts +2 -0
  53. package/lib/plugins/core-debug.plugin.d.ts +2 -0
  54. package/lib/plugins/index.d.ts +1 -0
  55. package/lib/unauth.guard.d.ts +1 -1
  56. package/package.json +2 -2
  57. package/plugins/service-connect/index.d.ts +1 -1
  58. package/plugins/service-connect/lib/dtos/get-service-connect-user-response.dto.d.ts +3 -0
  59. package/plugins/service-connect/lib/dtos/index.d.ts +1 -0
  60. package/plugins/service-connect/lib/service-connect-rights.guard.d.ts +1 -1
  61. package/plugins/service-connect/lib/service-connect-rights.plugin.d.ts +8 -1
  62. package/plugins/service-connect/lib/service-connect-user-language.plugin.d.ts +1 -0
  63. package/plugins/service-connect/lib/service-connect.config.d.ts +1 -0
  64. package/esm2022/plugins/service-connect/lib/service-connect.typings.mjs +0 -2
  65. package/plugins/service-connect/lib/service-connect.typings.d.ts +0 -9
@@ -1,9 +1,9 @@
1
1
  import { of } from 'rxjs';
2
- import { DEFAULT_USER_PROFILE_URLS, injectAuthConfig } from '../auth.config';
2
+ import { ODX_AUTH_USER_PROFILE_HOSTS, injectAuthConfig } from '../auth.config';
3
3
  export const userProfileUrlPlugin = () => {
4
4
  const { environment, userProfileUrl } = injectAuthConfig();
5
5
  return () => {
6
- return of({ userProfileUrl: userProfileUrl ?? DEFAULT_USER_PROFILE_URLS[environment] });
6
+ return of({ userProfileUrl: userProfileUrl ?? ODX_AUTH_USER_PROFILE_HOSTS[environment] });
7
7
  };
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLWxpbmsucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvcGx1Z2lucy91c2VyLXByb2ZpbGUtbGluay5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVk3RSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBc0IsR0FBRyxFQUFFO0lBQzFELE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUUzRCxPQUFPLEdBQUcsRUFBRTtRQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLGNBQWMsSUFBSSx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERFRkFVTFRfVVNFUl9QUk9GSUxFX1VSTFMsIGluamVjdEF1dGhDb25maWcgfSBmcm9tICcuLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgeyBBdXRoUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uL21vZGVscyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgbmFtZXNwYWNlIE9keEF1dGgge1xuICAgIGludGVyZmFjZSBBdXRoUGx1Z2luUmVzdWx0IHtcbiAgICAgIHVzZXJQcm9maWxlVXJsOiBzdHJpbmc7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VyUHJvZmlsZVVybFBsdWdpbjogQXV0aFBsdWdpbkZhY3RvcnkgPSAoKSA9PiB7XG4gIGNvbnN0IHsgZW52aXJvbm1lbnQsIHVzZXJQcm9maWxlVXJsIH0gPSBpbmplY3RBdXRoQ29uZmlnKCk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICByZXR1cm4gb2YoeyB1c2VyUHJvZmlsZVVybDogdXNlclByb2ZpbGVVcmwgPz8gREVGQVVMVF9VU0VSX1BST0ZJTEVfVVJMU1tlbnZpcm9ubWVudF0gfSk7XG4gIH07XG59O1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLWxpbmsucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvcGx1Z2lucy91c2VyLXByb2ZpbGUtbGluay5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVkvRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBc0IsR0FBRyxFQUFFO0lBQzFELE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUMzRCxPQUFPLEdBQUcsRUFBRTtRQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLGNBQWMsSUFBSSwyQkFBMkIsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9EWF9BVVRIX1VTRVJfUFJPRklMRV9IT1NUUywgaW5qZWN0QXV0aENvbmZpZyB9IGZyb20gJy4uL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuICBuYW1lc3BhY2UgT2R4QXV0aCB7XG4gICAgaW50ZXJmYWNlIEF1dGhQbHVnaW5SZXN1bHQge1xuICAgICAgdXNlclByb2ZpbGVVcmw6IHN0cmluZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHVzZXJQcm9maWxlVXJsUGx1Z2luOiBBdXRoUGx1Z2luRmFjdG9yeSA9ICgpID0+IHtcbiAgY29uc3QgeyBlbnZpcm9ubWVudCwgdXNlclByb2ZpbGVVcmwgfSA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICByZXR1cm4gb2YoeyB1c2VyUHJvZmlsZVVybDogdXNlclByb2ZpbGVVcmwgPz8gT0RYX0FVVEhfVVNFUl9QUk9GSUxFX0hPU1RTW2Vudmlyb25tZW50XSB9KTtcbiAgfTtcbn07XG4iXX0=
@@ -1,18 +1,25 @@
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 { map, 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 unauthGuard(authorizedHandler, redirectTo) {
8
+ export function unauthGuard(authorizedHandler, redirectTo, isExternal = false) {
8
9
  return (_) => {
9
10
  const authService = inject(AuthService);
10
11
  const router = inject(Router, { optional: true });
12
+ const windowRef = inject(WindowRef);
11
13
  return authService.isAuthenticated$.pipe(map(() => !authService.isAuthorized(authorizedHandler)), tap((isUnauthorized) => {
12
14
  if (isUnauthorized || !router)
13
15
  return;
14
16
  if (isString(redirectTo)) {
15
- router.navigateByUrl(redirectTo);
17
+ if (isExternal) {
18
+ windowRef.location.assign(redirectTo);
19
+ }
20
+ else {
21
+ router.navigateByUrl(redirectTo);
22
+ }
16
23
  }
17
24
  else if (Array.isArray(redirectTo)) {
18
25
  router.navigate(redirectTo);
@@ -20,4 +27,4 @@ export function unauthGuard(authorizedHandler, redirectTo) {
20
27
  }), take(1));
21
28
  };
22
29
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5hdXRoLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvdW5hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFpQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3Qyw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxpQkFBcUMsRUFBRSxVQUEyQjtJQUM1RixPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDWCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWxELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQ3ZELEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ3JCLElBQUksY0FBYyxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQ3RDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN4QixNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDcEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxFQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVGbiwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IG1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhvcml6ZWRIYW5kbGVyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHVuYXV0aEd1YXJkKGF1dGhvcml6ZWRIYW5kbGVyPzogQXV0aG9yaXplZEhhbmRsZXIsIHJlZGlyZWN0VG8/OiBhbnlbXSB8IHN0cmluZyk6IENhbkFjdGl2YXRlRm4ge1xuICByZXR1cm4gKF8pID0+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIHJldHVybiBhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gIWF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZChhdXRob3JpemVkSGFuZGxlcikpLFxuICAgICAgdGFwKChpc1VuYXV0aG9yaXplZCkgPT4ge1xuICAgICAgICBpZiAoaXNVbmF1dGhvcml6ZWQgfHwgIXJvdXRlcikgcmV0dXJuO1xuICAgICAgICBpZiAoaXNTdHJpbmcocmVkaXJlY3RUbykpIHtcbiAgICAgICAgICByb3V0ZXIubmF2aWdhdGVCeVVybChyZWRpcmVjdFRvKTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlZGlyZWN0VG8pKSB7XG4gICAgICAgICAgcm91dGVyLm5hdmlnYXRlKHJlZGlyZWN0VG8pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5hdXRoLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvdW5hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFpQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLDhEQUE4RDtBQUM5RCxNQUFNLFVBQVUsV0FBVyxDQUFDLGlCQUFxQyxFQUFFLFVBQTJCLEVBQUUsVUFBVSxHQUFHLEtBQUs7SUFDaEgsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ1gsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEMsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFDdkQsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDckIsSUFBSSxjQUFjLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFDdEMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksVUFBVSxFQUFFO29CQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN2QztxQkFBTTtvQkFDTCxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNsQzthQUNGO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDcEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxFQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVGbiwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBtYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBdXRob3JpemVkSGFuZGxlciB9IGZyb20gJy4vbW9kZWxzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1bmF1dGhHdWFyZChhdXRob3JpemVkSGFuZGxlcj86IEF1dGhvcml6ZWRIYW5kbGVyLCByZWRpcmVjdFRvPzogYW55W10gfCBzdHJpbmcsIGlzRXh0ZXJuYWwgPSBmYWxzZSk6IENhbkFjdGl2YXRlRm4ge1xuICByZXR1cm4gKF8pID0+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBjb25zdCB3aW5kb3dSZWYgPSBpbmplY3QoV2luZG93UmVmKTtcblxuICAgIHJldHVybiBhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gIWF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZChhdXRob3JpemVkSGFuZGxlcikpLFxuICAgICAgdGFwKChpc1VuYXV0aG9yaXplZCkgPT4ge1xuICAgICAgICBpZiAoaXNVbmF1dGhvcml6ZWQgfHwgIXJvdXRlcikgcmV0dXJuO1xuICAgICAgICBpZiAoaXNTdHJpbmcocmVkaXJlY3RUbykpIHtcbiAgICAgICAgICBpZiAoaXNFeHRlcm5hbCkge1xuICAgICAgICAgICAgd2luZG93UmVmLmxvY2F0aW9uLmFzc2lnbihyZWRpcmVjdFRvKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlQnlVcmwocmVkaXJlY3RUbyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVkaXJlY3RUbykpIHtcbiAgICAgICAgICByb3V0ZXIubmF2aWdhdGUocmVkaXJlY3RUbyk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZSgxKSxcbiAgICApO1xuICB9O1xufVxuIl19
@@ -3,6 +3,6 @@ export * from './lib/helpers';
3
3
  export * from './lib/service-connect-rights.directive';
4
4
  export * from './lib/service-connect-rights.guard';
5
5
  export * from './lib/service-connect-rights.plugin';
6
+ export * from './lib/service-connect-user-language.plugin';
6
7
  export * from './lib/service-connect.config';
7
- export * from './lib/service-connect.typings';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2R0b3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlLWNvbm5lY3QtcmlnaHRzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlLWNvbm5lY3QtcmlnaHRzLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UtY29ubmVjdC1yaWdodHMucGx1Z2luJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UtY29ubmVjdC5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS1jb25uZWN0LnR5cGluZ3MnO1xuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2R0b3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlLWNvbm5lY3QtcmlnaHRzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlLWNvbm5lY3QtcmlnaHRzLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UtY29ubmVjdC1yaWdodHMucGx1Z2luJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UtY29ubmVjdC11c2VyLWxhbmd1YWdlLnBsdWdpbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlLWNvbm5lY3QuY29uZmlnJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXNlcnZpY2UtY29ubmVjdC11c2VyLXJlc3BvbnNlLmR0by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL2R0b3MvZ2V0LXNlcnZpY2UtY29ubmVjdC11c2VyLXJlc3BvbnNlLmR0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBHZXRTZXJ2aWNlQ29ubmVjdFVzZXJSZXNwb25zZUR0byB7XG4gIGxhbmd1YWdlX2NvZGU6IHN0cmluZztcbn1cbiJdfQ==
@@ -1,2 +1,3 @@
1
1
  export * from './get-service-connect-rights-response.dto';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9kdG9zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dldC1zZXJ2aWNlLWNvbm5lY3QtcmlnaHRzLXJlc3BvbnNlLmR0byc7XG4iXX0=
2
+ export * from './get-service-connect-user-response.dto';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9kdG9zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ2V0LXNlcnZpY2UtY29ubmVjdC1yaWdodHMtcmVzcG9uc2UuZHRvJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LXNlcnZpY2UtY29ubmVjdC11c2VyLXJlc3BvbnNlLmR0byc7XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { authGuard } from '@odx/auth';
2
2
  import { hasRolesOrRightsHandler } from './helpers';
3
3
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
- export function serviceConnectRightsGuard(rolesOrRights, redirectTo) {
5
- return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo);
4
+ export function serviceConnectRightsGuard(rolesOrRights, redirectTo, isExternal = false) {
5
+ return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo, isExternal);
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXJpZ2h0cy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL3NlcnZpY2UtY29ubmVjdC1yaWdodHMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQWlCLE1BQU0sV0FBVyxDQUFDO0FBRW5FLDhEQUE4RDtBQUM5RCxNQUFNLFVBQVUseUJBQXlCLENBQUMsYUFBNEIsRUFBRSxVQUEyQjtJQUNqRyxPQUFPLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FuQWN0aXZhdGVGbiB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBhdXRoR3VhcmQgfSBmcm9tICdAb2R4L2F1dGgnO1xuaW1wb3J0IHsgaGFzUm9sZXNPclJpZ2h0c0hhbmRsZXIsIFJvbGVzT3JSaWdodHMgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VDb25uZWN0UmlnaHRzR3VhcmQocm9sZXNPclJpZ2h0czogUm9sZXNPclJpZ2h0cywgcmVkaXJlY3RUbz86IHN0cmluZyB8IGFueVtdKTogQ2FuQWN0aXZhdGVGbiB7XG4gIHJldHVybiBhdXRoR3VhcmQoaGFzUm9sZXNPclJpZ2h0c0hhbmRsZXIocm9sZXNPclJpZ2h0cyksIHJlZGlyZWN0VG8pO1xufVxuIl19
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXJpZ2h0cy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL3NlcnZpY2UtY29ubmVjdC1yaWdodHMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQWlCLE1BQU0sV0FBVyxDQUFDO0FBRW5FLDhEQUE4RDtBQUM5RCxNQUFNLFVBQVUseUJBQXlCLENBQUMsYUFBNEIsRUFBRSxVQUEyQixFQUFFLFVBQVUsR0FBRyxLQUFLO0lBQ3JILE9BQU8sU0FBUyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FuQWN0aXZhdGVGbiB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBhdXRoR3VhcmQgfSBmcm9tICdAb2R4L2F1dGgnO1xuaW1wb3J0IHsgaGFzUm9sZXNPclJpZ2h0c0hhbmRsZXIsIFJvbGVzT3JSaWdodHMgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VDb25uZWN0UmlnaHRzR3VhcmQocm9sZXNPclJpZ2h0czogUm9sZXNPclJpZ2h0cywgcmVkaXJlY3RUbz86IHN0cmluZyB8IGFueVtdLCBpc0V4dGVybmFsID0gZmFsc2UpOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuIGF1dGhHdWFyZChoYXNSb2xlc09yUmlnaHRzSGFuZGxlcihyb2xlc09yUmlnaHRzKSwgcmVkaXJlY3RUbywgaXNFeHRlcm5hbCk7XG59XG4iXX0=
@@ -1,9 +1,8 @@
1
1
  import { serviceConnectPluginFactory } from './helpers';
2
2
  import { ServiceConnectEndpoints } from './service-connect.config';
3
- import './service-connect.typings';
4
3
  export const serviceConnectRightsPlugin = serviceConnectPluginFactory({
5
4
  endpoint: [ServiceConnectEndpoints.userRights],
6
5
  parseResponse: (res) => ({ rights: res?.rights ?? [] }),
7
6
  defaultValue: { rights: [] },
8
7
  });
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXJpZ2h0cy5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9zZXJ2aWNlLWNvbm5lY3QtcmlnaHRzLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTywyQkFBMkIsQ0FBQztBQUVuQyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRywyQkFBMkIsQ0FBcUM7SUFDeEcsUUFBUSxFQUFFLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDO0lBQzlDLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7Q0FDN0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0U2VydmljZUNvbm5lY3RSaWdodHNSZXNwb25zZUR0byB9IGZyb20gJy4vZHRvcyc7XG5pbXBvcnQgeyBzZXJ2aWNlQ29ubmVjdFBsdWdpbkZhY3RvcnkgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2VydmljZUNvbm5lY3RFbmRwb2ludHMgfSBmcm9tICcuL3NlcnZpY2UtY29ubmVjdC5jb25maWcnO1xuaW1wb3J0ICcuL3NlcnZpY2UtY29ubmVjdC50eXBpbmdzJztcblxuZXhwb3J0IGNvbnN0IHNlcnZpY2VDb25uZWN0UmlnaHRzUGx1Z2luID0gc2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5PEdldFNlcnZpY2VDb25uZWN0UmlnaHRzUmVzcG9uc2VEdG8+KHtcbiAgZW5kcG9pbnQ6IFtTZXJ2aWNlQ29ubmVjdEVuZHBvaW50cy51c2VyUmlnaHRzXSxcbiAgcGFyc2VSZXNwb25zZTogKHJlcykgPT4gKHsgcmlnaHRzOiByZXM/LnJpZ2h0cyA/PyBbXSB9KSxcbiAgZGVmYXVsdFZhbHVlOiB7IHJpZ2h0czogW10gfSxcbn0pO1xuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXJpZ2h0cy5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9zZXJ2aWNlLWNvbm5lY3QtcmlnaHRzLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVMsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFXbkUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsMkJBQTJCLENBQXFDO0lBQ3hHLFFBQVEsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQztJQUM5QyxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO0NBQzdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdldFNlcnZpY2VDb25uZWN0UmlnaHRzUmVzcG9uc2VEdG8gfSBmcm9tICcuL2R0b3MnO1xuaW1wb3J0IHsgUmlnaHQsIHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTZXJ2aWNlQ29ubmVjdEVuZHBvaW50cyB9IGZyb20gJy4vc2VydmljZS1jb25uZWN0LmNvbmZpZyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgbmFtZXNwYWNlIE9keEF1dGgge1xuICAgIGludGVyZmFjZSBBdXRoUGx1Z2luUmVzdWx0IHtcbiAgICAgIHJpZ2h0czogUmlnaHRbXTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNlcnZpY2VDb25uZWN0UmlnaHRzUGx1Z2luID0gc2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5PEdldFNlcnZpY2VDb25uZWN0UmlnaHRzUmVzcG9uc2VEdG8+KHtcbiAgZW5kcG9pbnQ6IFtTZXJ2aWNlQ29ubmVjdEVuZHBvaW50cy51c2VyUmlnaHRzXSxcbiAgcGFyc2VSZXNwb25zZTogKHJlcykgPT4gKHsgcmlnaHRzOiByZXM/LnJpZ2h0cyA/PyBbXSB9KSxcbiAgZGVmYXVsdFZhbHVlOiB7IHJpZ2h0czogW10gfSxcbn0pO1xuIl19
@@ -0,0 +1,8 @@
1
+ import { getLanguageCode } from '@odx/angular/utils';
2
+ import { serviceConnectPluginFactory } from './helpers';
3
+ import { ServiceConnectEndpoints } from './service-connect.config';
4
+ export const serviceConnectUserLanguagePlugin = serviceConnectPluginFactory({
5
+ endpoint: [ServiceConnectEndpoints.user],
6
+ parseResponse: (res) => ({ preferredLanguage: res?.language_code ? getLanguageCode(res.language_code) : undefined }),
7
+ });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXVzZXItbGFuZ3VhZ2UucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvc2VydmljZS1jb25uZWN0LXVzZXItbGFuZ3VhZ2UucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsMkJBQTJCLENBQW1DO0lBQzVHLFFBQVEsRUFBRSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQztJQUN4QyxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztDQUNySCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMYW5ndWFnZUNvZGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgR2V0U2VydmljZUNvbm5lY3RVc2VyUmVzcG9uc2VEdG8gfSBmcm9tICcuL2R0b3MnO1xuaW1wb3J0IHsgc2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNlcnZpY2VDb25uZWN0RW5kcG9pbnRzIH0gZnJvbSAnLi9zZXJ2aWNlLWNvbm5lY3QuY29uZmlnJztcblxuZXhwb3J0IGNvbnN0IHNlcnZpY2VDb25uZWN0VXNlckxhbmd1YWdlUGx1Z2luID0gc2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5PEdldFNlcnZpY2VDb25uZWN0VXNlclJlc3BvbnNlRHRvPih7XG4gIGVuZHBvaW50OiBbU2VydmljZUNvbm5lY3RFbmRwb2ludHMudXNlcl0sXG4gIHBhcnNlUmVzcG9uc2U6IChyZXMpID0+ICh7IHByZWZlcnJlZExhbmd1YWdlOiByZXM/Lmxhbmd1YWdlX2NvZGUgPyBnZXRMYW5ndWFnZUNvZGUocmVzLmxhbmd1YWdlX2NvZGUpIDogdW5kZWZpbmVkIH0pLFxufSk7XG4iXX0=
@@ -1,7 +1,8 @@
1
+ import { AuthEnvironment } from '@odx/auth';
1
2
  export const ServiceConnnectEnvironments = {
2
- dev: 'https://api.test.connect.draeger.com',
3
- stage: 'https://api.staging.connect.draeger.com',
4
- prod: 'https://api.connect.draeger.com',
3
+ [AuthEnvironment.DEV]: 'https://api.test.connect.draeger.com',
4
+ [AuthEnvironment.STAGE]: 'https://api.staging.connect.draeger.com',
5
+ [AuthEnvironment.PROD]: 'https://api.connect.draeger.com',
5
6
  };
6
7
  export const ServiceConnectScopes = {
7
8
  BASE: 'dcid',
@@ -10,6 +11,7 @@ export const ServiceConnectScopes = {
10
11
  INSTITUTION: 'dcid.institution',
11
12
  };
12
13
  export const ServiceConnectEndpoints = {
14
+ user: '/users/me',
13
15
  userRights: '/users/me/rights',
14
16
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL3NlcnZpY2UtY29ubmVjdC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQW9DO0lBQzFFLEdBQUcsRUFBRSxzQ0FBc0M7SUFDM0MsS0FBSyxFQUFFLHlDQUF5QztJQUNoRCxJQUFJLEVBQUUsaUNBQWlDO0NBQ3hDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRztJQUNsQyxJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxjQUFjO0lBQ3ZCLE1BQU0sRUFBRSxhQUFhO0lBQ3JCLFdBQVcsRUFBRSxrQkFBa0I7Q0FDaEMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLFVBQVUsRUFBRSxrQkFBa0I7Q0FDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhFbnZpcm9ubWVudCB9IGZyb20gJ0BvZHgvYXV0aCc7XG5cbmV4cG9ydCB0eXBlIFNlcnZpY2VDb25uZWN0RW52aXJvbm1lbnQgPSB7IGN1c3RvbTogc3RyaW5nIH07XG5leHBvcnQgY29uc3QgU2VydmljZUNvbm5uZWN0RW52aXJvbm1lbnRzOiBSZWNvcmQ8QXV0aEVudmlyb25tZW50LCBzdHJpbmc+ID0ge1xuICBkZXY6ICdodHRwczovL2FwaS50ZXN0LmNvbm5lY3QuZHJhZWdlci5jb20nLFxuICBzdGFnZTogJ2h0dHBzOi8vYXBpLnN0YWdpbmcuY29ubmVjdC5kcmFlZ2VyLmNvbScsXG4gIHByb2Q6ICdodHRwczovL2FwaS5jb25uZWN0LmRyYWVnZXIuY29tJyxcbn07XG5leHBvcnQgY29uc3QgU2VydmljZUNvbm5lY3RTY29wZXMgPSB7XG4gIEJBU0U6ICdkY2lkJyxcbiAgUFJPRklMRTogJ2RjaWQucHJvZmlsZScsXG4gIFJJR0hUUzogJ2RjaWQucmlnaHRzJyxcbiAgSU5TVElUVVRJT046ICdkY2lkLmluc3RpdHV0aW9uJyxcbn07XG5leHBvcnQgY29uc3QgU2VydmljZUNvbm5lY3RFbmRwb2ludHMgPSB7XG4gIHVzZXJSaWdodHM6ICcvdXNlcnMvbWUvcmlnaHRzJyxcbn07XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL3NlcnZpY2UtY29ubmVjdC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUc1QyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBb0M7SUFDMUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsc0NBQXNDO0lBQzdELENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLHlDQUF5QztJQUNsRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxpQ0FBaUM7Q0FDMUQsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLGNBQWM7SUFDdkIsTUFBTSxFQUFFLGFBQWE7SUFDckIsV0FBVyxFQUFFLGtCQUFrQjtDQUNoQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUc7SUFDckMsSUFBSSxFQUFFLFdBQVc7SUFDakIsVUFBVSxFQUFFLGtCQUFrQjtDQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aEVudmlyb25tZW50IH0gZnJvbSAnQG9keC9hdXRoJztcblxuZXhwb3J0IHR5cGUgU2VydmljZUNvbm5lY3RFbnZpcm9ubWVudCA9IHsgY3VzdG9tOiBzdHJpbmcgfTtcbmV4cG9ydCBjb25zdCBTZXJ2aWNlQ29ubm5lY3RFbnZpcm9ubWVudHM6IFJlY29yZDxBdXRoRW52aXJvbm1lbnQsIHN0cmluZz4gPSB7XG4gIFtBdXRoRW52aXJvbm1lbnQuREVWXTogJ2h0dHBzOi8vYXBpLnRlc3QuY29ubmVjdC5kcmFlZ2VyLmNvbScsXG4gIFtBdXRoRW52aXJvbm1lbnQuU1RBR0VdOiAnaHR0cHM6Ly9hcGkuc3RhZ2luZy5jb25uZWN0LmRyYWVnZXIuY29tJyxcbiAgW0F1dGhFbnZpcm9ubWVudC5QUk9EXTogJ2h0dHBzOi8vYXBpLmNvbm5lY3QuZHJhZWdlci5jb20nLFxufTtcbmV4cG9ydCBjb25zdCBTZXJ2aWNlQ29ubmVjdFNjb3BlcyA9IHtcbiAgQkFTRTogJ2RjaWQnLFxuICBQUk9GSUxFOiAnZGNpZC5wcm9maWxlJyxcbiAgUklHSFRTOiAnZGNpZC5yaWdodHMnLFxuICBJTlNUSVRVVElPTjogJ2RjaWQuaW5zdGl0dXRpb24nLFxufTtcbmV4cG9ydCBjb25zdCBTZXJ2aWNlQ29ubmVjdEVuZHBvaW50cyA9IHtcbiAgdXNlcjogJy91c2Vycy9tZScsXG4gIHVzZXJSaWdodHM6ICcvdXNlcnMvbWUvcmlnaHRzJyxcbn07XG4iXX0=
@@ -1,14 +1,14 @@
1
- import { isString, buildUrl } from '@odx/angular/utils';
1
+ import { isString, buildUrl, getLanguageCode } from '@odx/angular/utils';
2
+ import * as i1 from '@odx/auth';
3
+ import { AuthEnvironment, injectAuthConfig, AuthHttpCache, AuthDirective, authGuard } from '@odx/auth';
2
4
  import * as i0 from '@angular/core';
3
5
  import { inject, Directive, Input } from '@angular/core';
4
- import * as i1 from '@odx/auth';
5
- import { injectAuthConfig, AuthHttpCache, AuthDirective, authGuard } from '@odx/auth';
6
6
  import { defer, map } from 'rxjs';
7
7
 
8
8
  const ServiceConnnectEnvironments = {
9
- dev: 'https://api.test.connect.draeger.com',
10
- stage: 'https://api.staging.connect.draeger.com',
11
- prod: 'https://api.connect.draeger.com',
9
+ [AuthEnvironment.DEV]: 'https://api.test.connect.draeger.com',
10
+ [AuthEnvironment.STAGE]: 'https://api.staging.connect.draeger.com',
11
+ [AuthEnvironment.PROD]: 'https://api.connect.draeger.com',
12
12
  };
13
13
  const ServiceConnectScopes = {
14
14
  BASE: 'dcid',
@@ -17,6 +17,7 @@ const ServiceConnectScopes = {
17
17
  INSTITUTION: 'dcid.institution',
18
18
  };
19
19
  const ServiceConnectEndpoints = {
20
+ user: '/users/me',
20
21
  userRights: '/users/me/rights',
21
22
  };
22
23
 
@@ -74,8 +75,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
74
75
  }] } });
75
76
 
76
77
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
- function serviceConnectRightsGuard(rolesOrRights, redirectTo) {
78
- return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo);
78
+ function serviceConnectRightsGuard(rolesOrRights, redirectTo, isExternal = false) {
79
+ return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo, isExternal);
79
80
  }
80
81
 
81
82
  const serviceConnectRightsPlugin = serviceConnectPluginFactory({
@@ -84,9 +85,14 @@ const serviceConnectRightsPlugin = serviceConnectPluginFactory({
84
85
  defaultValue: { rights: [] },
85
86
  });
86
87
 
88
+ const serviceConnectUserLanguagePlugin = serviceConnectPluginFactory({
89
+ endpoint: [ServiceConnectEndpoints.user],
90
+ parseResponse: (res) => ({ preferredLanguage: res?.language_code ? getLanguageCode(res.language_code) : undefined }),
91
+ });
92
+
87
93
  /**
88
94
  * Generated bundle index. Do not edit.
89
95
  */
90
96
 
91
- export { ServiceConnectEndpoints, ServiceConnectRightsDirective, ServiceConnectScopes, ServiceConnnectEnvironments, buildServiceConnectUrl, hasRolesOrRights, hasRolesOrRightsHandler, serviceConnectPluginFactory, serviceConnectRightsGuard, serviceConnectRightsPlugin };
97
+ export { ServiceConnectEndpoints, ServiceConnectRightsDirective, ServiceConnectScopes, ServiceConnnectEnvironments, buildServiceConnectUrl, hasRolesOrRights, hasRolesOrRightsHandler, serviceConnectPluginFactory, serviceConnectRightsGuard, serviceConnectRightsPlugin, serviceConnectUserLanguagePlugin };
92
98
  //# sourceMappingURL=odx-auth-plugins-service-connect.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"odx-auth-plugins-service-connect.mjs","sources":["../../../../libs/auth/plugins/service-connect/src/lib/service-connect.config.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/build-service-connect-url.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights-handler.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/service-connect-plugin-factory.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.directive.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.guard.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.plugin.ts","../../../../libs/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.institution',\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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"}
1
+ {"version":3,"file":"odx-auth-plugins-service-connect.mjs","sources":["../../../../libs/auth/plugins/service-connect/src/lib/service-connect.config.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/build-service-connect-url.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights-handler.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/service-connect-plugin-factory.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.directive.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.guard.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.plugin.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-user-language.plugin.ts","../../../../libs/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 [AuthEnvironment.DEV]: 'https://api.test.connect.draeger.com',\n [AuthEnvironment.STAGE]: 'https://api.staging.connect.draeger.com',\n [AuthEnvironment.PROD]: 'https://api.connect.draeger.com',\n};\nexport const ServiceConnectScopes = {\n BASE: 'dcid',\n PROFILE: 'dcid.profile',\n RIGHTS: 'dcid.rights',\n INSTITUTION: 'dcid.institution',\n};\nexport const ServiceConnectEndpoints = {\n user: '/users/me',\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[], isExternal = false): CanActivateFn {\n return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo, isExternal);\n}\n","import { GetServiceConnectRightsResponseDto } from './dtos';\nimport { Right, serviceConnectPluginFactory } from './helpers';\nimport { ServiceConnectEndpoints } from './service-connect.config';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace OdxAuth {\n interface AuthPluginResult {\n rights: Right[];\n }\n }\n}\n\nexport const serviceConnectRightsPlugin = serviceConnectPluginFactory<GetServiceConnectRightsResponseDto>({\n endpoint: [ServiceConnectEndpoints.userRights],\n parseResponse: (res) => ({ rights: res?.rights ?? [] }),\n defaultValue: { rights: [] },\n});\n","import { getLanguageCode } from '@odx/angular/utils';\nimport { GetServiceConnectUserResponseDto } from './dtos';\nimport { serviceConnectPluginFactory } from './helpers';\nimport { ServiceConnectEndpoints } from './service-connect.config';\n\nexport const serviceConnectUserLanguagePlugin = serviceConnectPluginFactory<GetServiceConnectUserResponseDto>({\n endpoint: [ServiceConnectEndpoints.user],\n parseResponse: (res) => ({ preferredLanguage: res?.language_code ? getLanguageCode(res.language_code) : undefined }),\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}