imng-oidc-client 4.102.10

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 (62) hide show
  1. package/README.md +50 -0
  2. package/esm2020/imng-oidc-client.mjs +5 -0
  3. package/esm2020/index.mjs +24 -0
  4. package/esm2020/lib/+state/oidc-user.facade.mjs +28 -0
  5. package/esm2020/lib/+state/oidc-user.selectors.mjs +13 -0
  6. package/esm2020/lib/+state/oidc.actions.mjs +37 -0
  7. package/esm2020/lib/+state/oidc.effects.mjs +66 -0
  8. package/esm2020/lib/+state/oidc.facade.mjs +136 -0
  9. package/esm2020/lib/+state/oidc.reducer.mjs +93 -0
  10. package/esm2020/lib/+state/oidc.selectors.mjs +40 -0
  11. package/esm2020/lib/components/access-denied.component.mjs +14 -0
  12. package/esm2020/lib/components/logout-success.component.mjs +18 -0
  13. package/esm2020/lib/img-oidc-client-routing.module.mjs +44 -0
  14. package/esm2020/lib/imng-oidc-client.module.mjs +96 -0
  15. package/esm2020/lib/models/arguments.model.mjs +2 -0
  16. package/esm2020/lib/models/constants.mjs +17 -0
  17. package/esm2020/lib/models/oidc-client-config.mjs +3 -0
  18. package/esm2020/lib/models/oidc-library-config.mjs +3 -0
  19. package/esm2020/lib/models/oidc-user-profile.mjs +2 -0
  20. package/esm2020/lib/models/oidc-user.mjs +2 -0
  21. package/esm2020/lib/services/auth-guard.mjs +40 -0
  22. package/esm2020/lib/services/oidc.service.mjs +166 -0
  23. package/esm2020/lib/services/permissions.guard.mjs +22 -0
  24. package/esm2020/lib/services/token-interceptor.service.mjs +35 -0
  25. package/esm2020/lib/support/support.component.mjs +85 -0
  26. package/esm2020/lib/util/jwt-decoder.mjs +11 -0
  27. package/esm2020/lib/util/oidc-client-configurator.mjs +24 -0
  28. package/fesm2015/imng-oidc-client.mjs +844 -0
  29. package/fesm2015/imng-oidc-client.mjs.map +1 -0
  30. package/fesm2020/imng-oidc-client.mjs +907 -0
  31. package/fesm2020/imng-oidc-client.mjs.map +1 -0
  32. package/imng-oidc-client.d.ts +5 -0
  33. package/index.d.ts +23 -0
  34. package/lib/+state/oidc-user.facade.d.ts +16 -0
  35. package/lib/+state/oidc-user.selectors.d.ts +7 -0
  36. package/lib/+state/oidc.actions.d.ts +72 -0
  37. package/lib/+state/oidc.effects.d.ts +58 -0
  38. package/lib/+state/oidc.facade.d.ts +56 -0
  39. package/lib/+state/oidc.reducer.d.ts +22 -0
  40. package/lib/+state/oidc.selectors.d.ts +20 -0
  41. package/lib/components/access-denied.component.d.ts +5 -0
  42. package/lib/components/logout-success.component.d.ts +5 -0
  43. package/lib/img-oidc-client-routing.module.d.ts +12 -0
  44. package/lib/imng-oidc-client.module.d.ts +17 -0
  45. package/lib/models/arguments.model.d.ts +21 -0
  46. package/lib/models/constants.d.ts +14 -0
  47. package/lib/models/oidc-client-config.d.ts +12 -0
  48. package/lib/models/oidc-library-config.d.ts +12 -0
  49. package/lib/models/oidc-user-profile.d.ts +4 -0
  50. package/lib/models/oidc-user.d.ts +15 -0
  51. package/lib/services/auth-guard.d.ts +14 -0
  52. package/lib/services/oidc.service.d.ts +37 -0
  53. package/lib/services/permissions.guard.d.ts +12 -0
  54. package/lib/services/token-interceptor.service.d.ts +12 -0
  55. package/lib/support/support.component.d.ts +15 -0
  56. package/lib/util/jwt-decoder.d.ts +1 -0
  57. package/lib/util/oidc-client-configurator.d.ts +3 -0
  58. package/package.json +54 -0
  59. package/src/assets/callback.html +44 -0
  60. package/src/assets/oidc-client.rsa256.slim.min.js +3 -0
  61. package/src/assets/renew-callback.html +18 -0
  62. package/src/assets/signout-callback.html +29 -0
@@ -0,0 +1,844 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, PLATFORM_ID, Injectable, Inject, Component, NgModule } from '@angular/core';
3
+ import * as i3 from '@angular/common';
4
+ import { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';
5
+ import { switchMap, filter, take, map, tap, catchError, concatMap, first, mergeMap } from 'rxjs/operators';
6
+ import * as i1$1 from '@ngrx/store';
7
+ import { createFeatureSelector, createSelector, createAction, createReducer, on, Store, StoreModule } from '@ngrx/store';
8
+ import { createPayloadAction } from 'imng-ngrx-utils';
9
+ import { Log, UserManager, OidcClient } from 'oidc-client';
10
+ import { from, of, throwError } from 'rxjs';
11
+ import * as i1 from '@angular/common/http';
12
+ import { HttpErrorResponse, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
13
+ import { isNullOrUndefined } from 'imng-nrsrx-client-utils';
14
+ import * as i1$2 from '@ngrx/effects';
15
+ import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
16
+ import * as i3$1 from '@angular/router';
17
+ import { RouterModule } from '@angular/router';
18
+
19
+ // State Selectors
20
+ const selectOidcState = createFeatureSelector('oidc');
21
+ const getOidcLoading = createSelector(selectOidcState, (state) => state.loading);
22
+ const getOidcIdentity = createSelector(selectOidcState, (state) => state.identity);
23
+ const getAccessToken = createSelector(getOidcIdentity, (user) => (user || { access_token: undefined }).access_token);
24
+ const isIdentityExpiring = createSelector(selectOidcState, (state) => state.expiring);
25
+ const isIdentityExpired = createSelector(selectOidcState, (state) => state.expired);
26
+ const isLoggedIn = createSelector(selectOidcState, (state) => state.loggedIn);
27
+ // errors
28
+ // eslint-disable-next-line @typescript-eslint/ban-types
29
+ const selectOidcErrorState = createSelector(selectOidcState, (state) => state.errors);
30
+ // eslint-disable-next-line @typescript-eslint/ban-types
31
+ const hasErrors = createSelector(selectOidcErrorState, (state) => !!state.httpError || !!state.signInError || !!state.silentRenewError);
32
+ const getSignInError = createSelector(selectOidcErrorState, (errors) => errors.signInError);
33
+ const getSilentRenewError = createSelector(selectOidcErrorState, (errors) => errors.silentRenewError);
34
+ const getHttpError = createSelector(selectOidcErrorState, (errors) => errors.httpError);
35
+ const getPermissions$1 = createSelector(selectOidcState, (state) => state.permissions);
36
+ const getAudiences = createSelector(selectOidcState, (state) => state.audiences);
37
+ const getExpiresAt = createSelector(getOidcIdentity, (state) => (state === null || state === void 0 ? void 0 : state.expires_at) ? new Date(state.expires_at * 1000) : null //NOSONAR
38
+ );
39
+ const getUserMetadata = createSelector(selectOidcState, (state) => state.userMetadata);
40
+ const oidcQuery = {
41
+ getExpiresAt,
42
+ getPermissions: getPermissions$1,
43
+ selectOidcState,
44
+ getOidcLoading,
45
+ getOidcIdentity,
46
+ getAccessToken,
47
+ isIdentityExpiring,
48
+ getSilentRenewError,
49
+ isIdentityExpired,
50
+ isLoggedIn,
51
+ getSignInError,
52
+ getHttpError,
53
+ hasErrors,
54
+ getAudiences,
55
+ getUserMetadata,
56
+ };
57
+
58
+ var OidcEvent;
59
+ (function (OidcEvent) {
60
+ OidcEvent["AccessTokenExpired"] = "addAccessTokenExpired";
61
+ OidcEvent["AccessTokenExpiring"] = "addAccessTokenExpiring";
62
+ OidcEvent["SilentRenewError"] = "AddSilentRenewError";
63
+ OidcEvent["UserLoaded"] = "addUserLoaded";
64
+ OidcEvent["UserUnloaded"] = "addUserUnloaded";
65
+ OidcEvent["UserSignedOut"] = "addUserSignedOut";
66
+ OidcEvent["UserSessionChanged"] = "addUserSessionChanged";
67
+ })(OidcEvent || (OidcEvent = {}));
68
+ var StorageKeys;
69
+ (function (StorageKeys) {
70
+ StorageKeys["PopupCallback"] = "ngoidc:isPopupCallback";
71
+ StorageKeys["OidcSettings"] = "ngoidc:settings";
72
+ })(StorageKeys || (StorageKeys = {}));
73
+ const ACTION_NO_ACTION = 'NO_ACTION';
74
+
75
+ const clearCurrentEmployee = createAction('[Employees] Clear Current Employee');
76
+ // OIDC COMMANDS
77
+ const getOidcUser = createAction('[Oidc] get oidc user');
78
+ const removeOidcUser = createAction('[Oidc] remove oidc user');
79
+ const userExpired = createAction('[Oidc] user expired');
80
+ const userFound = createPayloadAction('[Oidc] user found');
81
+ const onSessionChanged = createAction('[Oidc] session changed');
82
+ const onAccessTokenExpired = createAction('[Oidc] on access token expired');
83
+ const onAccessTokenExpiring = createAction('[Oidc] user expiring');
84
+ const onUserLoading = createAction('[Oidc] user loading');
85
+ const userDoneLoading = createAction('[Oidc] user done loading');
86
+ const userDoneLoadingError = createPayloadAction('[Oidc] user done loading error');
87
+ const onUserMetadataLoaded = createPayloadAction('[Oidc] on User Metadata Loaded');
88
+ // OIDC EVENTS
89
+ const onSignInPopup = createPayloadAction('[Oidc] on SignInPopup');
90
+ const onSignInRedirect = createPayloadAction('[Oidc] on onSignInRedirect');
91
+ const onSignInSilent = createPayloadAction('[Oidc] on onSignInSilent');
92
+ const onUserLoaded = createPayloadAction('[Oidc] on user loaded');
93
+ const onUserloadError = createPayloadAction('[Oidc] user load error');
94
+ const onUserUnloaded = createAction('[Oidc] on user unloaded');
95
+ const onUserSignedOut = createAction('[Oidc] on user signed out');
96
+ const onSilentRenewError = createPayloadAction('[Oidc] on silent renew error');
97
+ const signInPopup = createPayloadAction('[Oidc] sign in popup');
98
+ const signInRedirect = createPayloadAction('[Oidc] sign in redirect');
99
+ const signInError = createPayloadAction('[Oidc] sign in popup error');
100
+ const signOutPopup = createPayloadAction('[Oidc] sign out popup');
101
+ const signOutPopupError = createPayloadAction('[Oidc] sign out popup error');
102
+ const signOutRedirect = createPayloadAction('[Oidc] sign out redirect');
103
+ const signOutRedirectError = createPayloadAction('[Oidc] sign out redirect error');
104
+ const signInSilent = createPayloadAction('[Oidc] sign in silent');
105
+ const oidcError = createPayloadAction('[Oidc] error');
106
+ // HTTP
107
+ const setHttpError = createPayloadAction('[HTTP] Set Http Error');
108
+ const clearErrors = createAction('[HTTP] Clear Errors');
109
+
110
+ const OIDC_LIBRARY_CONFIG = new InjectionToken('OIDC_LIBRARY_CONFIG');
111
+
112
+ /* eslint-disable @typescript-eslint/no-explicit-any */
113
+ class OidcService {
114
+ constructor(oidcLibraryConfig,
115
+ // eslint-disable-next-line @typescript-eslint/ban-types
116
+ platformId, httpClient) {
117
+ this.oidcLibraryConfig = oidcLibraryConfig;
118
+ this.platformId = platformId;
119
+ this.httpClient = httpClient;
120
+ const logSettings = this.oidcLibraryConfig.log;
121
+ let clientSettings = this.oidcLibraryConfig.oidc_config;
122
+ if (logSettings) {
123
+ Log.level = logSettings.level;
124
+ Log.logger = logSettings.logger;
125
+ }
126
+ if ((clientSettings === null || clientSettings === void 0 ? void 0 : clientSettings.userStore) != null) {
127
+ clientSettings = Object.assign(Object.assign({}, clientSettings), { userStore: clientSettings.userStore });
128
+ }
129
+ this._userManagerSettings = Object.assign({}, clientSettings);
130
+ this.OidcUserManager = new UserManager(clientSettings);
131
+ this._oidcClient = new OidcClient(clientSettings);
132
+ }
133
+ getUserMetadata() {
134
+ var _a;
135
+ return this.httpClient
136
+ .get(((_a = this.oidcLibraryConfig.oidc_config) === null || _a === void 0 ? void 0 : _a.metadataUrl) || '')
137
+ .pipe(switchMap((openidConfig) => this.httpClient.get(openidConfig.userinfo_endpoint)));
138
+ }
139
+ getUserManager() {
140
+ return this.OidcUserManager;
141
+ }
142
+ getOidcClient() {
143
+ return this._oidcClient;
144
+ }
145
+ getOidcUser() {
146
+ return from(this.OidcUserManager.getUser());
147
+ }
148
+ removeOidcUser() {
149
+ return from(this.OidcUserManager.removeUser());
150
+ }
151
+ registerOidcEvent(event, callback) {
152
+ switch (event) {
153
+ case OidcEvent.AccessTokenExpired:
154
+ this.OidcUserManager.events.addAccessTokenExpired(callback);
155
+ break;
156
+ case OidcEvent.AccessTokenExpiring:
157
+ this.OidcUserManager.events.addAccessTokenExpiring(callback);
158
+ break;
159
+ case OidcEvent.SilentRenewError:
160
+ this.OidcUserManager.events.addSilentRenewError(callback);
161
+ break;
162
+ case OidcEvent.UserLoaded:
163
+ this.OidcUserManager.events.addUserLoaded(callback);
164
+ break;
165
+ case OidcEvent.UserSessionChanged:
166
+ this.OidcUserManager.events.addUserSessionChanged(callback);
167
+ break;
168
+ case OidcEvent.UserSignedOut:
169
+ this.OidcUserManager.events.addUserSignedOut(callback);
170
+ break;
171
+ case OidcEvent.UserUnloaded:
172
+ this.OidcUserManager.events.addUserUnloaded(callback);
173
+ break;
174
+ default:
175
+ break;
176
+ }
177
+ }
178
+ removeOidcEvent(event, callback) {
179
+ switch (event) {
180
+ case OidcEvent.AccessTokenExpired:
181
+ this.OidcUserManager.events.removeAccessTokenExpired(callback);
182
+ break;
183
+ case OidcEvent.AccessTokenExpiring:
184
+ this.OidcUserManager.events.removeAccessTokenExpiring(callback);
185
+ break;
186
+ case OidcEvent.SilentRenewError:
187
+ this.OidcUserManager.events.removeSilentRenewError(callback);
188
+ break;
189
+ case OidcEvent.UserLoaded:
190
+ this.OidcUserManager.events.removeUserLoaded(callback);
191
+ break;
192
+ case OidcEvent.UserSessionChanged:
193
+ this.OidcUserManager.events.removeUserSessionChanged(callback);
194
+ break;
195
+ case OidcEvent.UserSignedOut:
196
+ this.OidcUserManager.events.removeUserSignedOut(callback);
197
+ break;
198
+ case OidcEvent.UserUnloaded:
199
+ this.OidcUserManager.events.removeUserUnloaded(callback);
200
+ break;
201
+ default:
202
+ break;
203
+ }
204
+ }
205
+ signInPopup(args) {
206
+ this.setCallbackInformation(true);
207
+ return from(this.OidcUserManager.signinPopup(Object.assign({}, args)));
208
+ }
209
+ signInRedirect(args) {
210
+ this.setCallbackInformation(false);
211
+ return from(this.OidcUserManager.signinRedirect(Object.assign({}, args)));
212
+ }
213
+ signOutPopup(args) {
214
+ this.setCallbackInformation(true);
215
+ return from(this.OidcUserManager.signoutPopup(Object.assign({}, args)));
216
+ }
217
+ signOutRedirect(args) {
218
+ this.setCallbackInformation(false);
219
+ return from(this.OidcUserManager.signoutRedirect(Object.assign({}, args)));
220
+ }
221
+ signInSilent(args) {
222
+ return from(this.OidcUserManager.signinSilent(Object.assign({}, args)));
223
+ }
224
+ signinPopupCallback() {
225
+ return from(this.OidcUserManager.signinPopupCallback());
226
+ }
227
+ signinRedirectCallback() {
228
+ return from(this.OidcUserManager.signinRedirectCallback());
229
+ }
230
+ signoutPopupCallback() {
231
+ return from(this.OidcUserManager.signoutPopupCallback());
232
+ }
233
+ signoutRedirectCallback() {
234
+ return from(this.OidcUserManager.signoutRedirectCallback());
235
+ }
236
+ getSigninUrl(args) {
237
+ return from(this.OidcUserManager.createSigninRequest(args));
238
+ }
239
+ getSignoutUrl(args) {
240
+ return from(this.OidcUserManager.createSignoutRequest(args));
241
+ }
242
+ setCallbackInformation(isPopupCallback) {
243
+ // is browser and useCallbackFlag set to true or defaults to true
244
+ if (isPlatformBrowser(this.platformId) &&
245
+ this.oidcLibraryConfig.useCallbackFlag) {
246
+ localStorage.setItem(StorageKeys.PopupCallback, `${isPopupCallback}`);
247
+ localStorage.setItem(StorageKeys.OidcSettings, JSON.stringify(this._userManagerSettings));
248
+ }
249
+ }
250
+ }
251
+ OidcService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcService, deps: [{ token: OIDC_LIBRARY_CONFIG }, { token: PLATFORM_ID }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
252
+ OidcService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcService, providedIn: 'root' });
253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcService, decorators: [{
254
+ type: Injectable,
255
+ args: [{
256
+ providedIn: 'root',
257
+ }]
258
+ }], ctorParameters: function () {
259
+ return [{ type: undefined, decorators: [{
260
+ type: Inject,
261
+ args: [OIDC_LIBRARY_CONFIG]
262
+ }] }, { type: Object, decorators: [{
263
+ type: Inject,
264
+ args: [PLATFORM_ID]
265
+ }] }, { type: i1.HttpClient }];
266
+ } });
267
+
268
+ /* eslint-disable @typescript-eslint/no-explicit-any */
269
+ class OidcFacade {
270
+ constructor(store, oidcService) {
271
+ this.store = store;
272
+ this.oidcService = oidcService;
273
+ this.loading$ = this.store.select(oidcQuery.getOidcLoading);
274
+ this.expiring$ = this.store.select(oidcQuery.isIdentityExpiring);
275
+ this.expired$ = this.store.select(oidcQuery.isIdentityExpired);
276
+ this.loggedIn$ = this.store.select(oidcQuery.isLoggedIn);
277
+ this.identity$ = this.store.select(oidcQuery.getOidcIdentity);
278
+ this.accessToken$ = this.store.select(oidcQuery.getAccessToken);
279
+ this.httpError$ = this.store.select(oidcQuery.getHttpError);
280
+ this.signInError$ = this.store.select(oidcQuery.getSignInError);
281
+ this.silentRenewError$ = this.store.select(oidcQuery.getSilentRenewError);
282
+ this.hasErrors$ = this.store.select(oidcQuery.hasErrors);
283
+ this.permissions$ = this.store.select(oidcQuery.getPermissions);
284
+ this.audiences$ = this.store.select(oidcQuery.getAudiences);
285
+ this.expiresAt$ = this.store.select(oidcQuery.getExpiresAt);
286
+ this.userMetadata$ = this.store.select(oidcQuery.getUserMetadata);
287
+ this.registerDefaultEvents();
288
+ }
289
+ // default bindings to events
290
+ addUserUnLoaded() {
291
+ if (this.store) {
292
+ this.store.dispatch(onUserUnloaded());
293
+ }
294
+ }
295
+ accessTokenExpired() {
296
+ if (this.store) {
297
+ this.store.dispatch(onAccessTokenExpired());
298
+ }
299
+ else {
300
+ sessionStorage.clear();
301
+ localStorage.clear();
302
+ window.location.reload();
303
+ }
304
+ }
305
+ accessTokenExpiring() {
306
+ if (this.store) {
307
+ this.store.dispatch(onAccessTokenExpiring());
308
+ }
309
+ else {
310
+ this.accessTokenExpired();
311
+ }
312
+ }
313
+ addSilentRenewError(...ev) {
314
+ this.store.dispatch(onSilentRenewError(ev[0]));
315
+ }
316
+ addUserLoaded(...ev) {
317
+ this.store.dispatch(onUserLoaded(ev[0]));
318
+ }
319
+ addUserSignedOut() {
320
+ this.oidcService.removeOidcUser();
321
+ this.store.dispatch(onUserSignedOut());
322
+ }
323
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
324
+ addUserSessionChanged() {
325
+ this.store.dispatch(onSessionChanged());
326
+ }
327
+ clearErrors() {
328
+ this.store.dispatch(clearErrors());
329
+ }
330
+ // OIDC Methods
331
+ getOidcUser() {
332
+ this.store.dispatch(getOidcUser());
333
+ }
334
+ removeOidcUser() {
335
+ this.store.dispatch(removeOidcUser());
336
+ }
337
+ getUserManager() {
338
+ return this.oidcService.getUserManager();
339
+ }
340
+ getOidcClient() {
341
+ return this.oidcService.getOidcClient();
342
+ }
343
+ /**
344
+ * Convenient function to wait for loaded.
345
+ */
346
+ waitForAuthenticationLoaded() {
347
+ return this.loading$.pipe(filter((loading) => loading === false), take(1), map(() => true));
348
+ }
349
+ signinPopup(args) {
350
+ this.store.dispatch(signInPopup(args));
351
+ }
352
+ signinRedirect(args) {
353
+ this.store.dispatch(signInRedirect(args));
354
+ }
355
+ signinSilent(args) {
356
+ this.store.dispatch(signInSilent(args));
357
+ }
358
+ signoutPopup(args) {
359
+ this.store.dispatch(signOutPopup(args));
360
+ }
361
+ signoutRedirect(args) {
362
+ this.store.dispatch(signOutRedirect(args));
363
+ }
364
+ getSigninUrl(args) {
365
+ return this.oidcService.getSigninUrl(args);
366
+ }
367
+ getSignoutUrl(args) {
368
+ return this.oidcService.getSignoutUrl(args);
369
+ }
370
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
371
+ registerEvent(event, callback) {
372
+ this.oidcService.registerOidcEvent(event, callback);
373
+ }
374
+ registerDefaultEvents() {
375
+ // add simple loggers
376
+ this.registerEvent(OidcEvent.AccessTokenExpired, this.accessTokenExpired);
377
+ this.registerEvent(OidcEvent.AccessTokenExpiring, this.accessTokenExpiring);
378
+ this.registerEvent(OidcEvent.SilentRenewError, this.addSilentRenewError);
379
+ this.registerEvent(OidcEvent.UserLoaded, this.addUserLoaded);
380
+ this.registerEvent(OidcEvent.UserUnloaded, this.addUserUnLoaded);
381
+ this.registerEvent(OidcEvent.UserSignedOut, this.addUserSignedOut);
382
+ this.registerEvent(OidcEvent.UserSessionChanged, this.addUserSessionChanged);
383
+ }
384
+ }
385
+ OidcFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcFacade, deps: [{ token: i1$1.Store }, { token: OidcService }], target: i0.ɵɵFactoryTarget.Injectable });
386
+ OidcFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcFacade, providedIn: 'root' });
387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcFacade, decorators: [{
388
+ type: Injectable,
389
+ args: [{
390
+ providedIn: 'root',
391
+ }]
392
+ }], ctorParameters: function () { return [{ type: i1$1.Store }, { type: OidcService }]; } });
393
+
394
+ class AuthGuard {
395
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
396
+ constructor(document, oidcFacade) {
397
+ this.document = document;
398
+ this.oidcFacade = oidcFacade;
399
+ this.isLoggedInPipe$ = this.oidcFacade.waitForAuthenticationLoaded().pipe(switchMap(() => this.oidcFacade.loggedIn$), tap(t => {
400
+ if (!t) {
401
+ this.oidcFacade.signinRedirect({
402
+ data: { redirect_url: this.document.location.href }
403
+ });
404
+ }
405
+ }));
406
+ } //NOSONAR
407
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
408
+ canActivate(route, state) {
409
+ return this.isLoggedInPipe$;
410
+ }
411
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
412
+ canActivateChild(childRoute, state) {
413
+ return this.isLoggedInPipe$;
414
+ }
415
+ }
416
+ AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AuthGuard, deps: [{ token: DOCUMENT }, { token: OidcFacade }], target: i0.ɵɵFactoryTarget.Injectable });
417
+ AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AuthGuard, providedIn: 'root' });
418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AuthGuard, decorators: [{
419
+ type: Injectable,
420
+ args: [{
421
+ providedIn: 'root'
422
+ }]
423
+ }], ctorParameters: function () {
424
+ return [{ type: undefined, decorators: [{
425
+ type: Inject,
426
+ args: [DOCUMENT]
427
+ }] }, { type: OidcFacade }];
428
+ } });
429
+
430
+ function oidcConfigurator(oidcClientConfig, document) {
431
+ return {
432
+ oidc_config: {
433
+ authority: oidcClientConfig.authority,
434
+ client_id: oidcClientConfig.client_id,
435
+ extraQueryParams: { audience: oidcClientConfig.audience },
436
+ redirect_uri: `${document.location.origin}/callback.html`,
437
+ response_type: oidcClientConfig.response_type || 'id_token token',
438
+ scope: oidcClientConfig.scope || 'openid profile offline_access email',
439
+ post_logout_redirect_uri: `${document.location.origin}/signout-callback.html`,
440
+ silent_redirect_uri: `${document.location.origin}/renew-callback.html`,
441
+ automaticSilentRenew: isNullOrUndefined(oidcClientConfig.automaticSilentRenew)
442
+ ? true
443
+ : oidcClientConfig.automaticSilentRenew,
444
+ metadataUrl: `${oidcClientConfig.authority}/.well-known/openid-configuration`,
445
+ },
446
+ getUserMetadata: oidcClientConfig.getUserMetadata,
447
+ useCallbackFlag: isNullOrUndefined(oidcClientConfig.useCallbackFlag)
448
+ ? true
449
+ : oidcClientConfig.useCallbackFlag,
450
+ };
451
+ }
452
+
453
+ const OIDC_CLIENT_CONFIG = new InjectionToken('oidc-client-config');
454
+
455
+ const getProfile = createSelector(oidcQuery.getOidcIdentity, (identity) => identity === null || identity === void 0 ? void 0 : identity.profile);
456
+ const getPermissions = createSelector(oidcQuery.selectOidcState, (state) => state === null || state === void 0 ? void 0 : state.permissions);
457
+ const getEmail = createSelector(getProfile, (profile) => profile === null || profile === void 0 ? void 0 : profile.email);
458
+ const getProfilePicture = createSelector(getProfile, (profile) => profile === null || profile === void 0 ? void 0 : profile.picture);
459
+ const OidcUserSelectors = {
460
+ getProfile,
461
+ getEmail,
462
+ getProfilePicture,
463
+ getPermissions,
464
+ };
465
+
466
+ class OidcUserFacade {
467
+ constructor(store) {
468
+ this.store = store;
469
+ this.profile$ = this.store.select(OidcUserSelectors.getProfile);
470
+ this.email$ = this.store.select(OidcUserSelectors.getEmail);
471
+ this.profilePicture$ = this.store.select(OidcUserSelectors.getProfilePicture);
472
+ this.permissions$ = this.store.select(OidcUserSelectors.getPermissions);
473
+ }
474
+ hasPermissions(requiredPermissions) {
475
+ return this.permissions$.pipe(map((t) => -1 <
476
+ requiredPermissions.findIndex((f) => -1 < ((t === null || t === void 0 ? void 0 : t.findIndex((i) => i === f)) || -1))));
477
+ }
478
+ }
479
+ OidcUserFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcUserFacade, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
480
+ OidcUserFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcUserFacade, providedIn: 'root' });
481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcUserFacade, decorators: [{
482
+ type: Injectable,
483
+ args: [{
484
+ providedIn: 'root',
485
+ }]
486
+ }], ctorParameters: function () { return [{ type: i1$1.Store }]; } });
487
+
488
+ class SupportComponent {
489
+ constructor(facade, oidcUserFacade) {
490
+ this.facade = facade;
491
+ this.oidcUserFacade = oidcUserFacade;
492
+ this.profileValue$ = this.oidcUserFacade.profile$.pipe(map((x) => Object.keys(x).map((propertyKey) => ({
493
+ key: propertyKey,
494
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
495
+ value: x[propertyKey], //NOSONAR
496
+ }))));
497
+ }
498
+ }
499
+ SupportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SupportComponent, deps: [{ token: OidcFacade }, { token: OidcUserFacade }], target: i0.ɵɵFactoryTarget.Component });
500
+ SupportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SupportComponent, selector: "imng-support", ngImport: i0, template: `<div class="container pt-5 mt-5">
501
+ <div class="row h3 text-center">
502
+ <div class="col-md-12 text-center">OIDC Support</div>
503
+ </div>
504
+ <div class="row">
505
+ <div class="col-md-3">Audiences</div>
506
+ <div class="col-md-8">
507
+ <span *ngFor="let item of facade.audiences$ | async; last as isLast">
508
+ {{ item }} <br *ngIf="!isLast" />
509
+ </span>
510
+ </div>
511
+ </div>
512
+ <div class="row">
513
+ <div class="col-md-3">Permissions</div>
514
+ <div class="col-md-8">
515
+ <span *ngFor="let item of facade.permissions$ | async; last as isLast">
516
+ {{ item }} <br *ngIf="!isLast" />
517
+ </span>
518
+ </div>
519
+ </div>
520
+ <div class="row">
521
+ <div class="col-md-3">Expires</div>
522
+ <div class="col-md-8">{{ facade.expiresAt$ | async }}</div>
523
+ </div>
524
+ <div class="row" *ngFor="let item of profileValue$ | async">
525
+ <div class="col-md-3">{{ item.key }}</div>
526
+ <div class="col-md-8">{{ item.value }}</div>
527
+ </div>
528
+ </div> `, isInline: true, directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3.AsyncPipe } });
529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SupportComponent, decorators: [{
530
+ type: Component,
531
+ args: [{
532
+ selector: 'imng-support',
533
+ template: `<div class="container pt-5 mt-5">
534
+ <div class="row h3 text-center">
535
+ <div class="col-md-12 text-center">OIDC Support</div>
536
+ </div>
537
+ <div class="row">
538
+ <div class="col-md-3">Audiences</div>
539
+ <div class="col-md-8">
540
+ <span *ngFor="let item of facade.audiences$ | async; last as isLast">
541
+ {{ item }} <br *ngIf="!isLast" />
542
+ </span>
543
+ </div>
544
+ </div>
545
+ <div class="row">
546
+ <div class="col-md-3">Permissions</div>
547
+ <div class="col-md-8">
548
+ <span *ngFor="let item of facade.permissions$ | async; last as isLast">
549
+ {{ item }} <br *ngIf="!isLast" />
550
+ </span>
551
+ </div>
552
+ </div>
553
+ <div class="row">
554
+ <div class="col-md-3">Expires</div>
555
+ <div class="col-md-8">{{ facade.expiresAt$ | async }}</div>
556
+ </div>
557
+ <div class="row" *ngFor="let item of profileValue$ | async">
558
+ <div class="col-md-3">{{ item.key }}</div>
559
+ <div class="col-md-8">{{ item.value }}</div>
560
+ </div>
561
+ </div> `,
562
+ }]
563
+ }], ctorParameters: function () { return [{ type: OidcFacade }, { type: OidcUserFacade }]; } });
564
+
565
+ class AccessDeniedComponent {
566
+ }
567
+ AccessDeniedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AccessDeniedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
568
+ AccessDeniedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: AccessDeniedComponent, selector: "imng-access-denied", ngImport: i0, template: '<div class="p-5 m-5 text-danger">Access denied.</div>', isInline: true });
569
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AccessDeniedComponent, decorators: [{
570
+ type: Component,
571
+ args: [{
572
+ selector: 'imng-access-denied',
573
+ template: '<div class="p-5 m-5 text-danger">Access denied.</div>'
574
+ }]
575
+ }] });
576
+
577
+ class LogoutSuccessComponent {
578
+ }
579
+ LogoutSuccessComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: LogoutSuccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
580
+ LogoutSuccessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: LogoutSuccessComponent, selector: "imng-logout-success", ngImport: i0, template:
581
+ // eslint-disable-next-line max-len
582
+ '<div class="p-5 m-5 text-center">You have successfully logged out.<br/>Please close this browser window to ensure you are completely logged out of the session.</div>', isInline: true });
583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: LogoutSuccessComponent, decorators: [{
584
+ type: Component,
585
+ args: [{
586
+ selector: 'imng-logout-success',
587
+ template:
588
+ // eslint-disable-next-line max-len
589
+ '<div class="p-5 m-5 text-center">You have successfully logged out.<br/>Please close this browser window to ensure you are completely logged out of the session.</div>'
590
+ }]
591
+ }] });
592
+
593
+ const routes = [
594
+ { path: 'support', component: SupportComponent },
595
+ { path: 'access-denied', component: AccessDeniedComponent },
596
+ { path: 'logout', component: LogoutSuccessComponent },
597
+ ];
598
+ class ImngOidcClientRoutingModule {
599
+ }
600
+ ImngOidcClientRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImngOidcClientRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
601
+ ImngOidcClientRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImngOidcClientRoutingModule, imports: [i3$1.RouterModule], exports: [RouterModule] });
602
+ ImngOidcClientRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImngOidcClientRoutingModule, imports: [[RouterModule.forChild(routes)], RouterModule] });
603
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImngOidcClientRoutingModule, decorators: [{
604
+ type: NgModule,
605
+ args: [{
606
+ imports: [RouterModule.forChild(routes)],
607
+ exports: [RouterModule],
608
+ }]
609
+ }] });
610
+ const oidcSupportRoute = {
611
+ path: 'oidc/support',
612
+ component: SupportComponent,
613
+ canActivate: [AuthGuard],
614
+ };
615
+ const oidcAccessDeniedRoute = {
616
+ path: 'oidc/access-denied',
617
+ component: AccessDeniedComponent,
618
+ };
619
+ const oidcLogoutRoute = {
620
+ path: 'oidc/logout',
621
+ component: LogoutSuccessComponent,
622
+ };
623
+ const oidcRoutes = [
624
+ oidcSupportRoute,
625
+ oidcAccessDeniedRoute,
626
+ oidcLogoutRoute,
627
+ ];
628
+
629
+ class OidcEffects {
630
+ constructor(actions$, oidcService, oidcLibraryOptions, router) {
631
+ this.actions$ = actions$;
632
+ this.oidcService = oidcService;
633
+ this.oidcLibraryOptions = oidcLibraryOptions;
634
+ this.router = router;
635
+ this.getOidcUser$ = createEffect(() => this.actions$.pipe(ofType(getOidcUser), switchMap(() => this.oidcService.getOidcUser().pipe(map((userData) => this.makeOidcUserSerializable(userData)), filter((userData) => !!userData), map((userData) => userFound(userData)), catchError((err) => of(userDoneLoadingError(err)))))));
636
+ this.silentRenew$ = createEffect(() => this.actions$.pipe(ofType(userFound), filter((userFound) => {
637
+ var _a;
638
+ // user expired, initiate silent sign-in if configured to automatic
639
+ return (userFound.payload != null &&
640
+ userFound.payload.expired &&
641
+ ((_a = this.oidcLibraryOptions.oidc_config) === null || _a === void 0 ? void 0 : _a.automaticSilentRenew)) ||
642
+ false;
643
+ }), map((userFound) => signInSilent(userFound.payload))));
644
+ this.removeOidcUser$ = createEffect(() => this.actions$.pipe(ofType(removeOidcUser), concatMap(() => this.oidcService.removeOidcUser().pipe(map(() => userDoneLoading()), catchError((err) => of(oidcError(err)))))));
645
+ this.userDoneLoadingNoMetadata$ = createEffect(() => this.actions$.pipe(ofType(userFound), filter(() => !this.oidcLibraryOptions.getUserMetadata), map(() => userDoneLoading())));
646
+ this.userDoneLoadingWithMetadata$ = createEffect(() => this.actions$.pipe(ofType(userFound), filter(() => this.oidcLibraryOptions.getUserMetadata || false), switchMap(() => this.oidcService.getUserMetadata()), map((metadata) => onUserMetadataLoaded(metadata))));
647
+ this.onAccessTokenExpired$ = createEffect(() => this.actions$.pipe(ofType(onAccessTokenExpired), map(() => removeOidcUser())));
648
+ this.signInPopup$ = createEffect(() => this.actions$.pipe(ofType(signInPopup), concatMap((args) => this.oidcService.signInPopup(args.payload).pipe(map((user) => onSignInPopup(this.makeOidcUserSerializable(user))), catchError((err) => of(signInError(err)))))));
649
+ this.signInRedirect$ = createEffect(() => this.actions$.pipe(ofType(signInRedirect), concatMap((args) => this.oidcService.signInRedirect(args.payload).pipe(concatMap(() => this.oidcService.signinRedirectCallback()), map((user) => onSignInRedirect(this.makeOidcUserSerializable(user))), catchError((err) => of(signInError(err)))))));
650
+ this.signInSilent$ = createEffect(() => this.actions$.pipe(ofType(signInSilent), concatMap((args) => this.oidcService.signInSilent(args.payload).pipe(map((user) => onSignInSilent(this.makeOidcUserSerializable(user))), catchError((err) => of(onSilentRenewError(err)))))));
651
+ this.signOutPopup$ = createEffect(() => this.actions$.pipe(ofType(signOutPopup), concatMap((args) => this.oidcService.signOutPopup(args.payload).pipe(map(() => onUserSignedOut()), catchError((err) => of(signOutPopupError(err.message)))))));
652
+ this.signOutRedirect$ = createEffect(() => this.actions$.pipe(ofType(signOutRedirect), concatMap((args) => this.oidcService.signOutRedirect(args.payload).pipe(map(() => onUserSignedOut()), catchError((err) => of(signOutRedirectError(err.message)))))));
653
+ this.onUserSignedOut$ = createEffect(() => this.actions$.pipe(ofType(onUserSignedOut, signOutPopupError, signOutRedirectError), tap(() => {
654
+ localStorage.clear();
655
+ sessionStorage.clear();
656
+ this.router.navigateByUrl(oidcLogoutRoute.path || '');
657
+ })), { dispatch: false });
658
+ }
659
+ ngrxOnInitEffects() {
660
+ return getOidcUser();
661
+ }
662
+ makeOidcUserSerializable(user) {
663
+ if (user === null || user === void 0 ? void 0 : user.toStorageString) {
664
+ user = Object.assign(Object.assign({}, user), { toStorageString: undefined });
665
+ }
666
+ return user;
667
+ }
668
+ }
669
+ OidcEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcEffects, deps: [{ token: i1$2.Actions }, { token: OidcService }, { token: OIDC_LIBRARY_CONFIG }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
670
+ OidcEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcEffects, providedIn: 'root' });
671
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: OidcEffects, decorators: [{
672
+ type: Injectable,
673
+ args: [{
674
+ providedIn: 'root',
675
+ }]
676
+ }], ctorParameters: function () {
677
+ return [{ type: i1$2.Actions }, { type: OidcService }, { type: undefined, decorators: [{
678
+ type: Inject,
679
+ args: [OIDC_LIBRARY_CONFIG]
680
+ }] }, { type: i3$1.Router }];
681
+ } });
682
+
683
+ function jwtDecoder(rawToken) {
684
+ const splits = rawToken === null || rawToken === void 0 ? void 0 : rawToken.split('.');
685
+ if ((splits === null || splits === void 0 ? void 0 : splits.length) > 1) {
686
+ const payload = splits[1];
687
+ return JSON.parse(window.atob(payload));
688
+ }
689
+ else {
690
+ return null;
691
+ }
692
+ }
693
+
694
+ const OIDC_FEATURE_KEY = 'oidc';
695
+ const initialState = {
696
+ audiences: [],
697
+ permissions: [],
698
+ loading: true,
699
+ loggedIn: false,
700
+ expiring: false,
701
+ expired: false,
702
+ errors: {
703
+ silentRenewError: undefined,
704
+ signInError: undefined,
705
+ httpError: undefined,
706
+ },
707
+ };
708
+ const featureReducer = createReducer(initialState, on(getOidcUser, onUserLoading, (state) => (Object.assign(Object.assign({}, state), { loading: true, loggedIn: false }))), on(removeOidcUser, (state) => (Object.assign(Object.assign({}, state), { loading: true, loggedIn: false, identity: undefined }))), on(setHttpError, (state, err) => (Object.assign(Object.assign({}, state), { loading: false, errors: Object.assign(Object.assign({}, state.errors), { httpError: err.payload }) }))), on(onUserMetadataLoaded, (state, userMetadata) => (Object.assign(Object.assign({}, state), { userMetadata: userMetadata.payload, loading: false }))), on(clearErrors, (state) => (Object.assign(Object.assign({}, state), { errors: {} }))), on(userDoneLoading, (state) => (Object.assign(Object.assign({}, state), { loading: false }))), on(onAccessTokenExpiring, (state) => (Object.assign(Object.assign({}, state), { expiring: true }))), on(onAccessTokenExpired, (state) => (Object.assign(Object.assign({}, state), { loggedIn: false, expiring: false, expired: true }))), on(onUserLoaded, (state) => (Object.assign(Object.assign({}, state), { loading: false, expiring: false }))), on(onUserUnloaded, onUserSignedOut, signOutPopupError, signOutRedirectError, (state) => (Object.assign(Object.assign({}, state), { loggedIn: false, identity: undefined, expired: true, expiring: false, userMetadata: undefined }))), on(signOutRedirect, signOutPopup, (state) => (Object.assign(Object.assign({}, state), { identity: undefined, userMetadata: null, loggedIn: false }))), on(userFound, onSignInPopup, onSignInRedirect, onSignInSilent, (state, { payload }) => {
709
+ var _a, _b;
710
+ return (Object.assign(Object.assign({}, state), { identity: payload, loggedIn: true, audiences: payload.access_token
711
+ ? (_a = jwtDecoder(payload.access_token)) === null || _a === void 0 ? void 0 : _a.aud
712
+ : undefined, permissions: (_b = jwtDecoder(payload.access_token)) === null || _b === void 0 ? void 0 : _b.permissions }));
713
+ }), on(userExpired, (state) => (Object.assign(Object.assign({}, state), { loggedIn: false, expiring: false }))), on(onSilentRenewError, (state, err) => (Object.assign(Object.assign({}, state), { loading: false, errors: Object.assign(Object.assign({}, state.errors), { silentRenewError: err.payload }) }))), on(userDoneLoadingError, signInError, (state, err) => (Object.assign(Object.assign({}, state), { loading: false, errors: Object.assign(Object.assign({}, state.errors), { signInError: err.payload }) }))));
714
+ function oidcReducer(state, action) {
715
+ return featureReducer(state, action);
716
+ }
717
+
718
+ class TokenInterceptorService {
719
+ constructor(store) {
720
+ this.store = store;
721
+ }
722
+ intercept(req, next) {
723
+ return this.store.select(oidcQuery.getAccessToken).pipe(first(), mergeMap(accessToken => {
724
+ if (accessToken) {
725
+ req = req.clone({
726
+ setHeaders: { Authorization: `Bearer ${accessToken}` },
727
+ });
728
+ }
729
+ return next.handle(req).pipe(catchError((err) => {
730
+ if (err instanceof HttpErrorResponse) {
731
+ this.store.dispatch(setHttpError(err));
732
+ }
733
+ return throwError(() => err);
734
+ }));
735
+ }));
736
+ }
737
+ }
738
+ TokenInterceptorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: TokenInterceptorService, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
739
+ TokenInterceptorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: TokenInterceptorService });
740
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: TokenInterceptorService, decorators: [{
741
+ type: Injectable
742
+ }], ctorParameters: function () { return [{ type: i1$1.Store }]; } });
743
+
744
+ class ImngOidcClientModule {
745
+ static forRoot(oidc0ptions) {
746
+ return {
747
+ ngModule: ImngOidcClientModule,
748
+ providers: [{ provide: OIDC_CLIENT_CONFIG, useValue: oidc0ptions }],
749
+ };
750
+ }
751
+ }
752
+ ImngOidcClientModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImngOidcClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
753
+ ImngOidcClientModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImngOidcClientModule, declarations: [AccessDeniedComponent,
754
+ SupportComponent,
755
+ LogoutSuccessComponent], imports: [CommonModule,
756
+ HttpClientModule, i1$1.StoreFeatureModule, i1$2.EffectsFeatureModule, ImngOidcClientRoutingModule], exports: [AccessDeniedComponent, SupportComponent, LogoutSuccessComponent] });
757
+ ImngOidcClientModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImngOidcClientModule, providers: [
758
+ {
759
+ provide: OIDC_LIBRARY_CONFIG,
760
+ useFactory: oidcConfigurator,
761
+ deps: [OIDC_CLIENT_CONFIG, DOCUMENT],
762
+ },
763
+ OidcService,
764
+ OidcFacade,
765
+ OidcEffects,
766
+ OidcUserFacade,
767
+ AuthGuard,
768
+ {
769
+ provide: HTTP_INTERCEPTORS,
770
+ useClass: TokenInterceptorService,
771
+ multi: true,
772
+ deps: [Store],
773
+ },
774
+ ], imports: [[
775
+ CommonModule,
776
+ HttpClientModule,
777
+ StoreModule.forFeature(OIDC_FEATURE_KEY, oidcReducer),
778
+ EffectsModule.forFeature([OidcEffects]),
779
+ ImngOidcClientRoutingModule,
780
+ ]] });
781
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImngOidcClientModule, decorators: [{
782
+ type: NgModule,
783
+ args: [{
784
+ declarations: [
785
+ AccessDeniedComponent,
786
+ SupportComponent,
787
+ LogoutSuccessComponent,
788
+ ],
789
+ imports: [
790
+ CommonModule,
791
+ HttpClientModule,
792
+ StoreModule.forFeature(OIDC_FEATURE_KEY, oidcReducer),
793
+ EffectsModule.forFeature([OidcEffects]),
794
+ ImngOidcClientRoutingModule,
795
+ ],
796
+ exports: [AccessDeniedComponent, SupportComponent, LogoutSuccessComponent],
797
+ providers: [
798
+ {
799
+ provide: OIDC_LIBRARY_CONFIG,
800
+ useFactory: oidcConfigurator,
801
+ deps: [OIDC_CLIENT_CONFIG, DOCUMENT],
802
+ },
803
+ OidcService,
804
+ OidcFacade,
805
+ OidcEffects,
806
+ OidcUserFacade,
807
+ AuthGuard,
808
+ {
809
+ provide: HTTP_INTERCEPTORS,
810
+ useClass: TokenInterceptorService,
811
+ multi: true,
812
+ deps: [Store],
813
+ },
814
+ ],
815
+ }]
816
+ }] });
817
+
818
+ class PermissionsGuard {
819
+ constructor(oidcFacade, oidcUserFacade, router) {
820
+ this.oidcFacade = oidcFacade;
821
+ this.oidcUserFacade = oidcUserFacade;
822
+ this.router = router;
823
+ }
824
+ canActivate(
825
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
826
+ route,
827
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
828
+ state) {
829
+ return this.oidcFacade.waitForAuthenticationLoaded().pipe(switchMap(() => this.oidcUserFacade.hasPermissions(this.permissions)), tap((t) => {
830
+ if (!t) {
831
+ this.router.navigate(['oidc/access-denied'], {
832
+ relativeTo: this.router.routerState.root,
833
+ });
834
+ }
835
+ }));
836
+ }
837
+ }
838
+
839
+ /**
840
+ * Generated bundle index. Do not edit.
841
+ */
842
+
843
+ export { ACTION_NO_ACTION, AccessDeniedComponent, AuthGuard, ImngOidcClientModule, ImngOidcClientRoutingModule, LogoutSuccessComponent, OIDC_CLIENT_CONFIG, OidcEffects, OidcEvent, OidcFacade, OidcService, OidcUserFacade, OidcUserSelectors, PermissionsGuard, StorageKeys, SupportComponent, TokenInterceptorService, clearCurrentEmployee, clearErrors, getOidcUser, jwtDecoder, oidcAccessDeniedRoute, oidcConfigurator, oidcError, oidcLogoutRoute, oidcQuery, oidcReducer, oidcRoutes, oidcSupportRoute, onAccessTokenExpired, onAccessTokenExpiring, onSessionChanged, onSignInPopup, onSignInRedirect, onSignInSilent, onSilentRenewError, onUserLoaded, onUserLoading, onUserMetadataLoaded, onUserSignedOut, onUserUnloaded, onUserloadError, removeOidcUser, setHttpError, signInError, signInPopup, signInRedirect, signInSilent, signOutPopup, signOutPopupError, signOutRedirect, signOutRedirectError, userDoneLoading, userDoneLoadingError, userExpired, userFound };
844
+ //# sourceMappingURL=imng-oidc-client.mjs.map