@acorex/modules 18.0.0 → 18.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/auth/README.md +3 -3
- package/auth/lib/account/account.module.d.ts +1 -1
- package/backend/lib/auth/oidc/application.loader.d.ts +2 -2
- package/backend/lib/auth/oidc/oidc.strategy.d.ts +2 -3
- package/backend/lib/auth/oidc/tenant.loader.d.ts +2 -2
- package/backend/lib/data/api/data-provider.d.ts +1 -2
- package/backend/lib/data/local/data-Conditioner.d.ts +1 -1
- package/backend/lib/data/local/local-data-provider.d.ts +1 -1
- package/esm2022/auth/index.mjs +1 -1
- package/esm2022/auth/lib/account/account.module.mjs +3 -3
- package/esm2022/auth/lib/account/app-chooser/app-chooser-list.component.mjs +4 -4
- package/esm2022/auth/lib/account/app-chooser/app-chooser-slot.component.mjs +4 -4
- package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +4 -5
- package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +6 -5
- package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.mjs +3 -3
- package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +4 -5
- package/esm2022/auth/lib/auth.config.mjs +1 -1
- package/esm2022/auth/lib/auth.module.mjs +1 -1
- package/esm2022/auth/lib/auth.routes.mjs +1 -1
- package/esm2022/auth/lib/error-handler.mjs +2 -2
- package/esm2022/auth/lib/forgot/password/password.component.mjs +3 -3
- package/esm2022/auth/lib/forgot/routes.mjs +1 -1
- package/esm2022/auth/lib/login/login.module.mjs +1 -1
- package/esm2022/auth/lib/login/password/password.component.mjs +3 -3
- package/esm2022/auth/lib/shared/layouts/blank/blank.layout.mjs +1 -1
- package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +5 -7
- package/esm2022/auth/lib/shared/services/idle.service.mjs +1 -1
- package/esm2022/auth/lib/shared/services/index.mjs +1 -1
- package/esm2022/auth/lib/store/auth.effects.mjs +1 -1
- package/esm2022/auth/lib/store/index.mjs +1 -1
- package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +3 -3
- package/esm2022/auth/lib/two-factor/two-factor.module.mjs +1 -1
- package/esm2022/backend/index.mjs +1 -1
- package/esm2022/backend/lib/auth/oidc/application.loader.mjs +17 -12
- package/esm2022/backend/lib/auth/oidc/configuration.service.mjs +2 -3
- package/esm2022/backend/lib/auth/oidc/feature.loader.mjs +1 -1
- package/esm2022/backend/lib/auth/oidc/index.mjs +1 -1
- package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +2 -4
- package/esm2022/backend/lib/auth/oidc/permission.loader.mjs +3 -3
- package/esm2022/backend/lib/auth/oidc/signincallback.component.mjs +1 -1
- package/esm2022/backend/lib/auth/oidc/tenant.loader.mjs +4 -13
- package/esm2022/backend/lib/auth/oidc/usermanager.service.mjs +1 -1
- package/esm2022/backend/lib/backend.configs.mjs +1 -1
- package/esm2022/backend/lib/backend.module.mjs +1 -1
- package/esm2022/backend/lib/data/api/data-provider.mjs +54 -15
- package/esm2022/backend/lib/data/index.mjs +1 -1
- package/esm2022/backend/lib/data/local/data-Conditioner.mjs +25 -19
- package/esm2022/backend/lib/data/local/local-data-provider.mjs +1 -1
- package/esm2022/log-management/lib/audit-logs.entity.mjs +2 -3
- package/esm2022/notification/index.mjs +1 -1
- package/esm2022/notification/lib/notification.module.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-jEqtVhBE.mjs → acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs} +23 -25
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs +70 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-blank.layout-BOdRxDNv.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-Drm4fC1I.mjs → acorex-modules-auth-login.module-CsfZ__0S.mjs} +5 -7
- package/fesm2022/acorex-modules-auth-login.module-CsfZ__0S.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-master.layout-7OSbK7SF.mjs +37 -0
- package/fesm2022/acorex-modules-auth-master.layout-7OSbK7SF.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-V2IWBUZb.mjs +125 -0
- package/fesm2022/acorex-modules-auth-password.component-V2IWBUZb.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-qr9vkp8j.mjs +72 -0
- package/fesm2022/acorex-modules-auth-password.component-qr9vkp8j.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-DyjibH6l.mjs → acorex-modules-auth-routes--jOmlQkp.mjs} +2 -2
- package/fesm2022/acorex-modules-auth-routes--jOmlQkp.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs +83 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs +40 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor.module-A0hevYO2.mjs → acorex-modules-auth-two-factor.module-CmSVriRz.mjs} +4 -6
- package/fesm2022/acorex-modules-auth-two-factor.module-CmSVriRz.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth.mjs +2 -4
- package/fesm2022/acorex-modules-auth.mjs.map +1 -1
- package/fesm2022/acorex-modules-backend.mjs +98 -61
- package/fesm2022/acorex-modules-backend.mjs.map +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +1 -2
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification.mjs.map +1 -1
- package/log-management/lib/audit-logs.entity.d.ts +1 -1
- package/notification/README.md +3 -3
- package/package.json +1 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-jEqtVhBE.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-BbtMSwfI.mjs +0 -72
- package/fesm2022/acorex-modules-auth-app-chooser.component-BbtMSwfI.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-login.module-Drm4fC1I.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-master.layout-cAm6TYeA.mjs +0 -39
- package/fesm2022/acorex-modules-auth-master.layout-cAm6TYeA.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-Ch2Wqi2W.mjs +0 -74
- package/fesm2022/acorex-modules-auth-password.component-Ch2Wqi2W.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-D4CkGaq0.mjs +0 -127
- package/fesm2022/acorex-modules-auth-password.component-D4CkGaq0.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-routes-DyjibH6l.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CJu2Lfbf.mjs +0 -84
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CJu2Lfbf.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-two-factor-code.component-B41iXHoT.mjs +0 -40
- package/fesm2022/acorex-modules-auth-two-factor-code.component-B41iXHoT.mjs.map +0 -1
- 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,
|
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}
|
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
|
49
|
-
if (filters
|
58
|
+
const filter = params.filter;
|
59
|
+
if (filter.filters) {
|
50
60
|
// Construct filter string from provided filters
|
51
|
-
const dynamicFilters = filters
|
52
|
-
|
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
|
-
|
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}
|
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
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
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(
|
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
|
-
|
429
|
-
|
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
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
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 (
|
587
|
+
if (typeof itemValue === 'string') {
|
556
588
|
return includes(itemValue, conditionValue);
|
557
589
|
}
|
558
|
-
else
|
559
|
-
return
|
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 (
|
595
|
+
if (typeof itemValue === 'string') {
|
562
596
|
return !includes(itemValue, conditionValue);
|
563
597
|
}
|
564
|
-
else
|
565
|
-
return !
|
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 >=
|
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
|
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
|
|