@acorex/modules 18.0.0 → 18.0.2

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 (99) hide show
  1. package/README.md +7 -7
  2. package/auth/README.md +3 -3
  3. package/auth/lib/account/account.module.d.ts +1 -1
  4. package/backend/lib/auth/oidc/application.loader.d.ts +2 -2
  5. package/backend/lib/auth/oidc/oidc.strategy.d.ts +2 -3
  6. package/backend/lib/auth/oidc/tenant.loader.d.ts +2 -2
  7. package/backend/lib/data/api/data-provider.d.ts +1 -2
  8. package/backend/lib/data/local/data-Conditioner.d.ts +1 -1
  9. package/backend/lib/data/local/local-data-provider.d.ts +1 -1
  10. package/esm2022/auth/index.mjs +1 -1
  11. package/esm2022/auth/lib/account/account.module.mjs +3 -3
  12. package/esm2022/auth/lib/account/app-chooser/app-chooser-list.component.mjs +4 -4
  13. package/esm2022/auth/lib/account/app-chooser/app-chooser-slot.component.mjs +4 -4
  14. package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +4 -5
  15. package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +6 -5
  16. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.mjs +3 -3
  17. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +4 -5
  18. package/esm2022/auth/lib/auth.config.mjs +1 -1
  19. package/esm2022/auth/lib/auth.module.mjs +1 -1
  20. package/esm2022/auth/lib/auth.routes.mjs +1 -1
  21. package/esm2022/auth/lib/error-handler.mjs +2 -2
  22. package/esm2022/auth/lib/forgot/password/password.component.mjs +3 -3
  23. package/esm2022/auth/lib/forgot/routes.mjs +1 -1
  24. package/esm2022/auth/lib/login/login.module.mjs +1 -1
  25. package/esm2022/auth/lib/login/password/password.component.mjs +3 -3
  26. package/esm2022/auth/lib/shared/layouts/blank/blank.layout.mjs +1 -1
  27. package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +5 -7
  28. package/esm2022/auth/lib/shared/services/idle.service.mjs +1 -1
  29. package/esm2022/auth/lib/shared/services/index.mjs +1 -1
  30. package/esm2022/auth/lib/store/auth.effects.mjs +1 -1
  31. package/esm2022/auth/lib/store/index.mjs +1 -1
  32. package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +3 -3
  33. package/esm2022/auth/lib/two-factor/two-factor.module.mjs +1 -1
  34. package/esm2022/backend/index.mjs +1 -1
  35. package/esm2022/backend/lib/auth/oidc/application.loader.mjs +17 -12
  36. package/esm2022/backend/lib/auth/oidc/configuration.service.mjs +2 -3
  37. package/esm2022/backend/lib/auth/oidc/feature.loader.mjs +1 -1
  38. package/esm2022/backend/lib/auth/oidc/index.mjs +1 -1
  39. package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +2 -4
  40. package/esm2022/backend/lib/auth/oidc/permission.loader.mjs +3 -3
  41. package/esm2022/backend/lib/auth/oidc/signincallback.component.mjs +1 -1
  42. package/esm2022/backend/lib/auth/oidc/tenant.loader.mjs +4 -13
  43. package/esm2022/backend/lib/auth/oidc/usermanager.service.mjs +1 -1
  44. package/esm2022/backend/lib/backend.configs.mjs +1 -1
  45. package/esm2022/backend/lib/backend.module.mjs +1 -1
  46. package/esm2022/backend/lib/data/api/data-provider.mjs +54 -15
  47. package/esm2022/backend/lib/data/index.mjs +1 -1
  48. package/esm2022/backend/lib/data/local/data-Conditioner.mjs +25 -19
  49. package/esm2022/backend/lib/data/local/local-data-provider.mjs +1 -1
  50. package/esm2022/log-management/lib/audit-logs.entity.mjs +2 -3
  51. package/esm2022/notification/index.mjs +1 -1
  52. package/esm2022/notification/lib/notification.module.mjs +1 -1
  53. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-jEqtVhBE.mjs → acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs} +23 -25
  54. package/fesm2022/acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs.map +1 -0
  55. package/fesm2022/acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs +70 -0
  56. package/fesm2022/acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs.map +1 -0
  57. package/fesm2022/acorex-modules-auth-blank.layout-BOdRxDNv.mjs.map +1 -1
  58. package/fesm2022/{acorex-modules-auth-login.module-Drm4fC1I.mjs → acorex-modules-auth-login.module-CsfZ__0S.mjs} +5 -7
  59. package/fesm2022/acorex-modules-auth-login.module-CsfZ__0S.mjs.map +1 -0
  60. package/fesm2022/acorex-modules-auth-master.layout-7OSbK7SF.mjs +37 -0
  61. package/fesm2022/acorex-modules-auth-master.layout-7OSbK7SF.mjs.map +1 -0
  62. package/fesm2022/acorex-modules-auth-password.component-V2IWBUZb.mjs +125 -0
  63. package/fesm2022/acorex-modules-auth-password.component-V2IWBUZb.mjs.map +1 -0
  64. package/fesm2022/acorex-modules-auth-password.component-qr9vkp8j.mjs +72 -0
  65. package/fesm2022/acorex-modules-auth-password.component-qr9vkp8j.mjs.map +1 -0
  66. package/fesm2022/{acorex-modules-auth-routes-DyjibH6l.mjs → acorex-modules-auth-routes--jOmlQkp.mjs} +2 -2
  67. package/fesm2022/acorex-modules-auth-routes--jOmlQkp.mjs.map +1 -0
  68. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs +83 -0
  69. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs.map +1 -0
  70. package/fesm2022/acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs +40 -0
  71. package/fesm2022/acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs.map +1 -0
  72. package/fesm2022/{acorex-modules-auth-two-factor.module-A0hevYO2.mjs → acorex-modules-auth-two-factor.module-CmSVriRz.mjs} +4 -6
  73. package/fesm2022/acorex-modules-auth-two-factor.module-CmSVriRz.mjs.map +1 -0
  74. package/fesm2022/acorex-modules-auth.mjs +2 -4
  75. package/fesm2022/acorex-modules-auth.mjs.map +1 -1
  76. package/fesm2022/acorex-modules-backend.mjs +98 -61
  77. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  78. package/fesm2022/acorex-modules-log-management.mjs +1 -2
  79. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  80. package/fesm2022/acorex-modules-notification.mjs.map +1 -1
  81. package/log-management/lib/audit-logs.entity.d.ts +1 -1
  82. package/notification/README.md +3 -3
  83. package/package.json +1 -1
  84. package/fesm2022/acorex-modules-auth-acorex-modules-auth-jEqtVhBE.mjs.map +0 -1
  85. package/fesm2022/acorex-modules-auth-app-chooser.component-BbtMSwfI.mjs +0 -72
  86. package/fesm2022/acorex-modules-auth-app-chooser.component-BbtMSwfI.mjs.map +0 -1
  87. package/fesm2022/acorex-modules-auth-login.module-Drm4fC1I.mjs.map +0 -1
  88. package/fesm2022/acorex-modules-auth-master.layout-cAm6TYeA.mjs +0 -39
  89. package/fesm2022/acorex-modules-auth-master.layout-cAm6TYeA.mjs.map +0 -1
  90. package/fesm2022/acorex-modules-auth-password.component-Ch2Wqi2W.mjs +0 -74
  91. package/fesm2022/acorex-modules-auth-password.component-Ch2Wqi2W.mjs.map +0 -1
  92. package/fesm2022/acorex-modules-auth-password.component-D4CkGaq0.mjs +0 -127
  93. package/fesm2022/acorex-modules-auth-password.component-D4CkGaq0.mjs.map +0 -1
  94. package/fesm2022/acorex-modules-auth-routes-DyjibH6l.mjs.map +0 -1
  95. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CJu2Lfbf.mjs +0 -84
  96. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CJu2Lfbf.mjs.map +0 -1
  97. package/fesm2022/acorex-modules-auth-two-factor-code.component-B41iXHoT.mjs +0 -40
  98. package/fesm2022/acorex-modules-auth-two-factor-code.component-B41iXHoT.mjs.map +0 -1
  99. package/fesm2022/acorex-modules-auth-two-factor.module-A0hevYO2.mjs.map +0 -1
@@ -2,19 +2,17 @@ import * as i1$1 from '@acorex/modules/auth';
2
2
  import { AXM_AUTH_CONFIG_TOKEN, AXMAuthModule } from '@acorex/modules/auth';
3
3
  import * as i2$1 from '@acorex/platform/auth';
4
4
  import { AXPSessionService, AXP_TENANT_LOADER, AXP_APPLICATION_LOADER, AXP_PERMISSION_LOADER, AXP_FEATURE_LOADER, AXPAuthModule } from '@acorex/platform/auth';
5
- import { AXPDataProvider } from '@acorex/platform/common';
5
+ import { AXP_ROOT_CONFIG_TOKEN, AXPDataProvider } from '@acorex/platform/common';
6
6
  import * as i0 from '@angular/core';
7
7
  import { inject, Injectable, Inject, Injector, Component, NgModule } from '@angular/core';
8
8
  import * as i2 from '@angular/router';
9
9
  import { ROUTES } from '@angular/router';
10
- import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/core';
11
10
  import * as i1 from '@angular/common/http';
12
11
  import { HttpParams } from '@angular/common/http';
13
12
  import { firstValueFrom, map, BehaviorSubject, tap, filter, take, of, switchMap, delay } from 'rxjs';
14
- import * as i1$2 from '@acorex/platform/mocks';
15
- import { MockDataService } from '@acorex/platform/mocks';
16
13
  import { UserManager, WebStorageStateStore } from 'oidc-client-ts';
17
- import { isEmpty, endsWith, startsWith, includes, some, every, lte, gte, lt, gt, isEqual, orderBy } from 'lodash-es';
14
+ import { get, isEmpty, endsWith, startsWith, includes, lte, gte, lt, gt, isEqual, orderBy } from 'lodash-es';
15
+ import * as i1$2 from '@acorex/platform/mocks';
18
16
 
19
17
  class AXMBackendDataProvider {
20
18
  constructor(http) {
@@ -23,18 +21,18 @@ class AXMBackendDataProvider {
23
21
  this.mainUrl = this.configs.baseUrl;
24
22
  }
25
23
  insertOne(entity, entityItem) {
26
- const url = `${this.mainUrl}/${entity.module}/${entity.name}`;
24
+ const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;
27
25
  return firstValueFrom(this.http.post(url, entityItem));
28
26
  }
29
27
  insertMany(entity, entityList) {
30
28
  const promises = entityList.map((entity) => {
31
- const url = `${this.mainUrl}/${entity.module}/${entity.name}`;
29
+ const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;
32
30
  return firstValueFrom(this.http.post(url, entity));
33
31
  });
34
32
  return Promise.all(promises);
35
33
  }
36
34
  getOne(entity, id) {
37
- const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;
35
+ const url = `${this.mainUrl}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;
38
36
  return firstValueFrom(this.http.get(url));
39
37
  }
40
38
  getMany(entity, params) {
@@ -43,16 +41,25 @@ class AXMBackendDataProvider {
43
41
  const sortParam = params?.sort.map((sort) => `${sort.field}:${sort.dir}`).join(',');
44
42
  httpParams = httpParams.set('$orderby', sortParam);
45
43
  }
44
+ const buildFilterString = (filters) => {
45
+ return filters
46
+ .map((f) => {
47
+ if (f.filters) {
48
+ return buildFilterString(f.filters);
49
+ }
50
+ else {
51
+ return `${f.field} ${f.operator.type} ${f.value}`;
52
+ }
53
+ })
54
+ .join(',');
55
+ };
46
56
  let filterString = params?.customFilter ? params.customFilter : '';
47
57
  if (params?.filter) {
48
- const filters = params.filter.filters;
49
- if (filters && filters.length > 0) {
58
+ const filter = params.filter;
59
+ if (filter.filters) {
50
60
  // Construct filter string from provided filters
51
- const dynamicFilters = filters
52
- .map((f) => {
53
- return `${f.field} ${f.operator.type} ${f.value}`;
54
- })
55
- .join(',');
61
+ const dynamicFilters = buildFilterString(filter.filters);
62
+ console.log({ dynamicFilters });
56
63
  // Append dynamic filters to custom filter, if both exist
57
64
  filterString = filterString ? `${filterString},${dynamicFilters}` : dynamicFilters;
58
65
  }
@@ -61,7 +68,37 @@ class AXMBackendDataProvider {
61
68
  if (filterString) {
62
69
  httpParams = httpParams.set('$filter', filterString);
63
70
  }
64
- return firstValueFrom(this.http.get(`${this.mainUrl}/${entity.module}/${params.costumGetter ? params.costumGetter : entity.name}/${params?.sub ? params.sub : ''}`, { params: httpParams })).then((response) => {
71
+ function generateQueryString(filter) {
72
+ if (!filter.filters) {
73
+ // Base case: single filter
74
+ return `${filter.field} ${filter.operator.type} ${filter.value}`;
75
+ }
76
+ else if (!filter.filters.length) {
77
+ return;
78
+ }
79
+ else {
80
+ // Recursive case: multiple filters
81
+ const filterStrings = filter.filters.map((subFilter) => generateQueryString(subFilter));
82
+ const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided
83
+ return `${filterStrings.filter((i) => i).join(` ${logic} `)}`;
84
+ }
85
+ }
86
+ let queryString = params?.customFilter ? params.customFilter : '';
87
+ if (params?.filter) {
88
+ const filter = params.filter;
89
+ if (filter.filters && filter.filters.length > 0) {
90
+ // Construct filter string from provided filters
91
+ const dynamicQueries = generateQueryString(filter);
92
+ console.log({ dynamicQueries: dynamicQueries });
93
+ // Append dynamic filters to custom filter, if both exist
94
+ queryString = queryString ? `${queryString},${dynamicQueries}` : dynamicQueries;
95
+ }
96
+ }
97
+ // Set the $filter parameter if there are any filters
98
+ if (queryString) {
99
+ httpParams = httpParams.set('$query', queryString);
100
+ }
101
+ return firstValueFrom(this.http.get(`${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${params.costumGetter ? params.costumGetter : entity.name}/${params?.sub ? params.sub : ''}`, { params: httpParams })).then((response) => {
65
102
  return {
66
103
  total: response.totalCount,
67
104
  items: response.items,
@@ -69,11 +106,11 @@ class AXMBackendDataProvider {
69
106
  });
70
107
  }
71
108
  updateOne(entity, id, data) {
72
- const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;
109
+ const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;
73
110
  return firstValueFrom(this.http.put(url, data));
74
111
  }
75
112
  deleteOne(entity, id) {
76
- const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;
113
+ const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}/${id}`;
77
114
  return firstValueFrom(this.http.delete(url));
78
115
  }
79
116
  getFirst(entity) {
@@ -125,18 +162,23 @@ class AXMOidcApplicationLoader {
125
162
  return response.items.map((item) => this.mapToAXPApplication(item));
126
163
  }));
127
164
  }
128
- //TODO: shoud be removed
129
165
  set(application) {
130
- return this.http.post(this.apiSetApp, { applicationId: application.id }).pipe(map((response) => {
131
- return {
132
- succeed: true,
133
- data: {
134
- accessToken: response.token,
135
- refreshToken: response.token,
136
- }
137
- };
138
- }));
139
- }
166
+ return Promise.resolve();
167
+ }
168
+ // //TODO: shoud be removed
169
+ // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {
170
+ // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(
171
+ // map((response) => {
172
+ // return {
173
+ // succeed: true,
174
+ // data: {
175
+ // accessToken: response.token,
176
+ // refreshToken: response.token,
177
+ // }
178
+ // };
179
+ // })
180
+ // );
181
+ // }
140
182
  mapToAXPApplication(item) {
141
183
  return {
142
184
  id: item.id,
@@ -170,7 +212,6 @@ class AXMConfigurationService {
170
212
  if (!this.fetchInProgress) {
171
213
  this.fetchInProgress = true;
172
214
  return this.http.get(this.apiGetConfig).pipe(tap((response) => {
173
- console.log('%cGranted ', 'background: #03fc9d; color: #000;', response);
174
215
  this.applicationConfig = response;
175
216
  this.configSubject.next(this.applicationConfig);
176
217
  this.fetchInProgress = false;
@@ -259,7 +300,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
259
300
  class AXMOidcStrategy {
260
301
  constructor() {
261
302
  this.injector = inject(Injector);
262
- this.mockerService = inject(MockDataService);
263
303
  this.dataService = inject(AXPDataProvider);
264
304
  this.userManagerService = this.injector.get(AXMOidcUserManagerService);
265
305
  this.userManager = this.userManagerService.getUserManager();
@@ -324,7 +364,7 @@ class AXMOidcStrategy {
324
364
  this.userManager.clearStaleState();
325
365
  this.userManager.signoutSilent();
326
366
  }
327
- async refreshToken(refreshToken) {
367
+ async refreshToken(context) {
328
368
  const user = {
329
369
  id: '1',
330
370
  name: 'admin',
@@ -356,13 +396,13 @@ class AXMOidcPermissionLoader {
356
396
  }
357
397
  getList(context) {
358
398
  return this.http.get(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));
359
- // debugger
360
399
  // if (context.user == null)
361
400
  // return of([]);
362
401
  // else if (context.user.name.toLowerCase() == 'admin')
363
402
  // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);
364
403
  // else
365
404
  // return of(['asc.user.gliding']);
405
+ // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);
366
406
  }
367
407
  mapTo(jsonObj) {
368
408
  const policies = jsonObj.auth.grantedPolicies;
@@ -425,17 +465,8 @@ class AXMOidcTenantLoader {
425
465
  getList() {
426
466
  return this.http.get(this.apiGetTenants).pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));
427
467
  }
428
- //TODO: shoud be removed
429
- set(tenant) {
430
- return this.http.post(this.apiSetTenant, { tenantId: tenant.id }).pipe(map((response) => {
431
- return {
432
- succeed: true,
433
- data: {
434
- accessToken: response.token,
435
- refreshToken: response.token,
436
- },
437
- };
438
- }));
468
+ async set(tenant) {
469
+ return Promise.resolve();
439
470
  }
440
471
  mapToAXPTenant(item) {
441
472
  return {
@@ -532,12 +563,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
532
563
  }] });
533
564
 
534
565
  function applyCondition(item, condition) {
535
- const itemValue = typeof item[condition.field] == 'string'
536
- ? item[condition.field].toLowerCase()
537
- : Array.isArray(item[condition.field])
538
- ? JSON.stringify(item[condition.field])
539
- : item[condition.field];
540
- const conditionValue = typeof condition.value == 'string' ? condition.value.toLowerCase() : condition.value;
566
+ const rawValue = get(item, condition.field);
567
+ const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;
568
+ const conditionValue = typeof condition.value === 'string' ? condition.value.toLowerCase() : condition.value;
569
+ // Logging for debugging
570
+ // console.log('Condition:', condition);
571
+ // console.log('Item Value:', itemValue);
572
+ // console.log('Condition Value:', conditionValue);
541
573
  switch (condition.operator.type) {
542
574
  case 'equal':
543
575
  return isEqual(itemValue, conditionValue);
@@ -552,34 +584,38 @@ function applyCondition(item, condition) {
552
584
  case 'lessThanOrEqual':
553
585
  return lte(itemValue, conditionValue);
554
586
  case 'contains':
555
- if (!Array.isArray(conditionValue)) {
587
+ if (typeof itemValue === 'string') {
556
588
  return includes(itemValue, conditionValue);
557
589
  }
558
- else
559
- return every(conditionValue, (element) => includes(itemValue, element));
590
+ else if (Array.isArray(itemValue)) {
591
+ return includes(itemValue.map(val => val.toString().toLowerCase()), conditionValue);
592
+ }
593
+ return false;
560
594
  case 'notContains':
561
- if (!Array.isArray(conditionValue)) {
595
+ if (typeof itemValue === 'string') {
562
596
  return !includes(itemValue, conditionValue);
563
597
  }
564
- else
565
- return !some(conditionValue, (element) => includes(itemValue, element));
598
+ else if (Array.isArray(itemValue)) {
599
+ return !includes(itemValue.map(val => val.toString().toLowerCase()), conditionValue);
600
+ }
601
+ return false;
566
602
  case 'startsWith':
567
- return startsWith(itemValue, conditionValue);
603
+ return typeof itemValue === 'string' && startsWith(itemValue, conditionValue);
568
604
  case 'endsWith':
569
- return endsWith(itemValue, conditionValue);
605
+ return typeof itemValue === 'string' && endsWith(itemValue, conditionValue);
570
606
  case 'isEmpty':
571
607
  return isEmpty(itemValue);
572
608
  case 'isNotEmpty':
573
609
  return !isEmpty(itemValue);
574
610
  case 'between':
575
- return itemValue >= conditionValue.from && itemValue <= conditionValue.to;
611
+ return itemValue >= condition.value.from && itemValue <= condition.value.to;
576
612
  default:
577
613
  return true;
578
614
  }
579
615
  }
580
616
  function applyFilterArray(dataArray, filters, logic = 'and') {
581
617
  if (filters && filters.length) {
582
- return dataArray?.filter((item) => {
618
+ return dataArray.filter((item) => {
583
619
  if (logic === 'and') {
584
620
  return filters.every((f) => {
585
621
  return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);
@@ -593,8 +629,9 @@ function applyFilterArray(dataArray, filters, logic = 'and') {
593
629
  }
594
630
  });
595
631
  }
596
- else
632
+ else {
597
633
  return dataArray;
634
+ }
598
635
  }
599
636
  function applySortArray(dataArray, sorts) {
600
637
  if (sorts && sorts.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-backend.mjs","sources":["../../../../libs/modules/backend/src/lib/data/api/data-provider.ts","../../../../libs/modules/backend/src/lib/auth/oidc/application.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/configuration.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/feature.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/usermanager.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/oidc.strategy.ts","../../../../libs/modules/backend/src/lib/auth/oidc/permission.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/signincallback.component.ts","../../../../libs/modules/backend/src/lib/auth/oidc/tenant.loader.ts","../../../../libs/modules/backend/src/lib/backend.module.ts","../../../../libs/modules/backend/src/lib/data/local/data-Conditioner.ts","../../../../libs/modules/backend/src/lib/data/local/local-data-provider.ts","../../../../libs/modules/backend/src/acorex-modules-backend.ts"],"sourcesContent":["import { AXPDataProvider } from '@acorex/platform/common';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/core';\nimport { AXPEntityConfig } from '@acorex/platform/layouts';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMBackendDataProvider implements AXPDataProvider {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private mainUrl = this.configs.baseUrl;\n\n constructor(private http: HttpClient) {}\n\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\n const url = `${this.mainUrl}/${entity.module}/${entity.name}`;\n return firstValueFrom(this.http.post(url, entityItem));\n }\n\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\n const promises = entityList.map((entity: any) => {\n const url = `${this.mainUrl}/${entity.module}/${entity.name}`;\n return firstValueFrom(this.http.post(url, entity));\n });\n return Promise.all(promises);\n }\n\n getOne(entity: AXPEntityConfig, id: string): Promise<any> {\n const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;\n return firstValueFrom(this.http.get(url));\n }\n\n getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\n let httpParams = new HttpParams().set('Skip', params?.skip?.toString() ?? '0').set('Take', params?.take?.toString() ?? '10');\n\n if (params?.sort && params?.sort.length > 0) {\n const sortParam = params?.sort.map((sort: any) => `${sort.field}:${sort.dir}`).join(',');\n httpParams = httpParams.set('$orderby', sortParam);\n }\n\n let filterString = params?.customFilter ? params.customFilter : '';\n if (params?.filter) {\n const filters = params.filter.filters;\n if (filters && filters.length > 0) {\n // Construct filter string from provided filters\n const dynamicFilters = filters\n .map((f: any) => {\n return `${f.field} ${f.operator.type} ${f.value}`;\n })\n .join(',');\n\n // Append dynamic filters to custom filter, if both exist\n filterString = filterString ? `${filterString},${dynamicFilters}` : dynamicFilters;\n }\n }\n // Set the $filter parameter if there are any filters\n if (filterString) {\n httpParams = httpParams.set('$filter', filterString);\n }\n\n return firstValueFrom(\n this.http.get<any>(\n `${this.mainUrl}/${entity.module}/${params.costumGetter ? params.costumGetter : entity.name}/${params?.sub ? params.sub : ''}`,\n { params: httpParams }\n )\n ).then((response) => {\n return {\n total: response.totalCount,\n items: response.items,\n };\n });\n }\n\n updateOne(entity: AXPEntityConfig, id: string, data: { [key: string]: any }): Promise<any> {\n const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;\n return firstValueFrom(this.http.put(url, data));\n }\n\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\n const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;\n return firstValueFrom(this.http.delete(url));\n }\n\n getFirst(entity: AXPEntityConfig): Promise<any> {\n // return this.getMany(entity.name).then((res) => res.items[0]);\n return new Promise((resolve) => resolve(true));\n }\n\n // File uploader function\n uploadFile(file: File, title: string): Promise<string> {\n const url = `${this.mainUrl}/common/files`;\n const formData: FormData = new FormData();\n formData.append('File', file);\n formData.append('Title', title);\n\n return firstValueFrom(this.http.post<string>(url, formData));\n }\n\n // Function to upload multiple files\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\n return Promise.all(uploadPromises);\n }\n\n // Function to view a file\n viewFile(id: string, name: string): Promise<Blob> {\n const url = `${this.mainUrl}/common/files/${id}/View/${name}`;\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\n }\n\n // Function to download a file\n downloadFile(id: string, name: string): Promise<Blob> {\n const url = `${this.mainUrl}/common/files/${id}/Download/${name}`;\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\n }\n}\n","import { AXPApplication, AXPApplicationLoader, AXPRefreshTokenResult } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcApplicationLoader implements AXPApplicationLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetApps = `${this.configs.baseUrl}/applications/GetListByTenantId`;\n private apiSetApp = `${this.configs.baseUrl}/SetApplication`;\n constructor(private http: HttpClient) { }\n\n getList(): Observable<AXPApplication[]> {\n return this.http.get<{ items: any[] }>(this.apiGetApps).pipe(\n map((response) => {\n return response.items.map((item) => this.mapToAXPApplication(item));\n })\n );\n }\n\n //TODO: shoud be removed\n set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\n return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\n map((response) => {\n return {\n succeed: true,\n data: {\n accessToken: response.token,\n refreshToken: response.token,\n }\n };\n })\n );\n }\n\n private mapToAXPApplication(item: any): AXPApplication {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n version: item.version || '1.0.0',\n description: item.description,\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\n editionName: item.editionName,\n // features: item.features || [],\n };\n }\n}\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable, filter, of, switchMap, take, tap } from 'rxjs';\n\nexport interface Localization {\n values: Record<string, Record<string, string>>;\n resources: Record<string, Resource>;\n languages: Language[];\n currentCulture: Culture;\n defaultResourceName: string;\n languagesMap: Record<string, NameValue[]>;\n languageFilesMap: Record<string, NameValue[]>;\n}\n\nexport interface Resource {\n texts: Record<string, string>;\n baseResources: string[];\n}\n\nexport interface Language {\n cultureName: string;\n uiCultureName: string;\n displayName: string;\n twoLetterISOLanguageName: string;\n flagIcon: string;\n}\n\nexport interface Culture {\n displayName: string;\n // ... other properties\n}\n\nexport interface NameValue {\n name: string;\n value: string;\n}\n\n// Repeat similar patterns for 'auth', 'setting', 'currentUser', etc.\nexport interface Auth {\n grantedPolicies: Record<string, boolean>;\n}\n\n// Main configuration interface\nexport interface ApplicationConfiguration {\n localization: Localization;\n auth: Auth;\n setting: Record<string, any>;\n currentUser: any;\n features: Record<string, any>;\n globalFeatures: Record<string, any>;\n multiTenancy: Record<string, any>;\n currentCulture: Culture;\n timing: Record<string, any>;\n clock: Record<string, any>;\n objectExtensions: Record<string, any>;\n extraProperties: Record<string, any>;\n\n // ... other properties\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMConfigurationService {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private applicationConfig: ApplicationConfiguration | null = null;\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n private fetchInProgress: boolean = false;\n private configSubject: BehaviorSubject<ApplicationConfiguration | null> = new BehaviorSubject<ApplicationConfiguration | null>(null);\n\n constructor(private http: HttpClient) {\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\n }\n\n public init(): Observable<ApplicationConfiguration> {\n if (!this.fetchInProgress) {\n this.fetchInProgress = true;\n return this.http.get<ApplicationConfiguration>(this.apiGetConfig).pipe(\n tap((response) => {\n console.log('%cGranted ', 'background: #03fc9d; color: #000;', response);\n this.applicationConfig = response;\n this.configSubject.next(this.applicationConfig);\n this.fetchInProgress = false;\n })\n );\n } else {\n // Adjusted approach to handle TypeScript's type safety requirements\n return this.configSubject.asObservable().pipe(\n filter((config): config is ApplicationConfiguration => config !== null),\n take(1) // Ensures it completes after emitting the first non-null value\n );\n }\n }\n\n getConfig(): Observable<ApplicationConfiguration> {\n if (this.applicationConfig) {\n // If the config is already loaded, return it immediately\n return of(this.applicationConfig);\n } else {\n // If the config is not loaded, initiate loading\n return this.configSubject.asObservable().pipe(\n filter((config) => config !== null),\n take(1), // Ensure it only emits the first non-null value and completes\n switchMap(() => of(this.applicationConfig!))\n );\n }\n }\n}\n","import { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\n\n private list: AXPFeature[] = [\n {\n name: 'axp-entity-list-custom-view',\n title: 'Custom View',\n value: false\n },\n {\n name: 'axp-entity-list-quick-search',\n title: 'Custom View',\n value: false\n }\n ]\n\n getList(): Observable<AXPFeature[]> {\n return of(this.list).pipe(delay(0));\n }\n}\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXPApplication, AXPTenant } from '@acorex/platform/auth';\nimport { Inject, Injectable } from '@angular/core';\nimport { UserManager, WebStorageStateStore } from 'oidc-client-ts';\n// Other imports...\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMOidcUserManagerService {\n private userManager: UserManager;\n public selectedTenant: AXPTenant | null = null;\n public selectedApplication: AXPApplication | null = null;\n\n constructor(@Inject(AXM_AUTH_CONFIG_TOKEN) private authConfig: AXMAuthConfigs) {\n if (!authConfig.oidc_settings) {\n throw new Error('OIDC configuration is missing');\n }\n\n this.userManager = new UserManager({\n ...authConfig.oidc_settings,\n userStore: new WebStorageStateStore({ store: window.localStorage }),\n });\n }\n\n getUserManager(): UserManager {\n return this.userManager;\n }\n\n async signinSilentCallback() {\n await this.userManager.signinSilentCallback();\n }\n}\n","import { AXPAuthStrategy, AXPBaseCredentials, AXPRefreshTokenResult, AXPSignInResult, AXPUser } from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { MockDataService } from '@acorex/platform/mocks';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { UserManager } from 'oidc-client-ts';\nimport { AXMOidcUserManagerService } from './usermanager.service';\n\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\n@Injectable()\nexport class AXMOidcStrategy implements AXPAuthStrategy {\n private userManagerService: AXMOidcUserManagerService;\n private userManager: UserManager;\n private injector: Injector = inject(Injector);\n private mockerService = inject(MockDataService);\n private dataService = inject(AXPDataProvider);\n\n constructor() {\n this.userManagerService = this.injector.get(AXMOidcUserManagerService);\n this.userManager = this.userManagerService.getUserManager();\n }\n\n get name(): string {\n return 'user-pass';\n }\n\n async signin(credentials: AXPUserPassCredentials): Promise<AXPSignInResult> {\n try {\n const currentUser = await this.userManager.getUser();\n\n if (currentUser && !currentUser.expired && currentUser.profile.name === credentials.username) {\n const user: AXPUser = {\n id: currentUser.profile.sub,\n name: currentUser.profile.name ?? credentials.username,\n title: currentUser.profile.given_name ?? 'no Name!',\n avatar: currentUser.profile.picture,\n };\n const accessToken = currentUser.access_token;\n const refreshToken = currentUser.refresh_token ?? '';\n return {\n succeed: true,\n data: { user, accessToken, refreshToken },\n };\n }\n\n await this.userManager.removeUser();\n await this.userManager.clearStaleState();\n\n const oidcUser = await this.userManager.signinSilent({\n extraQueryParams: {\n username: credentials.username,\n password: credentials.password,\n },\n });\n if (oidcUser) {\n const profile = oidcUser.profile; // Cast to any to access deeply nested properties\n const user: AXPUser = {\n id: profile.sub,\n name: `${profile.email}`,\n title: `${profile.name}`,\n avatar: `${profile.picture}`,\n };\n const accessToken = oidcUser.access_token;\n const refreshToken = oidcUser.refresh_token ?? '';\n\n return {\n succeed: true,\n data: { user, accessToken, refreshToken },\n };\n }\n\n return {\n succeed: false,\n };\n } catch (error: any) {\n if (error?.message) throw new Error(error.message);\n // Depending on the error type, you might want to throw a specific error\n throw new Error('Network or server error occurred');\n }\n }\n\n async signout(): Promise<void> {\n console.log('User signed out');\n this.userManager.removeUser();\n this.userManager.clearStaleState();\n this.userManager.signoutSilent();\n }\n\n async refreshToken(refreshToken: string): Promise<AXPRefreshTokenResult> {\n const user: AXPUser = {\n id: '1',\n name: 'admin',\n title: 'Arash',\n avatar: 'https://i.pravatar.cc/150?img=52',\n };\n\n const accessToken = this.generateAccessToken();\n const newRefreshToken = this.generateAccessToken();\n\n return {\n succeed: true,\n data: { accessToken, refreshToken: newRefreshToken },\n };\n }\n\n private generateAccessToken(): string {\n return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';\n }\n}\n","import { AXPPermission, AXPPermissionLoader, AXPSessionContext } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n\n constructor(private http: HttpClient) {}\n\n getList(context: AXPSessionContext): Observable<AXPPermission[]> {\n return this.http.get<{ items: any }>(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\n // debugger\n // if (context.user == null)\n // return of([]);\n // else if (context.user.name.toLowerCase() == 'admin')\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n // else\n // return of(['asc.user.gliding']);\n }\n\n mapTo(jsonObj: any): string[] {\n const policies = jsonObj.auth.grantedPolicies;\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\n return truePolicies;\n }\n}\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { Component, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXMOidcUserManagerService } from './usermanager.service';\n\n@Component({\n template: '',\n})\nexport class SignincallbackComponent implements OnInit {\n private sessionService = inject(AXPSessionService);\n constructor(\n private userManagerService: AXMOidcUserManagerService,\n private router: Router,\n private route: ActivatedRoute,\n\n ) { }\n\n ngOnInit() {\n const queryParams = this.route.snapshot.queryParams;\n if (queryParams['tenantid']) {\n const selectedTenant = {\n id: queryParams['tenantid'],\n name: queryParams['tenantname'],\n title: queryParams['tenanttitle'],\n };\n this.sessionService.setTenant(selectedTenant);\n }\n if (queryParams['applicationid']) {\n const selectedApplication = {\n id: queryParams['applicationid'],\n name: queryParams['applicationname'],\n title: queryParams['applicationtitle'],\n version: '1',\n editionName: queryParams['editionname'],\n };\n this.sessionService.setApplication(selectedApplication);\n }\n this.userManagerService.signinSilentCallback();\n }\n}\n","import { AXPRefreshTokenResult, AXPTenant, AXPTenantLoader } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcTenantLoader implements AXPTenantLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetTenants = `${this.configs.baseUrl}/user-tenants/Tenants`;\n private apiSetTenant = `${this.configs.baseUrl}/SetTenant`;\n constructor(private http: HttpClient) { }\n\n getList(): Observable<AXPTenant[]> {\n return this.http.get<{ items: any[] }>(this.apiGetTenants).pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\n }\n\n //TODO: shoud be removed\n set(tenant: AXPTenant): Observable<AXPRefreshTokenResult> {\n return this.http.post<any>(this.apiSetTenant, { tenantId: tenant.id }).pipe(\n map((response) => {\n return {\n succeed: true,\n data: {\n accessToken: response.token,\n refreshToken: response.token,\n },\n };\n })\n );\n }\n\n private mapToAXPTenant(item: any): AXPTenant {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n // Add other fields and defaults as needed, and handle the logo if applicable\n };\n }\n}\n","import { AXMAuthModule } from '@acorex/modules/auth';\nimport { AXPAuthModule, AXP_APPLICATION_LOADER, AXP_FEATURE_LOADER, AXP_PERMISSION_LOADER, AXP_TENANT_LOADER } from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\n\n//-----------------------------------------------------------------\nimport { AXMBackendDataProvider } from './data/api/data-provider';\nimport { AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXMOidcStrategy, AXMOidcTenantLoader } from './auth/oidc';\n//-----------------------------------------------------------------\n\nimport { SignincallbackComponent } from './auth/oidc/signincallback.component';\n\nfunction routesFactory() {\n const routes: Routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];\n return routes;\n}\n\n@NgModule({\n imports: [\n AXMAuthModule.forRoot(),\n AXPAuthModule.forRoot({\n strategies: [AXMOidcStrategy],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXPDataProvider,\n useClass: AXMBackendDataProvider,\n },\n {\n provide: AXP_TENANT_LOADER,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n useClass: AXMOidcFeatureLoader,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n ],\n})\nexport class AXMBackendModule { }\n","import { AXDataSourceFilterOption } from '@acorex/components/common';\nimport { endsWith, every, gt, gte, includes, isEmpty, isEqual, lt, lte, orderBy, some, startsWith } from 'lodash-es';\n\nfunction applyCondition(item: any, condition: any) {\n const itemValue =\n typeof item[condition.field] == 'string'\n ? item[condition.field].toLowerCase()\n : Array.isArray(item[condition.field])\n ? JSON.stringify(item[condition.field])\n : item[condition.field];\n const conditionValue = typeof condition.value == 'string' ? condition.value.toLowerCase() : condition.value;\n switch (condition.operator.type) {\n case 'equal':\n return isEqual(itemValue, conditionValue);\n case 'notEqual':\n return !isEqual(itemValue, conditionValue);\n case 'greaterThan':\n return gt(itemValue, conditionValue);\n case 'lessThan':\n return lt(itemValue, conditionValue);\n case 'greaterThanOrEqual':\n return gte(itemValue, conditionValue);\n case 'lessThanOrEqual':\n return lte(itemValue, conditionValue);\n case 'contains':\n if (!Array.isArray(conditionValue)) {\n return includes(itemValue, conditionValue);\n } else return every(conditionValue, (element) => includes(itemValue, element));\n case 'notContains':\n if (!Array.isArray(conditionValue)) {\n return !includes(itemValue, conditionValue);\n } else return !some(conditionValue, (element) => includes(itemValue, element));\n case 'startsWith':\n return startsWith(itemValue, conditionValue);\n case 'endsWith':\n return endsWith(itemValue, conditionValue);\n case 'isEmpty':\n return isEmpty(itemValue);\n case 'isNotEmpty':\n return !isEmpty(itemValue);\n case 'between':\n return itemValue >= conditionValue.from && itemValue <= conditionValue.to;\n default:\n return true;\n }\n}\n\nexport function applyFilterArray(\n dataArray: any,\n filters?: AXDataSourceFilterOption[],\n logic: 'and' | 'or' = 'and'\n): any[] {\n if (filters && filters.length) {\n return dataArray?.filter((item: any) => {\n if (logic === 'and') {\n return filters.every((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f as any);\n });\n } else {\n // logic === 'or'\n return filters.some((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f as any);\n });\n }\n });\n } else return dataArray;\n}\n\nexport function applySortArray(dataArray: any, sorts: { field: string; dir: 'asc' | 'desc' }[]) {\n if (sorts && sorts.length > 0) {\n const sortFields = sorts.map((s) => s.field);\n const sortOrders = sorts.map((s) => s.dir);\n return orderBy(dataArray, sortFields, sortOrders);\n } else return dataArray;\n}\n","import { AXPDataProvider } from '@acorex/platform/common';\nimport { AXPEntityConfig } from '@acorex/platform/layouts';\nimport { AXPStorageMockService } from '@acorex/platform/mocks';\nimport { Injectable } from '@angular/core';\nimport { applyFilterArray, applySortArray } from './data-Conditioner';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMLocalDataProvider implements AXPDataProvider {\n constructor(private storageService: AXPStorageMockService) {}\n\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\n return this.storageService.insertOrupdateOne(entity.name, entityItem);\n }\n\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\n return this.storageService.insertMany(entity.name, entityList);\n }\n\n async getOne(entity: AXPEntityConfig, id: string): Promise<any> {\n console.log('@LOACAL getOne', entity.name, id);\n return this.storageService.getOne(entity.name, id);\n }\n\n async getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\n console.log('@LOACAL getMany', entity.name, params);\n const result = await this.storageService.getMany(entity.name, params);\n const sortedItems = applySortArray(result, params?.sort);\n const filteredItems = applyFilterArray(sortedItems, params?.filter?.filters);\n return new Promise((resolve) => {\n resolve({\n items: params ? filteredItems?.slice(params.skip, (params.skip ?? 0) + (params.take ?? 20)) : filteredItems,\n total: filteredItems?.length ?? 0,\n });\n });\n }\n\n updateOne(entity: AXPEntityConfig, id: string, data: { [key: string]: any }): Promise<any> {\n return this.storageService.updateOne(entity.name, id, data);\n }\n\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\n return this.storageService.deleteOne(entity.name, id);\n }\n\n getFirst(entity: AXPEntityConfig): Promise<any> {\n return this.getMany(entity).then((res) => {\n return res.items ? res.items[0] : null;\n });\n }\n\n // Mock file uploader function\n uploadFile(file: File, title: string): Promise<string> {\n return new Promise((resolve) => {\n // Mock file ID generation\n const fileId = `mock-file-id-${Math.random().toString(36).substr(2, 9)}`;\n const fileRecord = { id: fileId, title, file };\n this.storageService.insertOrupdateOne('files', fileRecord).then(() => {\n resolve(fileId);\n });\n });\n }\n\n // Mock function to upload multiple files\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\n return Promise.all(uploadPromises);\n }\n\n // Mock function to view a file\n viewFile(id: string, name: string): Promise<Blob> {\n return new Promise(async (resolve, reject) => {\n const fileRecord = await this.storageService.getOne('files', id);\n if (fileRecord && fileRecord.file) {\n resolve(fileRecord.file);\n } else {\n reject('File not found');\n }\n });\n }\n\n // Mock function to download a file\n downloadFile(id: string, name: string): Promise<Blob> {\n return this.viewFile(id, name);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXMOidcUserManagerService","i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-backend.mjs","sources":["../../../../libs/modules/backend/src/lib/data/api/data-provider.ts","../../../../libs/modules/backend/src/lib/auth/oidc/application.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/configuration.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/feature.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/usermanager.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/oidc.strategy.ts","../../../../libs/modules/backend/src/lib/auth/oidc/permission.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/signincallback.component.ts","../../../../libs/modules/backend/src/lib/auth/oidc/tenant.loader.ts","../../../../libs/modules/backend/src/lib/backend.module.ts","../../../../libs/modules/backend/src/lib/data/local/data-Conditioner.ts","../../../../libs/modules/backend/src/lib/data/local/local-data-provider.ts","../../../../libs/modules/backend/src/acorex-modules-backend.ts"],"sourcesContent":["import { AXPDataProvider, AXPEntityConfig, AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMBackendDataProvider implements AXPDataProvider {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private mainUrl = this.configs.baseUrl;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\r\n return firstValueFrom(this.http.post(url, entityItem));\r\n }\r\n\r\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\r\n const promises = entityList.map((entity: any) => {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\r\n return firstValueFrom(this.http.post(url, entity));\r\n });\r\n return Promise.all(promises);\r\n }\r\n\r\n getOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n const url = `${this.mainUrl}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;\r\n return firstValueFrom(this.http.get(url));\r\n }\r\n\r\n getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\r\n let httpParams = new HttpParams().set('Skip', params?.skip?.toString() ?? '0').set('Take', params?.take?.toString() ?? '10');\r\n\r\n if (params?.sort && params?.sort.length > 0) {\r\n const sortParam = params?.sort.map((sort: any) => `${sort.field}:${sort.dir}`).join(',');\r\n httpParams = httpParams.set('$orderby', sortParam);\r\n }\r\n\r\n const buildFilterString = (filters: any[]): string => {\r\n return filters\r\n .map((f: any) => {\r\n if (f.filters) {\r\n return buildFilterString(f.filters);\r\n } else {\r\n return `${f.field} ${f.operator.type} ${f.value}`;\r\n }\r\n })\r\n .join(',');\r\n };\r\n\r\n let filterString = params?.customFilter ? params.customFilter : '';\r\n if (params?.filter) {\r\n const filter = params.filter;\r\n if (filter.filters) {\r\n // Construct filter string from provided filters\r\n\r\n const dynamicFilters = buildFilterString(filter.filters);\r\n console.log({ dynamicFilters });\r\n\r\n // Append dynamic filters to custom filter, if both exist\r\n filterString = filterString ? `${filterString},${dynamicFilters}` : dynamicFilters;\r\n }\r\n }\r\n // Set the $filter parameter if there are any filters\r\n if (filterString) {\r\n httpParams = httpParams.set('$filter', filterString);\r\n }\r\n\r\n function generateQueryString(filter: any) {\r\n if (!filter.filters) {\r\n // Base case: single filter\r\n return `${filter.field} ${filter.operator.type} ${filter.value}`;\r\n } else if (!filter.filters.length) {\r\n return;\r\n } else {\r\n // Recursive case: multiple filters\r\n const filterStrings = filter.filters.map((subFilter: any) => generateQueryString(subFilter));\r\n const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided\r\n return `${filterStrings.filter((i: any) => i).join(` ${logic} `)}`;\r\n }\r\n }\r\n\r\n let queryString = params?.customFilter ? params.customFilter : '';\r\n if (params?.filter) {\r\n const filter = params.filter;\r\n if (filter.filters && filter.filters.length > 0) {\r\n // Construct filter string from provided filters\r\n\r\n const dynamicQueries = generateQueryString(filter);\r\n console.log({ dynamicQueries: dynamicQueries });\r\n\r\n // Append dynamic filters to custom filter, if both exist\r\n queryString = queryString ? `${queryString},${dynamicQueries}` : dynamicQueries;\r\n }\r\n }\r\n // Set the $filter parameter if there are any filters\r\n if (queryString) {\r\n httpParams = httpParams.set('$query', queryString);\r\n }\r\n return firstValueFrom(\r\n this.http.get<any>(\r\n `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${params.costumGetter ? params.costumGetter : entity.name}/${\r\n params?.sub ? params.sub : ''\r\n }`,\r\n { params: httpParams }\r\n )\r\n ).then((response) => {\r\n return {\r\n total: response.totalCount,\r\n items: response.items,\r\n };\r\n });\r\n }\r\n\r\n updateOne(entity: AXPEntityConfig, id: string, data: { [key: string]: any }): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;\r\n return firstValueFrom(this.http.put(url, data));\r\n }\r\n\r\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}/${id}`;\r\n return firstValueFrom(this.http.delete(url));\r\n }\r\n\r\n getFirst(entity: AXPEntityConfig): Promise<any> {\r\n // return this.getMany(entity.name).then((res) => res.items[0]);\r\n return new Promise((resolve) => resolve(true));\r\n }\r\n\r\n // File uploader function\r\n uploadFile(file: File, title: string): Promise<string> {\r\n const url = `${this.mainUrl}/common/files`;\r\n const formData: FormData = new FormData();\r\n formData.append('File', file);\r\n formData.append('Title', title);\r\n\r\n return firstValueFrom(this.http.post<string>(url, formData));\r\n }\r\n\r\n // Function to upload multiple files\r\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\r\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\r\n return Promise.all(uploadPromises);\r\n }\r\n\r\n // Function to view a file\r\n viewFile(id: string, name: string): Promise<Blob> {\r\n const url = `${this.mainUrl}/common/files/${id}/View/${name}`;\r\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\r\n }\r\n\r\n // Function to download a file\r\n downloadFile(id: string, name: string): Promise<Blob> {\r\n const url = `${this.mainUrl}/common/files/${id}/Download/${name}`;\r\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\r\n }\r\n}\r\n","import { AXPApplication, AXPApplicationLoader, AXPRefreshTokenResult } from '@acorex/platform/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AXMOidcApplicationLoader implements AXPApplicationLoader {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private apiGetApps = `${this.configs.baseUrl}/applications/GetListByTenantId`;\r\n private apiSetApp = `${this.configs.baseUrl}/SetApplication`;\r\n constructor(private http: HttpClient) { }\r\n\r\n\r\n getList(): Observable<AXPApplication[]> {\r\n return this.http.get<{ items: any[] }>(this.apiGetApps).pipe(\r\n map((response) => {\r\n return response.items.map((item) => this.mapToAXPApplication(item));\r\n })\r\n );\r\n }\r\n\r\n set(application: AXPApplication): Promise<void> {\r\n return Promise.resolve();\r\n }\r\n\r\n // //TODO: shoud be removed\r\n // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\r\n // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\r\n // map((response) => {\r\n // return {\r\n // succeed: true,\r\n // data: {\r\n // accessToken: response.token,\r\n // refreshToken: response.token,\r\n // }\r\n // };\r\n // })\r\n // );\r\n // }\r\n\r\n private mapToAXPApplication(item: any): AXPApplication {\r\n return {\r\n id: item.id,\r\n name: item.name || 'defaultName',\r\n title: item.title || 'defaultTitle',\r\n version: item.version || '1.0.0',\r\n description: item.description,\r\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\r\n editionName: item.editionName,\r\n // features: item.features || [],\r\n };\r\n }\r\n}\r\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BehaviorSubject, Observable, filter, of, switchMap, take, tap } from 'rxjs';\r\n\r\nexport interface Localization {\r\n values: Record<string, Record<string, string>>;\r\n resources: Record<string, Resource>;\r\n languages: Language[];\r\n currentCulture: Culture;\r\n defaultResourceName: string;\r\n languagesMap: Record<string, NameValue[]>;\r\n languageFilesMap: Record<string, NameValue[]>;\r\n}\r\n\r\nexport interface Resource {\r\n texts: Record<string, string>;\r\n baseResources: string[];\r\n}\r\n\r\nexport interface Language {\r\n cultureName: string;\r\n uiCultureName: string;\r\n displayName: string;\r\n twoLetterISOLanguageName: string;\r\n flagIcon: string;\r\n}\r\n\r\nexport interface Culture {\r\n displayName: string;\r\n // ... other properties\r\n}\r\n\r\nexport interface NameValue {\r\n name: string;\r\n value: string;\r\n}\r\n\r\n// Repeat similar patterns for 'auth', 'setting', 'currentUser', etc.\r\nexport interface Auth {\r\n grantedPolicies: Record<string, boolean>;\r\n}\r\n\r\n// Main configuration interface\r\nexport interface ApplicationConfiguration {\r\n localization: Localization;\r\n auth: Auth;\r\n setting: Record<string, any>;\r\n currentUser: any;\r\n features: Record<string, any>;\r\n globalFeatures: Record<string, any>;\r\n multiTenancy: Record<string, any>;\r\n currentCulture: Culture;\r\n timing: Record<string, any>;\r\n clock: Record<string, any>;\r\n objectExtensions: Record<string, any>;\r\n extraProperties: Record<string, any>;\r\n\r\n // ... other properties\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMConfigurationService {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private applicationConfig: ApplicationConfiguration | null = null;\r\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\r\n private fetchInProgress: boolean = false;\r\n private configSubject: BehaviorSubject<ApplicationConfiguration | null> = new BehaviorSubject<ApplicationConfiguration | null>(null);\r\n\r\n constructor(private http: HttpClient) {\r\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\r\n }\r\n\r\n public init(): Observable<ApplicationConfiguration> {\r\n if (!this.fetchInProgress) {\r\n this.fetchInProgress = true;\r\n return this.http.get<ApplicationConfiguration>(this.apiGetConfig).pipe(\r\n tap((response) => {\r\n this.applicationConfig = response;\r\n this.configSubject.next(this.applicationConfig);\r\n this.fetchInProgress = false;\r\n })\r\n );\r\n } else {\r\n // Adjusted approach to handle TypeScript's type safety requirements\r\n return this.configSubject.asObservable().pipe(\r\n filter((config): config is ApplicationConfiguration => config !== null),\r\n take(1) // Ensures it completes after emitting the first non-null value\r\n );\r\n }\r\n }\r\n\r\n getConfig(): Observable<ApplicationConfiguration> {\r\n if (this.applicationConfig) {\r\n // If the config is already loaded, return it immediately\r\n return of(this.applicationConfig);\r\n } else {\r\n // If the config is not loaded, initiate loading\r\n return this.configSubject.asObservable().pipe(\r\n filter((config) => config !== null),\r\n take(1), // Ensure it only emits the first non-null value and completes\r\n switchMap(() => of(this.applicationConfig!))\r\n );\r\n }\r\n }\r\n}\r\n","import { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\r\nimport { Observable, delay, of } from 'rxjs';\r\n\r\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\r\n\r\n private list: AXPFeature[] = [\r\n {\r\n name: 'axp-entity-list-custom-view',\r\n title: 'Custom View',\r\n value: false\r\n },\r\n {\r\n name: 'axp-entity-list-quick-search',\r\n title: 'Custom View',\r\n value: false\r\n }\r\n ]\r\n\r\n getList(): Observable<AXPFeature[]> {\r\n return of(this.list).pipe(delay(0));\r\n }\r\n}\r\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\r\nimport { AXPApplication, AXPTenant } from '@acorex/platform/auth';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { UserManager, WebStorageStateStore } from 'oidc-client-ts';\r\n// Other imports...\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMOidcUserManagerService {\r\n private userManager: UserManager;\r\n public selectedTenant: AXPTenant | null = null;\r\n public selectedApplication: AXPApplication | null = null;\r\n\r\n constructor(@Inject(AXM_AUTH_CONFIG_TOKEN) private authConfig: AXMAuthConfigs) {\r\n if (!authConfig.oidc_settings) {\r\n throw new Error('OIDC configuration is missing');\r\n }\r\n\r\n this.userManager = new UserManager({\r\n ...authConfig.oidc_settings,\r\n userStore: new WebStorageStateStore({ store: window.localStorage }),\r\n });\r\n }\r\n\r\n getUserManager(): UserManager {\r\n return this.userManager;\r\n }\r\n\r\n async signinSilentCallback() {\r\n await this.userManager.signinSilentCallback();\r\n }\r\n}\r\n","import { AXPAuthStrategy, AXPBaseCredentials, AXPRefreshTokenResult, AXPSessionContext, AXPSignInResult, AXPUser } from '@acorex/platform/auth';\r\nimport { AXPDataProvider } from '@acorex/platform/common';\r\nimport { Injectable, Injector, inject } from '@angular/core';\r\nimport { UserManager } from 'oidc-client-ts';\r\nimport { AXMOidcUserManagerService } from './usermanager.service';\r\n\r\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\r\n username: string;\r\n password: string;\r\n}\r\n\r\n@Injectable()\r\nexport class AXMOidcStrategy implements AXPAuthStrategy {\r\n private userManagerService: AXMOidcUserManagerService;\r\n private userManager: UserManager;\r\n private injector: Injector = inject(Injector);\r\n private dataService = inject(AXPDataProvider);\r\n\r\n constructor() {\r\n this.userManagerService = this.injector.get(AXMOidcUserManagerService);\r\n this.userManager = this.userManagerService.getUserManager();\r\n }\r\n\r\n get name(): string {\r\n return 'user-pass';\r\n }\r\n\r\n async signin(credentials: AXPUserPassCredentials): Promise<AXPSignInResult> {\r\n try {\r\n const currentUser = await this.userManager.getUser();\r\n\r\n if (currentUser && !currentUser.expired && currentUser.profile.name === credentials.username) {\r\n const user: AXPUser = {\r\n id: currentUser.profile.sub,\r\n name: currentUser.profile.name ?? credentials.username,\r\n title: currentUser.profile.given_name ?? 'no Name!',\r\n avatar: currentUser.profile.picture,\r\n };\r\n const accessToken = currentUser.access_token;\r\n const refreshToken = currentUser.refresh_token ?? '';\r\n return {\r\n succeed: true,\r\n data: { user, accessToken, refreshToken },\r\n };\r\n }\r\n\r\n await this.userManager.removeUser();\r\n await this.userManager.clearStaleState();\r\n\r\n const oidcUser = await this.userManager.signinSilent({\r\n extraQueryParams: {\r\n username: credentials.username,\r\n password: credentials.password,\r\n },\r\n });\r\n if (oidcUser) {\r\n const profile = oidcUser.profile; // Cast to any to access deeply nested properties\r\n const user: AXPUser = {\r\n id: profile.sub,\r\n name: `${profile.email}`,\r\n title: `${profile.name}`,\r\n avatar: `${profile.picture}`,\r\n };\r\n const accessToken = oidcUser.access_token;\r\n const refreshToken = oidcUser.refresh_token ?? '';\r\n\r\n return {\r\n succeed: true,\r\n data: { user, accessToken, refreshToken },\r\n };\r\n }\r\n\r\n return {\r\n succeed: false,\r\n };\r\n } catch (error: any) {\r\n if (error?.message) throw new Error(error.message);\r\n // Depending on the error type, you might want to throw a specific error\r\n throw new Error('Network or server error occurred');\r\n }\r\n }\r\n\r\n async signout(): Promise<void> {\r\n console.log('User signed out');\r\n this.userManager.removeUser();\r\n this.userManager.clearStaleState();\r\n this.userManager.signoutSilent();\r\n }\r\n\r\n async refreshToken(context: AXPSessionContext): Promise<AXPRefreshTokenResult> {\r\n const user: AXPUser = {\r\n id: '1',\r\n name: 'admin',\r\n title: 'Arash',\r\n avatar: 'https://i.pravatar.cc/150?img=52',\r\n };\r\n\r\n const accessToken = this.generateAccessToken();\r\n const newRefreshToken = this.generateAccessToken();\r\n\r\n return {\r\n succeed: true,\r\n data: { accessToken, refreshToken: newRefreshToken },\r\n };\r\n }\r\n\r\n private generateAccessToken(): string {\r\n return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';\r\n }\r\n}\r\n","import { AXPPermission, AXPPermissionLoader, AXPSessionContext } from '@acorex/platform/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n getList(context: AXPSessionContext): Observable<AXPPermission[]> {\r\n return this.http.get<{ items: any }>(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\r\n // if (context.user == null)\r\n // return of([]);\r\n // else if (context.user.name.toLowerCase() == 'admin')\r\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\r\n // else\r\n // return of(['asc.user.gliding']);\r\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\r\n }\r\n\r\n mapTo(jsonObj: any): string[] {\r\n const policies = jsonObj.auth.grantedPolicies;\r\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\r\n return truePolicies;\r\n }\r\n}\r\n","import { AXPSessionService } from '@acorex/platform/auth';\r\nimport { Component, OnInit, inject } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AXMOidcUserManagerService } from './usermanager.service';\r\n\r\n@Component({\r\n template: '',\r\n})\r\nexport class SignincallbackComponent implements OnInit {\r\n private sessionService = inject(AXPSessionService);\r\n constructor(\r\n private userManagerService: AXMOidcUserManagerService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n\r\n ) { }\r\n\r\n ngOnInit() {\r\n const queryParams = this.route.snapshot.queryParams;\r\n if (queryParams['tenantid']) {\r\n const selectedTenant = {\r\n id: queryParams['tenantid'],\r\n name: queryParams['tenantname'],\r\n title: queryParams['tenanttitle'],\r\n };\r\n this.sessionService.setTenant(selectedTenant);\r\n }\r\n if (queryParams['applicationid']) {\r\n const selectedApplication = {\r\n id: queryParams['applicationid'],\r\n name: queryParams['applicationname'],\r\n title: queryParams['applicationtitle'],\r\n version: '1',\r\n editionName: queryParams['editionname'],\r\n };\r\n this.sessionService.setApplication(selectedApplication);\r\n }\r\n this.userManagerService.signinSilentCallback();\r\n }\r\n}\r\n","import { AXPTenant, AXPTenantLoader } from '@acorex/platform/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AXMOidcTenantLoader implements AXPTenantLoader {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private apiGetTenants = `${this.configs.baseUrl}/user-tenants/Tenants`;\r\n private apiSetTenant = `${this.configs.baseUrl}/SetTenant`;\r\n constructor(private http: HttpClient) { }\r\n\r\n getList(): Observable<AXPTenant[]> {\r\n return this.http.get<{ items: any[] }>(this.apiGetTenants).pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\r\n }\r\n\r\n async set(tenant: AXPTenant): Promise<void> {\r\n return Promise.resolve();\r\n }\r\n\r\n private mapToAXPTenant(item: any): AXPTenant {\r\n return {\r\n id: item.id,\r\n name: item.name || 'defaultName',\r\n title: item.title || 'defaultTitle',\r\n // Add other fields and defaults as needed, and handle the logo if applicable\r\n };\r\n }\r\n}\r\n","import { AXMAuthModule } from '@acorex/modules/auth';\r\nimport { AXPAuthModule, AXP_APPLICATION_LOADER, AXP_FEATURE_LOADER, AXP_PERMISSION_LOADER, AXP_TENANT_LOADER } from '@acorex/platform/auth';\r\nimport { AXPDataProvider } from '@acorex/platform/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ROUTES, Routes } from '@angular/router';\r\n\r\n//-----------------------------------------------------------------\r\nimport { AXMBackendDataProvider } from './data/api/data-provider';\r\nimport { AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXMOidcStrategy, AXMOidcTenantLoader } from './auth/oidc';\r\n//-----------------------------------------------------------------\r\n\r\nimport { SignincallbackComponent } from './auth/oidc/signincallback.component';\r\n\r\nfunction routesFactory() {\r\n const routes: Routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];\r\n return routes;\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n AXMAuthModule.forRoot(),\r\n AXPAuthModule.forRoot({\r\n strategies: [AXMOidcStrategy],\r\n }),\r\n ],\r\n exports: [],\r\n declarations: [],\r\n providers: [\r\n {\r\n provide: AXPDataProvider,\r\n useClass: AXMBackendDataProvider,\r\n },\r\n {\r\n provide: AXP_TENANT_LOADER,\r\n useClass: AXMOidcTenantLoader,\r\n },\r\n {\r\n provide: AXP_APPLICATION_LOADER,\r\n useClass: AXMOidcApplicationLoader,\r\n },\r\n {\r\n provide: AXP_PERMISSION_LOADER,\r\n useClass: AXMOidcPermissionLoader,\r\n },\r\n {\r\n provide: AXP_FEATURE_LOADER,\r\n useClass: AXMOidcFeatureLoader,\r\n },\r\n {\r\n provide: ROUTES,\r\n multi: true,\r\n useFactory: routesFactory,\r\n },\r\n ],\r\n})\r\nexport class AXMBackendModule { }\r\n","import { AXDataSourceFilterOption } from '@acorex/components/common';\r\nimport { endsWith, every, get, gt, gte, includes, isEmpty, isEqual, lt, lte, orderBy, some, startsWith } from 'lodash-es';\r\n\r\nfunction applyCondition(item: any, condition: any) {\r\n const rawValue = get(item, condition.field);\r\n const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;\r\n const conditionValue = typeof condition.value === 'string' ? condition.value.toLowerCase() : condition.value;\r\n\r\n // Logging for debugging\r\n // console.log('Condition:', condition);\r\n // console.log('Item Value:', itemValue);\r\n // console.log('Condition Value:', conditionValue);\r\n\r\n switch (condition.operator.type) {\r\n case 'equal':\r\n return isEqual(itemValue, conditionValue);\r\n case 'notEqual':\r\n return !isEqual(itemValue, conditionValue);\r\n case 'greaterThan':\r\n return gt(itemValue, conditionValue);\r\n case 'lessThan':\r\n return lt(itemValue, conditionValue);\r\n case 'greaterThanOrEqual':\r\n return gte(itemValue, conditionValue);\r\n case 'lessThanOrEqual':\r\n return lte(itemValue, conditionValue);\r\n case 'contains':\r\n if (typeof itemValue === 'string') {\r\n return includes(itemValue, conditionValue);\r\n } else if (Array.isArray(itemValue)) {\r\n return includes(itemValue.map(val => val.toString().toLowerCase()), conditionValue);\r\n }\r\n return false;\r\n case 'notContains':\r\n if (typeof itemValue === 'string') {\r\n return !includes(itemValue, conditionValue);\r\n } else if (Array.isArray(itemValue)) {\r\n return !includes(itemValue.map(val => val.toString().toLowerCase()), conditionValue);\r\n }\r\n return false;\r\n case 'startsWith':\r\n return typeof itemValue === 'string' && startsWith(itemValue, conditionValue);\r\n case 'endsWith':\r\n return typeof itemValue === 'string' && endsWith(itemValue, conditionValue);\r\n case 'isEmpty':\r\n return isEmpty(itemValue);\r\n case 'isNotEmpty':\r\n return !isEmpty(itemValue);\r\n case 'between':\r\n return itemValue >= condition.value.from && itemValue <= condition.value.to;\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\nexport function applyFilterArray(\r\n dataArray: any[],\r\n filters?: AXDataSourceFilterOption[],\r\n logic: 'and' | 'or' = 'and'\r\n): any[] {\r\n if (filters && filters.length) {\r\n return dataArray.filter((item) => {\r\n if (logic === 'and') {\r\n return filters.every((f) => {\r\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\r\n });\r\n } else {\r\n // logic === 'or'\r\n return filters.some((f) => {\r\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\r\n });\r\n }\r\n });\r\n } else {\r\n return dataArray;\r\n }\r\n}\r\n\r\n\r\nexport function applySortArray(dataArray: any, sorts: { field: string; dir: 'asc' | 'desc' }[]) {\r\n if (sorts && sorts.length > 0) {\r\n const sortFields = sorts.map((s) => s.field);\r\n const sortOrders = sorts.map((s) => s.dir);\r\n return orderBy(dataArray, sortFields, sortOrders);\r\n } else return dataArray;\r\n}\r\n","import { AXPDataProvider } from '@acorex/platform/common';\r\nimport { AXPStorageMockService } from '@acorex/platform/mocks';\r\nimport { Injectable } from '@angular/core';\r\nimport { applyFilterArray, applySortArray } from './data-Conditioner';\r\nimport { AXPEntityConfig } from '@acorex/platform/common';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMLocalDataProvider implements AXPDataProvider {\r\n constructor(private storageService: AXPStorageMockService) { }\r\n\r\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\r\n return this.storageService.insertOrupdateOne(entity.name, entityItem);\r\n }\r\n\r\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\r\n return this.storageService.insertMany(entity.name, entityList);\r\n }\r\n\r\n async getOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n console.log('@LOACAL getOne', entity.name, id);\r\n return this.storageService.getOne(entity.name, id);\r\n }\r\n\r\n async getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\r\n console.log('@LOACAL getMany', entity.name, params);\r\n const result = await this.storageService.getMany(entity.name, params);\r\n const sortedItems = applySortArray(result, params?.sort);\r\n const filteredItems = applyFilterArray(sortedItems, params?.filter?.filters);\r\n return new Promise((resolve) => {\r\n resolve({\r\n items: params ? filteredItems?.slice(params.skip, (params.skip ?? 0) + (params.take ?? 20)) : filteredItems,\r\n total: filteredItems?.length ?? 0,\r\n });\r\n });\r\n }\r\n\r\n updateOne(entity: AXPEntityConfig, id: string, data: { [key: string]: any }): Promise<any> {\r\n return this.storageService.updateOne(entity.name, id, data);\r\n }\r\n\r\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n return this.storageService.deleteOne(entity.name, id);\r\n }\r\n\r\n getFirst(entity: AXPEntityConfig): Promise<any> {\r\n return this.getMany(entity).then((res) => {\r\n return res.items ? res.items[0] : null;\r\n });\r\n }\r\n\r\n // Mock file uploader function\r\n uploadFile(file: File, title: string): Promise<string> {\r\n return new Promise((resolve) => {\r\n // Mock file ID generation\r\n const fileId = `mock-file-id-${Math.random().toString(36).substr(2, 9)}`;\r\n const fileRecord = { id: fileId, title, file };\r\n this.storageService.insertOrupdateOne('files', fileRecord).then(() => {\r\n resolve(fileId);\r\n });\r\n });\r\n }\r\n\r\n // Mock function to upload multiple files\r\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\r\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\r\n return Promise.all(uploadPromises);\r\n }\r\n\r\n // Mock function to view a file\r\n viewFile(id: string, name: string): Promise<Blob> {\r\n return new Promise(async (resolve, reject) => {\r\n const fileRecord = await this.storageService.getOne('files', id);\r\n if (fileRecord && fileRecord.file) {\r\n resolve(fileRecord.file);\r\n } else {\r\n reject('File not found');\r\n }\r\n });\r\n }\r\n\r\n // Mock function to download a file\r\n downloadFile(id: string, name: string): Promise<Blob> {\r\n return this.viewFile(id, name);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXMOidcUserManagerService","i1","i2"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { AXPDataProvider } from '@acorex/platform/common';
2
- import { widgetSchemas, convertPropertiesToColumns } from '@acorex/platform/layouts';
1
+ import { widgetSchemas, convertPropertiesToColumns, AXPDataProvider } from '@acorex/platform/common';
3
2
  import * as i0 from '@angular/core';
4
3
  import { NgModule } from '@angular/core';
5
4