@odx/auth 17.2.1 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/fesm2022/odx-auth-plugins-service-connect.mjs +3 -3
  3. package/fesm2022/odx-auth-plugins-service-connect.mjs.map +1 -1
  4. package/fesm2022/odx-auth.mjs +42 -42
  5. package/fesm2022/odx-auth.mjs.map +1 -1
  6. package/index.d.ts +744 -15
  7. package/package.json +4 -8
  8. package/plugins/service-connect/index.d.ts +184 -8
  9. package/esm2022/index.mjs +0 -16
  10. package/esm2022/lib/auth.component.mjs +0 -50
  11. package/esm2022/lib/auth.config.mjs +0 -71
  12. package/esm2022/lib/auth.directive.mjs +0 -51
  13. package/esm2022/lib/auth.guard.mjs +0 -44
  14. package/esm2022/lib/auth.i18n.mjs +0 -13
  15. package/esm2022/lib/auth.interceptor.mjs +0 -23
  16. package/esm2022/lib/auth.logger.mjs +0 -3
  17. package/esm2022/lib/auth.module.mjs +0 -19
  18. package/esm2022/lib/auth.providers.mjs +0 -136
  19. package/esm2022/lib/auth.service.mjs +0 -317
  20. package/esm2022/lib/auth.typings.mjs +0 -2
  21. package/esm2022/lib/components/auth-actions/auth-actions.component.mjs +0 -40
  22. package/esm2022/lib/components/auth-loading-screen/auth-loading-screen.component.mjs +0 -53
  23. package/esm2022/lib/components/index.mjs +0 -3
  24. package/esm2022/lib/directives/auth-action.directive.mjs +0 -30
  25. package/esm2022/lib/directives/index.mjs +0 -4
  26. package/esm2022/lib/directives/sign-in.directive.mjs +0 -52
  27. package/esm2022/lib/directives/sign-out.directive.mjs +0 -50
  28. package/esm2022/lib/helpers/create-auth-host-url.mjs +0 -18
  29. package/esm2022/lib/helpers/create-inititals.mjs +0 -32
  30. package/esm2022/lib/helpers/handle-auth-error.mjs +0 -31
  31. package/esm2022/lib/helpers/handle-oauth-event.mjs +0 -13
  32. package/esm2022/lib/helpers/index.mjs +0 -9
  33. package/esm2022/lib/helpers/resolve-email.mjs +0 -34
  34. package/esm2022/lib/helpers/resolve-username.mjs +0 -38
  35. package/esm2022/lib/helpers/set-http-auth-header.mjs +0 -22
  36. package/esm2022/lib/helpers/user-language-loader.mjs +0 -17
  37. package/esm2022/lib/models/auth-environment.mjs +0 -3
  38. package/esm2022/lib/models/auth-plugin-manager.mjs +0 -49
  39. package/esm2022/lib/models/authorized-handler.mjs +0 -2
  40. package/esm2022/lib/models/index.mjs +0 -5
  41. package/esm2022/lib/models/offline-auth-error-handler.mjs +0 -7
  42. package/esm2022/lib/plugins/core-debug.plugin.mjs +0 -29
  43. package/esm2022/lib/plugins/core-identity.plugin.mjs +0 -20
  44. package/esm2022/lib/plugins/index.mjs +0 -4
  45. package/esm2022/lib/plugins/user-profile-link.plugin.mjs +0 -18
  46. package/esm2022/lib/unauth.guard.mjs +0 -38
  47. package/esm2022/odx-auth.mjs +0 -5
  48. package/esm2022/plugins/service-connect/index.mjs +0 -9
  49. package/esm2022/plugins/service-connect/lib/dtos/get-service-connect-rights-response.dto.mjs +0 -2
  50. package/esm2022/plugins/service-connect/lib/dtos/get-service-connect-user-response.dto.mjs +0 -2
  51. package/esm2022/plugins/service-connect/lib/dtos/index.mjs +0 -3
  52. package/esm2022/plugins/service-connect/lib/helpers/build-service-connect-url.mjs +0 -16
  53. package/esm2022/plugins/service-connect/lib/helpers/has-roles-or-rights-handler.mjs +0 -12
  54. package/esm2022/plugins/service-connect/lib/helpers/has-roles-or-rights.mjs +0 -11
  55. package/esm2022/plugins/service-connect/lib/helpers/index.mjs +0 -5
  56. package/esm2022/plugins/service-connect/lib/helpers/service-connect-plugin-factory.mjs +0 -25
  57. package/esm2022/plugins/service-connect/lib/service-connect-rights.directive.mjs +0 -44
  58. package/esm2022/plugins/service-connect/lib/service-connect-rights.guard.mjs +0 -15
  59. package/esm2022/plugins/service-connect/lib/service-connect-rights.plugin.mjs +0 -16
  60. package/esm2022/plugins/service-connect/lib/service-connect-user-language.plugin.mjs +0 -34
  61. package/esm2022/plugins/service-connect/lib/service-connect-user-profile.plugin.mjs +0 -28
  62. package/esm2022/plugins/service-connect/lib/service-connect.config.mjs +0 -17
  63. package/esm2022/plugins/service-connect/odx-auth-plugins-service-connect.mjs +0 -5
  64. package/lib/auth.component.d.ts +0 -20
  65. package/lib/auth.config.d.ts +0 -84
  66. package/lib/auth.directive.d.ts +0 -25
  67. package/lib/auth.guard.d.ts +0 -11
  68. package/lib/auth.i18n.d.ts +0 -3
  69. package/lib/auth.interceptor.d.ts +0 -10
  70. package/lib/auth.logger.d.ts +0 -3
  71. package/lib/auth.module.d.ts +0 -10
  72. package/lib/auth.providers.d.ts +0 -46
  73. package/lib/auth.service.d.ts +0 -206
  74. package/lib/auth.typings.d.ts +0 -27
  75. package/lib/components/auth-actions/auth-actions.component.d.ts +0 -16
  76. package/lib/components/auth-loading-screen/auth-loading-screen.component.d.ts +0 -24
  77. package/lib/components/index.d.ts +0 -2
  78. package/lib/directives/auth-action.directive.d.ts +0 -18
  79. package/lib/directives/index.d.ts +0 -3
  80. package/lib/directives/sign-in.directive.d.ts +0 -29
  81. package/lib/directives/sign-out.directive.d.ts +0 -28
  82. package/lib/helpers/create-auth-host-url.d.ts +0 -14
  83. package/lib/helpers/create-inititals.d.ts +0 -18
  84. package/lib/helpers/handle-auth-error.d.ts +0 -13
  85. package/lib/helpers/handle-oauth-event.d.ts +0 -11
  86. package/lib/helpers/index.d.ts +0 -8
  87. package/lib/helpers/resolve-email.d.ts +0 -21
  88. package/lib/helpers/resolve-username.d.ts +0 -22
  89. package/lib/helpers/set-http-auth-header.d.ts +0 -11
  90. package/lib/helpers/user-language-loader.d.ts +0 -11
  91. package/lib/models/auth-environment.d.ts +0 -6
  92. package/lib/models/auth-plugin-manager.d.ts +0 -21
  93. package/lib/models/authorized-handler.d.ts +0 -3
  94. package/lib/models/index.d.ts +0 -4
  95. package/lib/models/offline-auth-error-handler.d.ts +0 -2
  96. package/lib/plugins/core-debug.plugin.d.ts +0 -11
  97. package/lib/plugins/core-identity.plugin.d.ts +0 -18
  98. package/lib/plugins/index.d.ts +0 -3
  99. package/lib/plugins/user-profile-link.plugin.d.ts +0 -18
  100. package/lib/unauth.guard.d.ts +0 -11
  101. package/plugins/service-connect/lib/dtos/get-service-connect-rights-response.dto.d.ts +0 -3
  102. package/plugins/service-connect/lib/dtos/get-service-connect-user-response.dto.d.ts +0 -14
  103. package/plugins/service-connect/lib/dtos/index.d.ts +0 -2
  104. package/plugins/service-connect/lib/helpers/build-service-connect-url.d.ts +0 -10
  105. package/plugins/service-connect/lib/helpers/has-roles-or-rights-handler.d.ts +0 -10
  106. package/plugins/service-connect/lib/helpers/has-roles-or-rights.d.ts +0 -11
  107. package/plugins/service-connect/lib/helpers/index.d.ts +0 -4
  108. package/plugins/service-connect/lib/helpers/service-connect-plugin-factory.d.ts +0 -20
  109. package/plugins/service-connect/lib/service-connect-rights.directive.d.ts +0 -21
  110. package/plugins/service-connect/lib/service-connect-rights.guard.d.ts +0 -11
  111. package/plugins/service-connect/lib/service-connect-rights.plugin.d.ts +0 -18
  112. package/plugins/service-connect/lib/service-connect-user-language.plugin.d.ts +0 -24
  113. package/plugins/service-connect/lib/service-connect-user-profile.plugin.d.ts +0 -23
  114. package/plugins/service-connect/lib/service-connect.config.d.ts +0 -15
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@odx/auth",
3
- "version": "17.2.1",
3
+ "version": "18.0.0",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
7
- "@odx/angular": "^12.0.0"
7
+ "@odx/angular": "^13.0.0"
8
8
  },
9
9
  "dependencies": {
10
- "angular-oauth2-oidc": "^18.0.0",
11
- "tslib": "^2.8.0"
10
+ "angular-oauth2-oidc": "^20.0.2",
11
+ "tslib": "^2.8.1"
12
12
  },
13
13
  "publishConfig": {
14
14
  "access": "public",
@@ -23,14 +23,10 @@
23
23
  },
24
24
  ".": {
25
25
  "types": "./index.d.ts",
26
- "esm2022": "./esm2022/odx-auth.mjs",
27
- "esm": "./esm2022/odx-auth.mjs",
28
26
  "default": "./fesm2022/odx-auth.mjs"
29
27
  },
30
28
  "./plugins/service-connect": {
31
29
  "types": "./plugins/service-connect/index.d.ts",
32
- "esm2022": "./esm2022/plugins/service-connect/odx-auth-plugins-service-connect.mjs",
33
- "esm": "./esm2022/plugins/service-connect/odx-auth-plugins-service-connect.mjs",
34
30
  "default": "./fesm2022/odx-auth-plugins-service-connect.mjs"
35
31
  }
36
32
  }
@@ -1,8 +1,184 @@
1
- export * from './lib/dtos';
2
- export * from './lib/helpers';
3
- export * from './lib/service-connect-rights.directive';
4
- export * from './lib/service-connect-rights.guard';
5
- export * from './lib/service-connect-rights.plugin';
6
- export * from './lib/service-connect-user-language.plugin';
7
- export * from './lib/service-connect-user-profile.plugin';
8
- export * from './lib/service-connect.config';
1
+ import * as i1 from '@odx/auth';
2
+ import { AuthEnvironment, AuthorizedHandler, AuthPluginFactory } from '@odx/auth';
3
+ import * as i0 from '@angular/core';
4
+ import { CanActivateFn } from '@angular/router';
5
+ import * as _odx_auth_plugins_service_connect from '@odx/auth/plugins/service-connect';
6
+
7
+ interface GetServiceConnectRightsResponseDto {
8
+ rights: string[];
9
+ }
10
+
11
+ interface GetServiceConnectUserResponseDto {
12
+ user_id: string;
13
+ first_name: string;
14
+ last_name: string;
15
+ language_code: string;
16
+ preferred_language: string;
17
+ country: string;
18
+ institution_id: number;
19
+ institution_name: string;
20
+ institution_name_2?: string | null;
21
+ institution_name_3?: string | null;
22
+ account_number?: string | null;
23
+ institution_shortname: string;
24
+ }
25
+
26
+ type ServiceConnectEnvironment = {
27
+ custom: string;
28
+ };
29
+ declare const ServiceConnectEnvironments: Record<AuthEnvironment, string>;
30
+ declare const ServiceConnectScopes: {
31
+ BASE: string;
32
+ PROFILE: string;
33
+ RIGHTS: string;
34
+ INSTITUTION: string;
35
+ };
36
+ declare const ServiceConnectEndpoints: {
37
+ user: string;
38
+ userRights: string;
39
+ };
40
+
41
+ /**
42
+ * Builds a service connect URL based on the provided environment and endpoints.
43
+ *
44
+ * @param {ServiceConnectEnvironment | AuthEnvironment} environment - The environment configuration which can be either a `ServiceConnectEnvironment` or `AuthEnvironment`.
45
+ * @param {string[]} endpoints - A list of endpoint strings to be appended to the base URL.
46
+ * @returns {string} - The constructed service connect URL as a string.
47
+ */
48
+ declare function buildServiceConnectUrl(environment: ServiceConnectEnvironment | AuthEnvironment, ...endpoints: string[]): string;
49
+
50
+ type Right = string | number;
51
+ type Role = Right[];
52
+ type RolesOrRights = Array<Role | Right>;
53
+ /**
54
+ * Checks if the user has any of the specified roles or rights.
55
+ *
56
+ * @param {Right[]} userRights - An array of rights that the user possesses.
57
+ * @param {RolesOrRights} rolesOrRights - An array of roles or rights to check against. A role is represented as an array of rights.
58
+ * @returns {boolean} - `true` if the user has any of the specified roles or rights, otherwise `false`.
59
+ */
60
+ declare function hasRolesOrRights(userRights: Right[], rolesOrRights: RolesOrRights): boolean;
61
+
62
+ /**
63
+ * Creates an authorized handler that checks if the user has the specified roles or rights.
64
+ *
65
+ * @param {RolesOrRights} rolesOrRights - The roles or rights to check against the user's claims.
66
+ * @returns {AuthorizedHandler} - An handler function that takes user claims and returns a boolean indicating
67
+ * whether the user has the required roles or rights.
68
+ */
69
+ declare function hasRolesOrRightsHandler(rolesOrRights: RolesOrRights): AuthorizedHandler;
70
+
71
+ interface ServiceConnectPluginOptions<Dto = unknown> {
72
+ environment?: ServiceConnectEnvironment;
73
+ additionalClaims?: (dto: (Dto & Record<string, unknown>) | null) => Partial<OdxAuth.AuthPluginResult>;
74
+ }
75
+ interface ServiceConnectPluginFactoryOptions<Dto> {
76
+ endpoint: string[];
77
+ parseResponse: (res: Dto | null) => Partial<OdxAuth.AuthPluginResult>;
78
+ defaultValue?: Partial<OdxAuth.AuthPluginResult>;
79
+ setup?: (pluginOptions?: ServiceConnectPluginOptions<Dto>) => void;
80
+ }
81
+ type ServiceConnectPluginFactory<Dto = unknown> = (pluginOptions?: ServiceConnectPluginOptions<Dto>) => AuthPluginFactory;
82
+ /**
83
+ * Creates a plugin factory for fetching and parsing service connect data.
84
+ *
85
+ * @param {ServiceConnectPluginFactoryOptions<Dto>} options - The options for the service connect plugin factory.
86
+ * @returns {ServiceConnectPluginFactory} - A function that creates an auth plugin factory for fetching and parsing service connect data.
87
+ */
88
+ declare function serviceConnectPluginFactory<Dto = unknown>(options: ServiceConnectPluginFactoryOptions<Dto>): ServiceConnectPluginFactory<Dto>;
89
+
90
+ /**
91
+ * A directive that extends the functionality of the `AuthDirective` to handle
92
+ * roles or rights for service connection authorization.
93
+ *
94
+ * @see AuthDirective
95
+ *
96
+ * This directive should be used on an `ng-template` element with the selector
97
+ * `odxAuthServiceConnectRights`.
98
+ */
99
+ declare class ServiceConnectRightsDirective {
100
+ private readonly authDirective;
101
+ /**
102
+ * Sets the roles or rights that the user must have to display the content.
103
+ */
104
+ set rolesOrRights(value: RolesOrRights | null | undefined);
105
+ static ɵfac: i0.ɵɵFactoryDeclaration<ServiceConnectRightsDirective, never>;
106
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ServiceConnectRightsDirective, "ng-template[odxAuthServiceConnectRights]", never, { "rolesOrRights": { "alias": "odxAuthServiceConnectRights"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.AuthDirective; inputs: { "odxAuthElse": "odxAuthServiceConnectRightsElse"; }; outputs: {}; }]>;
107
+ }
108
+
109
+ /**
110
+ * A guard function to check if the user has the required roles or rights to access a route.
111
+ *
112
+ * @param {RolesOrRights} rolesOrRights - The roles or rights required to access the route.
113
+ * @param {string | any[]} redirectTo - (Optional) The route to redirect to if the user does not have the required roles or rights.
114
+ * @param {boolean} isExternal - (Optional) A flag indicating if the redirection is to an external URL. Defaults to `false`.
115
+ * @returns {CanActivateFn} - A function that checks the user's roles or rights and handles redirection if necessary.
116
+ */
117
+ declare function serviceConnectRightsGuard(rolesOrRights: RolesOrRights, redirectTo?: string | any[], isExternal?: boolean): CanActivateFn;
118
+
119
+ declare global {
120
+ namespace OdxAuth {
121
+ interface AuthPluginResult {
122
+ rights: Right[];
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * A plugin for fetching and parsing service connect rights.
128
+ *
129
+ * This plugin uses the `serviceConnectPluginFactory` to create a plugin that fetches user rights
130
+ * from the specified endpoint and parses the response to extract the rights.
131
+ *
132
+ * @see {serviceConnectPluginFactory}
133
+ */
134
+ declare const serviceConnectRightsPlugin: _odx_auth_plugins_service_connect.ServiceConnectPluginFactory<GetServiceConnectRightsResponseDto>;
135
+
136
+ /**
137
+ * Gets the preferred language from a service connect user response.
138
+ *
139
+ * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.
140
+ * @returns {string | undefined} - The language or undefined.
141
+ */
142
+ declare function getServiceConnectUserLanguage(res?: GetServiceConnectUserResponseDto | null): string | undefined;
143
+ /**
144
+ * Gets the language code from a service connect user response.
145
+ *
146
+ * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.
147
+ * @returns {string | undefined} - The language code or undefined.
148
+ */
149
+ declare function getServiceConnectUserLanguageCode(res?: GetServiceConnectUserResponseDto | null): string | undefined;
150
+ /**
151
+ * A plugin for fetching and parsing the user's preferred language from service connect.
152
+ *
153
+ * This plugin uses the `serviceConnectPluginFactory` to create a plugin that fetches the user's preferred language
154
+ * from the user endpoint and parses the response to extract the preferred language.
155
+ *
156
+ * @see {serviceConnectPluginFactory}
157
+ */
158
+ declare const serviceConnectUserLanguagePlugin: _odx_auth_plugins_service_connect.ServiceConnectPluginFactory<GetServiceConnectUserResponseDto>;
159
+
160
+ declare global {
161
+ namespace OdxAuth {
162
+ interface AuthPluginResult {
163
+ country?: string;
164
+ institutionId?: number;
165
+ institutionName?: string;
166
+ institutionName2?: string;
167
+ institutionName3?: string;
168
+ institutionShortname?: string;
169
+ accountNumber?: string;
170
+ }
171
+ }
172
+ }
173
+ /**
174
+ * A plugin for fetching and parsing the user's profile from service connect.
175
+ *
176
+ * This plugin uses the `serviceConnectPluginFactory` to create a plugin that fetches the user's profile
177
+ * from the user endpoint and parses the response to extract the user's profile information.
178
+ *
179
+ * @see {serviceConnectPluginFactory}
180
+ */
181
+ declare const serviceConnectUserProfilePlugin: _odx_auth_plugins_service_connect.ServiceConnectPluginFactory<GetServiceConnectUserResponseDto>;
182
+
183
+ export { ServiceConnectEndpoints, ServiceConnectEnvironments, ServiceConnectRightsDirective, ServiceConnectScopes, buildServiceConnectUrl, getServiceConnectUserLanguage, getServiceConnectUserLanguageCode, hasRolesOrRights, hasRolesOrRightsHandler, serviceConnectPluginFactory, serviceConnectRightsGuard, serviceConnectRightsPlugin, serviceConnectUserLanguagePlugin, serviceConnectUserProfilePlugin };
184
+ export type { GetServiceConnectRightsResponseDto, GetServiceConnectUserResponseDto, Right, Role, RolesOrRights, ServiceConnectEnvironment, ServiceConnectPluginFactory, ServiceConnectPluginFactoryOptions, ServiceConnectPluginOptions };
package/esm2022/index.mjs DELETED
@@ -1,16 +0,0 @@
1
- export * from './lib/auth.component';
2
- export * from './lib/auth.config';
3
- export * from './lib/auth.directive';
4
- export * from './lib/auth.guard';
5
- export * from './lib/auth.interceptor';
6
- export * from './lib/auth.module';
7
- export * from './lib/auth.providers';
8
- export * from './lib/auth.service';
9
- export * from './lib/auth.typings';
10
- export * from './lib/components';
11
- export * from './lib/directives';
12
- export * from './lib/helpers';
13
- export * from './lib/models';
14
- export * from './lib/plugins';
15
- export * from './lib/unauth.guard';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgucHJvdmlkZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLnR5cGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsdWdpbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdW5hdXRoLmd1YXJkJztcbiJdfQ==
@@ -1,50 +0,0 @@
1
- import { AsyncPipe } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from '@angular/core';
3
- import { AreaHeaderModule } from '@odx/angular/components/area-header';
4
- import { DropdownModule } from '@odx/angular/components/dropdown';
5
- import { HeaderModule } from '@odx/angular/components/header';
6
- import { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';
7
- import { provideTranslations, TranslatePipe } from '@odx/angular/internal/translate';
8
- import { Position } from '@odx/angular/utils';
9
- import { combineLatest } from 'rxjs';
10
- import { injectAuthConfig } from './auth.config';
11
- import translations from './auth.i18n';
12
- import { AuthService } from './auth.service';
13
- import { AuthActionsComponent } from './components';
14
- import { SignInDirective } from './directives';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/common";
17
- import * as i2 from "@odx/angular/components/area-header";
18
- import * as i3 from "@odx/angular/components/avatar";
19
- import * as i4 from "@odx/angular/components/action-group";
20
- import * as i5 from "@odx/angular/components/button";
21
- import * as i6 from "@odx/angular/components/icon";
22
- import * as i7 from "@odx/angular/components/dropdown";
23
- export class AuthComponent {
24
- constructor() {
25
- this.authConfig = injectAuthConfig();
26
- this.authService = inject(AuthService);
27
- this.dropdownOptions = {
28
- position: Position.BOTTOM_END,
29
- enableFallback: false,
30
- containerClass: 'odx-auth-user-profile',
31
- };
32
- this.vm$ = combineLatest({
33
- idClaims: this.authService.identityClaims$,
34
- isAuthenticated: this.authService.isAuthenticated$,
35
- });
36
- /**
37
- * Whether to hide the institution information.
38
- *
39
- * @type {InputSignal<boolean>}
40
- */
41
- this.hideInstitution = input(false);
42
- }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AuthComponent, isStandalone: true, selector: "odx-auth", inputs: { hideInstitution: { classPropertyName: "hideInstitution", publicName: "hideInstitution", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslations(translations)], ngImport: i0, template: "<odx-action-group>\n @if (vm$ | async; as vm) {\n <ng-container ngProjectAs=\"[odxButton]\">\n @if (vm.isAuthenticated) {\n <button odxButton [odxDropdown]=\"userProfileMenu\" [odxDropdownOptions]=\"dropdownOptions\" data-testid=\"odx-auth-user-profile-button\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\" />\n </button>\n } @else {\n <button class=\"odx-auth-sign-in\" odxButton odxAuthSignIn variant=\"secondary\" data-testid=\"odx-auth-sign-in-button\">\n <odx-icon name=\"user\" alignLeft />\n {{ 'signInButtonText' | odxTranslate | async }}\n </button>\n }\n <ng-template #userProfileMenu>\n @if (!hideInstitution() && vm.idClaims?.institutionName; as institutionName) {\n <p class=\"odx-padding-x-8\" data-testid=\"odx-auth-institution-name\">{{ institutionName }}</p>\n }\n <odx-area-header class=\"odx-padding-x-8 odx-margin-y-12\" size=\"small\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\" ngProjectAs=\"odx-avatar\" />\n {{ vm.idClaims?.username }}\n <odx-area-header-subtitle>\n {{ vm.idClaims?.email }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <ng-content />\n <odx-auth-actions [claims]=\"vm.idClaims\" />\n </ng-template>\n <ng-template #userAvatar>\n <odx-avatar class=\"odx-auth-user-avatar\">\n {{ vm.idClaims?.initials ?? '' }}\n </odx-avatar>\n </ng-template>\n </ng-container>\n }\n</odx-action-group>\n", styles: [".odx-auth-user-profile .odx-dropdown__inner{border-block-width:var(--odx-control-border-width);max-width:max(400px,25vw);min-width:320px}\n"], dependencies: [{ kind: "ngmodule", type: AreaHeaderModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: i2.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i2.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i3.AvatarComponent, selector: "odx-avatar", inputs: ["size", "variant"] }, { kind: "component", type: i4.ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "directive", type: i7.DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "ngmodule", type: HeaderModule }, { kind: "directive", type: SignInDirective, selector: "[odxButton][odxAuthSignIn]", outputs: ["odxAuthSignIn"] }, { kind: "ngmodule", type: LoadingSpinnerModule }, { kind: "component", type: AuthActionsComponent, selector: "odx-auth-actions", inputs: ["claims"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthComponent, decorators: [{
47
- type: Component,
48
- args: [{ standalone: true, selector: 'odx-auth', imports: [AreaHeaderModule, DropdownModule, HeaderModule, SignInDirective, LoadingSpinnerModule, AuthActionsComponent, TranslatePipe, AsyncPipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [provideTranslations(translations)], template: "<odx-action-group>\n @if (vm$ | async; as vm) {\n <ng-container ngProjectAs=\"[odxButton]\">\n @if (vm.isAuthenticated) {\n <button odxButton [odxDropdown]=\"userProfileMenu\" [odxDropdownOptions]=\"dropdownOptions\" data-testid=\"odx-auth-user-profile-button\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\" />\n </button>\n } @else {\n <button class=\"odx-auth-sign-in\" odxButton odxAuthSignIn variant=\"secondary\" data-testid=\"odx-auth-sign-in-button\">\n <odx-icon name=\"user\" alignLeft />\n {{ 'signInButtonText' | odxTranslate | async }}\n </button>\n }\n <ng-template #userProfileMenu>\n @if (!hideInstitution() && vm.idClaims?.institutionName; as institutionName) {\n <p class=\"odx-padding-x-8\" data-testid=\"odx-auth-institution-name\">{{ institutionName }}</p>\n }\n <odx-area-header class=\"odx-padding-x-8 odx-margin-y-12\" size=\"small\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\" ngProjectAs=\"odx-avatar\" />\n {{ vm.idClaims?.username }}\n <odx-area-header-subtitle>\n {{ vm.idClaims?.email }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <ng-content />\n <odx-auth-actions [claims]=\"vm.idClaims\" />\n </ng-template>\n <ng-template #userAvatar>\n <odx-avatar class=\"odx-auth-user-avatar\">\n {{ vm.idClaims?.initials ?? '' }}\n </odx-avatar>\n </ng-template>\n </ng-container>\n }\n</odx-action-group>\n", styles: [".odx-auth-user-profile .odx-dropdown__inner{border-block-width:var(--odx-control-border-width);max-width:max(400px,25vw);min-width:320px}\n"] }]
49
- }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9zcmMvbGliL2F1dGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sWUFBWSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7OztBQVkvQyxNQUFNLE9BQU8sYUFBYTtJQVYxQjtRQVdxQixlQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxvQkFBZSxHQUFHO1lBQ25DLFFBQVEsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUM3QixjQUFjLEVBQUUsS0FBSztZQUNyQixjQUFjLEVBQUUsdUJBQXVCO1NBQ1osQ0FBQztRQUNYLFFBQUcsR0FBRyxhQUFhLENBQUM7WUFDckMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZTtZQUMxQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7U0FDbkQsQ0FBQyxDQUFDO1FBRUg7Ozs7V0FJRztRQUNhLG9CQUFlLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2hEOytHQW5CWSxhQUFhO21HQUFiLGFBQWEseU5BRmIsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQywwQkN2QmhELGdpREFtQ0Esb01EakJZLGdCQUFnQiw2NEJBQUUsY0FBYywwZkFBRSxZQUFZLCtCQUFFLGVBQWUsa0dBQUUsb0JBQW9CLCtCQUFFLG9CQUFvQiw0RUFBRSxhQUFhOzs0RkFPekgsYUFBYTtrQkFWekIsU0FBUztpQ0FDSSxJQUFJLFlBQ04sVUFBVSxXQUNYLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxtQkFHL0gsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcmVhSGVhZGVyTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYXJlYS1oZWFkZXInO1xuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUsIERyb3Bkb3duT3B0aW9ucyB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEhlYWRlck1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2hlYWRlcic7XG5pbXBvcnQgeyBMb2FkaW5nU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQgeyBwcm92aWRlVHJhbnNsYXRpb25zLCBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsL3RyYW5zbGF0ZSc7XG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpbmplY3RBdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgdHJhbnNsYXRpb25zIGZyb20gJy4vYXV0aC5pMThuJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aEFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgU2lnbkluRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnb2R4LWF1dGgnLFxuICBpbXBvcnRzOiBbQXJlYUhlYWRlck1vZHVsZSwgRHJvcGRvd25Nb2R1bGUsIEhlYWRlck1vZHVsZSwgU2lnbkluRGlyZWN0aXZlLCBMb2FkaW5nU3Bpbm5lck1vZHVsZSwgQXV0aEFjdGlvbnNDb21wb25lbnQsIFRyYW5zbGF0ZVBpcGUsIEFzeW5jUGlwZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0aC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZVRyYW5zbGF0aW9ucyh0cmFuc2xhdGlvbnMpXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBhdXRoQ29uZmlnID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd25PcHRpb25zID0ge1xuICAgIHBvc2l0aW9uOiBQb3NpdGlvbi5CT1RUT01fRU5ELFxuICAgIGVuYWJsZUZhbGxiYWNrOiBmYWxzZSxcbiAgICBjb250YWluZXJDbGFzczogJ29keC1hdXRoLXVzZXItcHJvZmlsZScsXG4gIH0gYXMgUGFydGlhbDxEcm9wZG93bk9wdGlvbnM+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0kID0gY29tYmluZUxhdGVzdCh7XG4gICAgaWRDbGFpbXM6IHRoaXMuYXV0aFNlcnZpY2UuaWRlbnRpdHlDbGFpbXMkLFxuICAgIGlzQXV0aGVudGljYXRlZDogdGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkLFxuICB9KTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBoaWRlIHRoZSBpbnN0aXR1dGlvbiBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHR5cGUge0lucHV0U2lnbmFsPGJvb2xlYW4+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGhpZGVJbnN0aXR1dGlvbiA9IGlucHV0KGZhbHNlKTtcbn1cbiIsIjxvZHgtYWN0aW9uLWdyb3VwPlxuICBAaWYgKHZtJCB8IGFzeW5jOyBhcyB2bSkge1xuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJbb2R4QnV0dG9uXVwiPlxuICAgICAgQGlmICh2bS5pc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgPGJ1dHRvbiBvZHhCdXR0b24gW29keERyb3Bkb3duXT1cInVzZXJQcm9maWxlTWVudVwiIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwiZHJvcGRvd25PcHRpb25zXCIgZGF0YS10ZXN0aWQ9XCJvZHgtYXV0aC11c2VyLXByb2ZpbGUtYnV0dG9uXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInVzZXJBdmF0YXJcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwib2R4LWF1dGgtc2lnbi1pblwiIG9keEJ1dHRvbiBvZHhBdXRoU2lnbkluIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBkYXRhLXRlc3RpZD1cIm9keC1hdXRoLXNpZ24taW4tYnV0dG9uXCI+XG4gICAgICAgICAgPG9keC1pY29uIG5hbWU9XCJ1c2VyXCIgYWxpZ25MZWZ0IC8+XG4gICAgICAgICAge3sgJ3NpZ25JbkJ1dHRvblRleHQnIHwgb2R4VHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgICA8bmctdGVtcGxhdGUgI3VzZXJQcm9maWxlTWVudT5cbiAgICAgICAgQGlmICghaGlkZUluc3RpdHV0aW9uKCkgJiYgdm0uaWRDbGFpbXM/Lmluc3RpdHV0aW9uTmFtZTsgYXMgaW5zdGl0dXRpb25OYW1lKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJvZHgtcGFkZGluZy14LThcIiBkYXRhLXRlc3RpZD1cIm9keC1hdXRoLWluc3RpdHV0aW9uLW5hbWVcIj57eyBpbnN0aXR1dGlvbk5hbWUgfX08L3A+XG4gICAgICAgIH1cbiAgICAgICAgPG9keC1hcmVhLWhlYWRlciBjbGFzcz1cIm9keC1wYWRkaW5nLXgtOCBvZHgtbWFyZ2luLXktMTJcIiBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidXNlckF2YXRhclwiIG5nUHJvamVjdEFzPVwib2R4LWF2YXRhclwiIC8+XG4gICAgICAgICAge3sgdm0uaWRDbGFpbXM/LnVzZXJuYW1lIH19XG4gICAgICAgICAgPG9keC1hcmVhLWhlYWRlci1zdWJ0aXRsZT5cbiAgICAgICAgICAgIHt7IHZtLmlkQ2xhaW1zPy5lbWFpbCB9fVxuICAgICAgICAgIDwvb2R4LWFyZWEtaGVhZGVyLXN1YnRpdGxlPlxuICAgICAgICA8L29keC1hcmVhLWhlYWRlcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgPG9keC1hdXRoLWFjdGlvbnMgW2NsYWltc109XCJ2bS5pZENsYWltc1wiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlICN1c2VyQXZhdGFyPlxuICAgICAgICA8b2R4LWF2YXRhciBjbGFzcz1cIm9keC1hdXRoLXVzZXItYXZhdGFyXCI+XG4gICAgICAgICAge3sgdm0uaWRDbGFpbXM/LmluaXRpYWxzID8/ICcnIH19XG4gICAgICAgIDwvb2R4LWF2YXRhcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIH1cbjwvb2R4LWFjdGlvbi1ncm91cD5cbiJdfQ==
@@ -1,71 +0,0 @@
1
- import { createConfigTokens } from '@odx/angular/utils';
2
- import { createInitials, resolveEmail, resolveUsername } from './helpers';
3
- export const AUTH_HTTP_HEADER = 'Authorization';
4
- export const ODX_AUTH_DEFAULT_SCOPES = ['openid', 'profile', 'email', 'offline_access'];
5
- export const ODX_AUTH_HOSTS = {
6
- dev: 'https://dev.login.draeger.com',
7
- stage: 'https://test.login.draeger.com',
8
- prod: 'https://login.draeger.com',
9
- };
10
- export const ODX_AUTH_USER_PROFILE_HOSTS = {
11
- dev: 'https://lemon-ocean-04a922703.3.azurestaticapps.net',
12
- stage: 'https://purple-cliff-0e61c5703.3.azurestaticapps.net',
13
- prod: 'https://id.draeger.com',
14
- };
15
- /**
16
- * Tools for injecting and providing the auth configuration with default configuration for the authentication.
17
- *
18
- * @example
19
- * // Providing custom authentication configuration.
20
- * ```ts
21
- * import { createInitials, resolveEmail, resolveUsername } from './helpers';
22
- *
23
- * providers: [provideAuthConfig({
24
- * environment: 'dev',
25
- * redirectPath: 'login/callback',
26
- * allowedUrls: [],
27
- * timeoutFactor: 0.75,
28
- * maxOfflineTime: 60 * 60, // 1 hour
29
- * loadUserProfile: false,
30
- * errorHandler: (error) => {
31
- * throw error;
32
- * },
33
- * createInitials,
34
- * resolveEmail,
35
- * resolveUsername,
36
- * plugins: [],
37
- * defaultAuthorizedHandler: null,
38
- * enableLoadingScreen: true,
39
- * loadingScreenMessage: 'Loading...',
40
- * waitForTokenInMs: 500,
41
- *
42
- * })],
43
- *
44
- * // Injecting the datepicker configuration.
45
- * ```ts
46
- * @Component({})
47
- * export class MyComponent {
48
- * constructor(@Inject(injectAuthConfig()) private readonly authConfig: AuthConfig) {}
49
- * }
50
- * ```
51
- */
52
- export const { AuthDefaultConfig, AuthConfig, injectAuthConfig, provideAuthConfig } = createConfigTokens('Auth', '@odx/auth', {
53
- environment: 'prod',
54
- redirectPath: 'login/callback',
55
- allowedUrls: [],
56
- timeoutFactor: 0.75,
57
- maxOfflineTime: 24 * 60 * 60, // 1 day
58
- loadUserProfile: false,
59
- errorHandler: (error) => {
60
- throw error;
61
- },
62
- createInitials,
63
- resolveEmail,
64
- resolveUsername,
65
- plugins: [],
66
- defaultAuthorizedHandler: null,
67
- enableLoadingScreen: true,
68
- loadingScreenMessage: null,
69
- waitForTokenInMs: 1000,
70
- });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJMUUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQW9DO0lBQzdELEdBQUcsRUFBRSwrQkFBK0I7SUFDcEMsS0FBSyxFQUFFLGdDQUFnQztJQUN2QyxJQUFJLEVBQUUsMkJBQTJCO0NBQ2xDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBb0M7SUFDMUUsR0FBRyxFQUFFLHFEQUFxRDtJQUMxRCxLQUFLLEVBQUUsc0RBQXNEO0lBQzdELElBQUksRUFBRSx3QkFBd0I7Q0FDL0IsQ0FBQztBQTJDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO0lBQzVILFdBQVcsRUFBRSxNQUFNO0lBQ25CLFlBQVksRUFBRSxnQkFBZ0I7SUFDOUIsV0FBVyxFQUFFLEVBQUU7SUFDZixhQUFhLEVBQUUsSUFBSTtJQUNuQixjQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUTtJQUN0QyxlQUFlLEVBQUUsS0FBSztJQUN0QixZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN0QixNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7SUFDRCxjQUFjO0lBQ2QsWUFBWTtJQUNaLGVBQWU7SUFDZixPQUFPLEVBQUUsRUFBRTtJQUNYLHdCQUF3QixFQUFFLElBQUk7SUFDOUIsbUJBQW1CLEVBQUUsSUFBSTtJQUN6QixvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGdCQUFnQixFQUFFLElBQUk7Q0FDVCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljVGV4dENvbnRlbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBjcmVhdGVDb25maWdUb2tlbnMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgT0F1dGhFcnJvckV2ZW50LCBPQXV0aFN0b3JhZ2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IGNyZWF0ZUluaXRpYWxzLCByZXNvbHZlRW1haWwsIHJlc29sdmVVc2VybmFtZSB9IGZyb20gJy4vaGVscGVycyc7XG5cbmltcG9ydCB7IEF1dGhFbnZpcm9ubWVudCwgQXV0aG9yaXplZEhhbmRsZXIsIEF1dGhQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgQVVUSF9IVFRQX0hFQURFUiA9ICdBdXRob3JpemF0aW9uJztcbmV4cG9ydCBjb25zdCBPRFhfQVVUSF9ERUZBVUxUX1NDT1BFUyA9IFsnb3BlbmlkJywgJ3Byb2ZpbGUnLCAnZW1haWwnLCAnb2ZmbGluZV9hY2Nlc3MnXTtcbmV4cG9ydCBjb25zdCBPRFhfQVVUSF9IT1NUUzogUmVjb3JkPEF1dGhFbnZpcm9ubWVudCwgc3RyaW5nPiA9IHtcbiAgZGV2OiAnaHR0cHM6Ly9kZXYubG9naW4uZHJhZWdlci5jb20nLFxuICBzdGFnZTogJ2h0dHBzOi8vdGVzdC5sb2dpbi5kcmFlZ2VyLmNvbScsXG4gIHByb2Q6ICdodHRwczovL2xvZ2luLmRyYWVnZXIuY29tJyxcbn07XG5leHBvcnQgY29uc3QgT0RYX0FVVEhfVVNFUl9QUk9GSUxFX0hPU1RTOiBSZWNvcmQ8QXV0aEVudmlyb25tZW50LCBzdHJpbmc+ID0ge1xuICBkZXY6ICdodHRwczovL2xlbW9uLW9jZWFuLTA0YTkyMjcwMy4zLmF6dXJlc3RhdGljYXBwcy5uZXQnLFxuICBzdGFnZTogJ2h0dHBzOi8vcHVycGxlLWNsaWZmLTBlNjFjNTcwMy4zLmF6dXJlc3RhdGljYXBwcy5uZXQnLFxuICBwcm9kOiAnaHR0cHM6Ly9pZC5kcmFlZ2VyLmNvbScsXG59O1xuXG5leHBvcnQgdHlwZSBBdXRoRXJyb3JIYW5kbGVyRm4gPSAoZXJyb3I6IE9BdXRoRXJyb3JFdmVudCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIFJlc29sdmVVc2VybmFtZUZuID0gKHJhd0NsYWltczogT2R4QXV0aC5SYXdJZGVudGl0eUNsYWltcykgPT4gc3RyaW5nO1xuZXhwb3J0IHR5cGUgUmVzb2x2ZUVtYWlsRm4gPSAocmF3Q2xhaW1zOiBPZHhBdXRoLlJhd0lkZW50aXR5Q2xhaW1zKSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBDcmVhdGVJbml0aWFsc0ZuID0gKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBtb2R1bGUuXG4gKlxuICogQGludGVyZmFjZSBBdXRoQ29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIGVudmlyb25tZW50OiBBdXRoRW52aXJvbm1lbnQ7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICBpc3N1ZXI/OiBzdHJpbmc7XG4gIHJlZGlyZWN0UGF0aDogc3RyaW5nO1xuICBhbGxvd2VkVXJsczogQXJyYXk8c3RyaW5nIHwgUmVnRXhwPjtcbiAgdGltZW91dEZhY3RvcjogbnVtYmVyO1xuICBtYXhPZmZsaW5lVGltZTogbnVtYmVyO1xuICBsb2FkVXNlclByb2ZpbGU6IGJvb2xlYW47XG4gIHBvc3RMb2dvdXRSZWRpcmVjdFVybD86IHN0cmluZztcbiAgc2NvcGVzPzogc3RyaW5nW107XG4gIGRpc2NvdmVyeVVybD86IHN0cmluZztcbiAgZXJyb3JIYW5kbGVyOiBBdXRoRXJyb3JIYW5kbGVyRm47XG4gIGNyZWF0ZUluaXRpYWxzOiBDcmVhdGVJbml0aWFsc0ZuO1xuICByZXNvbHZlRW1haWw6IFJlc29sdmVFbWFpbEZuO1xuICByZXNvbHZlVXNlcm5hbWU6IFJlc29sdmVVc2VybmFtZUZuO1xuICBzdG9yYWdlPzogT0F1dGhTdG9yYWdlO1xuICBwbHVnaW5zOiBBdXRoUGx1Z2luRmFjdG9yeVtdO1xuICBwbHVnaW5zRXJyb3JIYW5kbGVyPzogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkO1xuICBkZWZhdWx0QXV0aG9yaXplZEhhbmRsZXI/OiBBdXRob3JpemVkSGFuZGxlciB8IG51bGw7XG4gIGVuYWJsZUxvYWRpbmdTY3JlZW46IGJvb2xlYW47XG4gIHJlZnJlc2hUb2tlbk9uSW5pdD86IGJvb2xlYW47XG4gIGxvYWRpbmdTY3JlZW5NZXNzYWdlPzogRHluYW1pY1RleHRDb250ZW50IHwgbnVsbDtcbiAgdXNlclByb2ZpbGVVcmw/OiBzdHJpbmc7XG4gIHJlcXVpcmVTaWduSW4/OiBib29sZWFuO1xuICByZXF1aXJlU2lnbkluRm9yUmVxdWVzdHM/OiBib29sZWFuO1xuICB3YWl0Rm9yVG9rZW5Jbk1zPzogbnVtYmVyO1xuICBzaG93RGVidWdJbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIHBsdWdpblRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVG9vbHMgZm9yIGluamVjdGluZyBhbmQgcHJvdmlkaW5nIHRoZSBhdXRoIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhdXRoZW50aWNhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUHJvdmlkaW5nIGN1c3RvbSBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICogYGBgdHNcbiAqICAgaW1wb3J0IHsgY3JlYXRlSW5pdGlhbHMsIHJlc29sdmVFbWFpbCwgcmVzb2x2ZVVzZXJuYW1lIH0gZnJvbSAnLi9oZWxwZXJzJztcbiAqXG4gKiAgIHByb3ZpZGVyczogW3Byb3ZpZGVBdXRoQ29uZmlnKHtcbiAqICAgICAgICBlbnZpcm9ubWVudDogJ2RldicsXG4gKiAgICAgICAgcmVkaXJlY3RQYXRoOiAnbG9naW4vY2FsbGJhY2snLFxuICogICAgICAgIGFsbG93ZWRVcmxzOiBbXSxcbiAqICAgICAgICB0aW1lb3V0RmFjdG9yOiAwLjc1LFxuICogICAgICAgIG1heE9mZmxpbmVUaW1lOiA2MCAqIDYwLCAvLyAxIGhvdXJcbiAqICAgICAgICBsb2FkVXNlclByb2ZpbGU6IGZhbHNlLFxuICogICAgICAgIGVycm9ySGFuZGxlcjogKGVycm9yKSA9PiB7XG4gKiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAqICAgICAgICB9LFxuICogICAgICAgIGNyZWF0ZUluaXRpYWxzLFxuICogICAgICAgIHJlc29sdmVFbWFpbCxcbiAqICAgICAgICByZXNvbHZlVXNlcm5hbWUsXG4gKiAgICAgICAgcGx1Z2luczogW10sXG4gKiAgICAgICAgZGVmYXVsdEF1dGhvcml6ZWRIYW5kbGVyOiBudWxsLFxuICogICAgICAgIGVuYWJsZUxvYWRpbmdTY3JlZW46IHRydWUsXG4gKiAgICAgICAgbG9hZGluZ1NjcmVlbk1lc3NhZ2U6ICdMb2FkaW5nLi4uJyxcbiAqICAgICAgICB3YWl0Rm9yVG9rZW5Jbk1zOiA1MDAsXG4gKlxuICogICAgfSldLFxuICpcbiAqIC8vIEluamVjdGluZyB0aGUgZGF0ZXBpY2tlciBjb25maWd1cmF0aW9uLlxuICogYGBgdHNcbiAqIEBDb21wb25lbnQoe30pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogIGNvbnN0cnVjdG9yKEBJbmplY3QoaW5qZWN0QXV0aENvbmZpZygpKSBwcml2YXRlIHJlYWRvbmx5IGF1dGhDb25maWc6IEF1dGhDb25maWcpIHt9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IHsgQXV0aERlZmF1bHRDb25maWcsIEF1dGhDb25maWcsIGluamVjdEF1dGhDb25maWcsIHByb3ZpZGVBdXRoQ29uZmlnIH0gPSBjcmVhdGVDb25maWdUb2tlbnMoJ0F1dGgnLCAnQG9keC9hdXRoJywge1xuICBlbnZpcm9ubWVudDogJ3Byb2QnLFxuICByZWRpcmVjdFBhdGg6ICdsb2dpbi9jYWxsYmFjaycsXG4gIGFsbG93ZWRVcmxzOiBbXSxcbiAgdGltZW91dEZhY3RvcjogMC43NSxcbiAgbWF4T2ZmbGluZVRpbWU6IDI0ICogNjAgKiA2MCwgLy8gMSBkYXlcbiAgbG9hZFVzZXJQcm9maWxlOiBmYWxzZSxcbiAgZXJyb3JIYW5kbGVyOiAoZXJyb3IpID0+IHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfSxcbiAgY3JlYXRlSW5pdGlhbHMsXG4gIHJlc29sdmVFbWFpbCxcbiAgcmVzb2x2ZVVzZXJuYW1lLFxuICBwbHVnaW5zOiBbXSxcbiAgZGVmYXVsdEF1dGhvcml6ZWRIYW5kbGVyOiBudWxsLFxuICBlbmFibGVMb2FkaW5nU2NyZWVuOiB0cnVlLFxuICBsb2FkaW5nU2NyZWVuTWVzc2FnZTogbnVsbCxcbiAgd2FpdEZvclRva2VuSW5NczogMTAwMCxcbn0gYXMgQXV0aENvbmZpZyk7XG4iXX0=
@@ -1,51 +0,0 @@
1
- import { NgIf } from '@angular/common';
2
- import { Directive, inject, Input, TemplateRef } from '@angular/core';
3
- import { isString, untilDestroyed } from '@odx/angular/utils';
4
- import { AuthService } from './auth.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- export class AuthDirective {
8
- constructor() {
9
- this.authService = inject(AuthService);
10
- this.ngIfDirective = inject(NgIf, { host: true });
11
- this.takeUntilDestroyed = untilDestroyed();
12
- /**
13
- * The authorization handler or a string representing the handler.
14
- *
15
- * @type {AuthorizedHandler | null | string}
16
- */
17
- this.authorizationHandler = null;
18
- }
19
- /**
20
- * Sets the template to be displayed when the authorization check fails.
21
- *
22
- * @param {TemplateRef<NgIfContext<unknown>>} value - The template reference.
23
- */
24
- // eslint-disable-next-line @angular-eslint/no-input-rename
25
- set elseTemplate(value) {
26
- this.ngIfDirective.ngIfElse = value;
27
- }
28
- ngAfterViewInit() {
29
- this.authService.identityClaims$.pipe(this.takeUntilDestroyed()).subscribe(() => {
30
- const handler = isString(this.authorizationHandler) ? null : this.authorizationHandler;
31
- this.ngIfDirective.ngIf = this.authService.isAuthorized(handler);
32
- });
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AuthDirective, isStandalone: true, selector: "ng-template[odxAuth]", inputs: { authorizationHandler: ["odxAuth", "authorizationHandler"], elseTemplate: ["odxAuthElse", "elseTemplate"] }, hostDirectives: [{ directive: i1.NgIf }], ngImport: i0 }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthDirective, decorators: [{
38
- type: Directive,
39
- args: [{
40
- standalone: true,
41
- selector: 'ng-template[odxAuth]',
42
- hostDirectives: [NgIf],
43
- }]
44
- }], propDecorators: { authorizationHandler: [{
45
- type: Input,
46
- args: ['odxAuth']
47
- }], elseTemplate: [{
48
- type: Input,
49
- args: ['odxAuthElse']
50
- }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFlLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVE3QyxNQUFNLE9BQU8sYUFBYTtJQUwxQjtRQU1tQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3Qyx1QkFBa0IsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUV2RDs7OztXQUlHO1FBRUkseUJBQW9CLEdBQXVDLElBQUksQ0FBQztLQW1CeEU7SUFqQkM7Ozs7T0FJRztJQUNILDJEQUEyRDtJQUMzRCxJQUNXLFlBQVksQ0FBQyxLQUF3QztRQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ3ZGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0E3QlUsYUFBYTttR0FBYixhQUFhOzs0RkFBYixhQUFhO2tCQUx6QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUM7aUJBQ3ZCOzhCQVlRLG9CQUFvQjtzQkFEMUIsS0FBSzt1QkFBQyxTQUFTO2dCQVVMLFlBQVk7c0JBRHRCLEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYsIE5nSWZDb250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzU3RyaW5nLCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhvcml6ZWRIYW5kbGVyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtvZHhBdXRoXScsXG4gIGhvc3REaXJlY3RpdmVzOiBbTmdJZl0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdJZkRpcmVjdGl2ZSA9IGluamVjdChOZ0lmLCB7IGhvc3Q6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcblxuICAvKipcbiAgICogVGhlIGF1dGhvcml6YXRpb24gaGFuZGxlciBvciBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGhhbmRsZXIuXG4gICAqXG4gICAqIEB0eXBlIHtBdXRob3JpemVkSGFuZGxlciB8IG51bGwgfCBzdHJpbmd9XG4gICAqL1xuICBASW5wdXQoJ29keEF1dGgnKVxuICBwdWJsaWMgYXV0aG9yaXphdGlvbkhhbmRsZXI/OiBBdXRob3JpemVkSGFuZGxlciB8IG51bGwgfCBzdHJpbmcgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0ZW1wbGF0ZSB0byBiZSBkaXNwbGF5ZWQgd2hlbiB0aGUgYXV0aG9yaXphdGlvbiBjaGVjayBmYWlscy5cbiAgICpcbiAgICogQHBhcmFtIHtUZW1wbGF0ZVJlZjxOZ0lmQ29udGV4dDx1bmtub3duPj59IHZhbHVlIC0gVGhlIHRlbXBsYXRlIHJlZmVyZW5jZS5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnb2R4QXV0aEVsc2UnKVxuICBwdWJsaWMgc2V0IGVsc2VUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8TmdJZkNvbnRleHQ8dW5rbm93bj4+KSB7XG4gICAgdGhpcy5uZ0lmRGlyZWN0aXZlLm5nSWZFbHNlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aFNlcnZpY2UuaWRlbnRpdHlDbGFpbXMkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSBpc1N0cmluZyh0aGlzLmF1dGhvcml6YXRpb25IYW5kbGVyKSA/IG51bGwgOiB0aGlzLmF1dGhvcml6YXRpb25IYW5kbGVyO1xuICAgICAgdGhpcy5uZ0lmRGlyZWN0aXZlLm5nSWYgPSB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZChoYW5kbGVyKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,44 +0,0 @@
1
- import { inject } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { WindowRef } from '@odx/angular';
4
- import { isString } from '@odx/angular/utils';
5
- import { EMPTY, of, switchMap, take, tap } from 'rxjs';
6
- import { AuthService } from './auth.service';
7
- /**
8
- * Guard function to protect routes from unauthorized access.
9
- *
10
- * @param {AuthorizedHandler} [authorizedHandler] - Optional handler to check if the user is authorized.
11
- * @param {string | any[]} [redirectTo] - Optional URL or route to redirect unauthorized users to. Can be a string or an array of strings.
12
- * @param {boolean} [isExternal=false] - Optional flag to indicate if the redirection should be external. Defaults to false.
13
- * @returns {CanActivateFn} A function that implements the CanActivateFn interface.
14
- */
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- export function authGuard(authorizedHandler, redirectTo, isExternal = false) {
17
- return (_, state) => {
18
- const authService = inject(AuthService);
19
- const windowRef = inject(WindowRef);
20
- const router = inject(Router, { optional: true });
21
- return authService.isAuthenticated$.pipe(switchMap((isAuthenticated) => {
22
- if (!isAuthenticated) {
23
- authService.signIn(state.url);
24
- return EMPTY;
25
- }
26
- return of(authService.isAuthorized(authorizedHandler));
27
- }), tap((isAuthorized) => {
28
- if (isAuthorized || !router)
29
- return;
30
- if (isString(redirectTo)) {
31
- if (isExternal) {
32
- windowRef.location.assign(redirectTo);
33
- }
34
- else {
35
- router.navigateByUrl(redirectTo);
36
- }
37
- }
38
- else if (Array.isArray(redirectTo)) {
39
- router.navigate(redirectTo);
40
- }
41
- }), take(1));
42
- };
43
- }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9zcmMvbGliL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3Qzs7Ozs7OztHQU9HO0FBQ0gsOERBQThEO0FBQzlELE1BQU0sVUFBVSxTQUFTLENBQUMsaUJBQXFDLEVBQUUsVUFBMkIsRUFBRSxVQUFVLEdBQUcsS0FBSztJQUM5RyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWxELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDdEMsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFOUIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxZQUFZLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFDcEMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDZixTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25DLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgRU1QVFksIG9mLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBdXRob3JpemVkSGFuZGxlciB9IGZyb20gJy4vbW9kZWxzJztcblxuLyoqXG4gKiBHdWFyZCBmdW5jdGlvbiB0byBwcm90ZWN0IHJvdXRlcyBmcm9tIHVuYXV0aG9yaXplZCBhY2Nlc3MuXG4gKlxuICogQHBhcmFtIHtBdXRob3JpemVkSGFuZGxlcn0gW2F1dGhvcml6ZWRIYW5kbGVyXSAtIE9wdGlvbmFsIGhhbmRsZXIgdG8gY2hlY2sgaWYgdGhlIHVzZXIgaXMgYXV0aG9yaXplZC5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgYW55W119IFtyZWRpcmVjdFRvXSAtIE9wdGlvbmFsIFVSTCBvciByb3V0ZSB0byByZWRpcmVjdCB1bmF1dGhvcml6ZWQgdXNlcnMgdG8uIENhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNFeHRlcm5hbD1mYWxzZV0gLSBPcHRpb25hbCBmbGFnIHRvIGluZGljYXRlIGlmIHRoZSByZWRpcmVjdGlvbiBzaG91bGQgYmUgZXh0ZXJuYWwuIERlZmF1bHRzIHRvIGZhbHNlLlxuICogQHJldHVybnMge0NhbkFjdGl2YXRlRm59IEEgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZSBDYW5BY3RpdmF0ZUZuIGludGVyZmFjZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBhdXRoR3VhcmQoYXV0aG9yaXplZEhhbmRsZXI/OiBBdXRob3JpemVkSGFuZGxlciwgcmVkaXJlY3RUbz86IGFueVtdIHwgc3RyaW5nLCBpc0V4dGVybmFsID0gZmFsc2UpOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuIChfLCBzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgICBjb25zdCB3aW5kb3dSZWYgPSBpbmplY3QoV2luZG93UmVmKTtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaXNBdXRoZW50aWNhdGVkKSA9PiB7XG4gICAgICAgIGlmICghaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgYXV0aFNlcnZpY2Uuc2lnbkluKHN0YXRlLnVybCk7XG5cbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKGF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZChhdXRob3JpemVkSGFuZGxlcikpO1xuICAgICAgfSksXG4gICAgICB0YXAoKGlzQXV0aG9yaXplZCkgPT4ge1xuICAgICAgICBpZiAoaXNBdXRob3JpemVkIHx8ICFyb3V0ZXIpIHJldHVybjtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHJlZGlyZWN0VG8pKSB7XG4gICAgICAgICAgaWYgKGlzRXh0ZXJuYWwpIHtcbiAgICAgICAgICAgIHdpbmRvd1JlZi5sb2NhdGlvbi5hc3NpZ24ocmVkaXJlY3RUbyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJlZGlyZWN0VG8pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlZGlyZWN0VG8pKSB7XG4gICAgICAgICAgcm91dGVyLm5hdmlnYXRlKHJlZGlyZWN0VG8pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
@@ -1,13 +0,0 @@
1
- export default {
2
- en: {
3
- userProfileLink: 'My profile',
4
- signInButtonText: 'Sign in',
5
- signOutButtonText: 'Sign out',
6
- },
7
- de: {
8
- userProfileLink: 'Mein Profil',
9
- signInButtonText: 'Einloggen',
10
- signOutButtonText: 'Ausloggen',
11
- },
12
- };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvYXV0aC5pMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGVBQWU7SUFDYixFQUFFLEVBQUU7UUFDRixlQUFlLEVBQUUsWUFBWTtRQUM3QixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLGlCQUFpQixFQUFFLFVBQVU7S0FDOUI7SUFDRCxFQUFFLEVBQUU7UUFDRixlQUFlLEVBQUUsYUFBYTtRQUM5QixnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLGlCQUFpQixFQUFFLFdBQVc7S0FDL0I7Q0FDbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0aW9uT2JqZWN0IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsL3RyYW5zbGF0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZW46IHtcbiAgICB1c2VyUHJvZmlsZUxpbms6ICdNeSBwcm9maWxlJyxcbiAgICBzaWduSW5CdXR0b25UZXh0OiAnU2lnbiBpbicsXG4gICAgc2lnbk91dEJ1dHRvblRleHQ6ICdTaWduIG91dCcsXG4gIH0sXG4gIGRlOiB7XG4gICAgdXNlclByb2ZpbGVMaW5rOiAnTWVpbiBQcm9maWwnLFxuICAgIHNpZ25JbkJ1dHRvblRleHQ6ICdFaW5sb2dnZW4nLFxuICAgIHNpZ25PdXRCdXR0b25UZXh0OiAnQXVzbG9nZ2VuJyxcbiAgfSxcbn0gYXMgVHJhbnNsYXRpb25PYmplY3Q7XG4iXX0=
@@ -1,23 +0,0 @@
1
- import { HttpContextToken } from '@angular/common/http';
2
- import { inject } from '@angular/core';
3
- import { matchUrl } from '@odx/angular/utils';
4
- import { mergeMap } from 'rxjs';
5
- import { injectAuthConfig } from './auth.config';
6
- import { AuthService } from './auth.service';
7
- export const requireAuthentication = new HttpContextToken(() => false);
8
- /**
9
- * Interceptor to handle authentication for HTTP requests.
10
- *
11
- * This interceptor checks if the request URL is allowed or if the request requires authentication.
12
- * If the URL is not allowed and the request does not require authentication, it simply forwards the request.
13
- * Otherwise, it prepares the authentication request using the AuthService.
14
- */
15
- export const authInterceptor = (req, next) => {
16
- const { allowedUrls, requireSignInForRequests } = injectAuthConfig();
17
- const isUrlAllowed = allowedUrls.some((allowedUrl) => matchUrl(req.url, allowedUrl));
18
- if (!isUrlAllowed && !req.context.get(requireAuthentication)) {
19
- return next(req);
20
- }
21
- return inject(AuthService).prepareAuthRequest$(req, requireSignInForRequests).pipe(mergeMap(next));
22
- };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9zcmMvbGliL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGdCQUFnQixDQUFVLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRWhGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBc0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDOUQsTUFBTSxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDckUsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNyRixJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENvbnRleHRUb2tlbiwgSHR0cEludGVyY2VwdG9yRm4gfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hdGNoVXJsIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IG1lcmdlTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpbmplY3RBdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IHJlcXVpcmVBdXRoZW50aWNhdGlvbiA9IG5ldyBIdHRwQ29udGV4dFRva2VuPGJvb2xlYW4+KCgpID0+IGZhbHNlKTtcblxuLyoqXG4gKiBJbnRlcmNlcHRvciB0byBoYW5kbGUgYXV0aGVudGljYXRpb24gZm9yIEhUVFAgcmVxdWVzdHMuXG4gKlxuICogVGhpcyBpbnRlcmNlcHRvciBjaGVja3MgaWYgdGhlIHJlcXVlc3QgVVJMIGlzIGFsbG93ZWQgb3IgaWYgdGhlIHJlcXVlc3QgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uXG4gKiBJZiB0aGUgVVJMIGlzIG5vdCBhbGxvd2VkIGFuZCB0aGUgcmVxdWVzdCBkb2VzIG5vdCByZXF1aXJlIGF1dGhlbnRpY2F0aW9uLCBpdCBzaW1wbHkgZm9yd2FyZHMgdGhlIHJlcXVlc3QuXG4gKiBPdGhlcndpc2UsIGl0IHByZXBhcmVzIHRoZSBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IHVzaW5nIHRoZSBBdXRoU2VydmljZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGF1dGhJbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yRm4gPSAocmVxLCBuZXh0KSA9PiB7XG4gIGNvbnN0IHsgYWxsb3dlZFVybHMsIHJlcXVpcmVTaWduSW5Gb3JSZXF1ZXN0cyB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBjb25zdCBpc1VybEFsbG93ZWQgPSBhbGxvd2VkVXJscy5zb21lKChhbGxvd2VkVXJsKSA9PiBtYXRjaFVybChyZXEudXJsLCBhbGxvd2VkVXJsKSk7XG4gIGlmICghaXNVcmxBbGxvd2VkICYmICFyZXEuY29udGV4dC5nZXQocmVxdWlyZUF1dGhlbnRpY2F0aW9uKSkge1xuICAgIHJldHVybiBuZXh0KHJlcSk7XG4gIH1cblxuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5wcmVwYXJlQXV0aFJlcXVlc3QkKHJlcSwgcmVxdWlyZVNpZ25JbkZvclJlcXVlc3RzKS5waXBlKG1lcmdlTWFwKG5leHQpKTtcbn07XG4iXX0=
@@ -1,3 +0,0 @@
1
- import { Logger } from '@odx/angular/internal';
2
- export default new Logger('@odx/auth');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLmxvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0MsZUFBZSxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBMb2dnZXIoJ0BvZHgvYXV0aCcpO1xuIl19
@@ -1,19 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { AuthComponent } from './auth.component';
3
- import { AuthDirective } from './auth.directive';
4
- import { SignInDirective, SignOutDirective } from './directives';
5
- import * as i0 from "@angular/core";
6
- const modules = [AuthComponent, AuthDirective, SignInDirective, SignOutDirective];
7
- export class AuthModule {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: AuthModule, imports: [AuthComponent, AuthDirective, SignInDirective, SignOutDirective], exports: [AuthComponent, AuthDirective, SignInDirective, SignOutDirective] }); }
10
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthModule, imports: [AuthComponent] }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthModule, decorators: [{
13
- type: NgModule,
14
- args: [{
15
- imports: [...modules],
16
- exports: [...modules],
17
- }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFakUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBTWxGLE1BQU0sT0FBTyxVQUFVOytHQUFWLFVBQVU7Z0hBQVYsVUFBVSxZQU5OLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixhQUEvRCxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0I7Z0hBTW5FLFVBQVUsWUFOTixhQUFhOzs0RkFNakIsVUFBVTtrQkFKdEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztvQkFDckIsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhDb21wb25lbnQgfSBmcm9tICcuL2F1dGguY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhEaXJlY3RpdmUgfSBmcm9tICcuL2F1dGguZGlyZWN0aXZlJztcbmltcG9ydCB7IFNpZ25JbkRpcmVjdGl2ZSwgU2lnbk91dERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5cbmNvbnN0IG1vZHVsZXMgPSBbQXV0aENvbXBvbmVudCwgQXV0aERpcmVjdGl2ZSwgU2lnbkluRGlyZWN0aXZlLCBTaWduT3V0RGlyZWN0aXZlXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogWy4uLm1vZHVsZXNdLFxuICBleHBvcnRzOiBbLi4ubW9kdWxlc10sXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhNb2R1bGUge31cbiJdfQ==