@acorex/modules 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/README.md +7 -0
  2. package/auth/README.md +3 -0
  3. package/auth/index.d.ts +3 -0
  4. package/auth/lib/account/account.module.d.ts +8 -0
  5. package/auth/lib/account/app-chooser/app-chooser-list.component.d.ts +11 -0
  6. package/auth/lib/account/app-chooser/app-chooser-slot.component.d.ts +12 -0
  7. package/auth/lib/account/app-chooser/app-chooser.component.d.ts +13 -0
  8. package/auth/lib/account/profile/profile-slot.component.d.ts +16 -0
  9. package/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.d.ts +10 -0
  10. package/auth/lib/account/tenant-chooser/tenant-chooser.component.d.ts +21 -0
  11. package/auth/lib/auth.config.d.ts +23 -0
  12. package/auth/lib/auth.module.d.ts +14 -0
  13. package/auth/lib/auth.routes.d.ts +2 -0
  14. package/auth/lib/error-handler.d.ts +10 -0
  15. package/auth/lib/forgot/password/password.component.d.ts +11 -0
  16. package/auth/lib/forgot/routes.d.ts +3 -0
  17. package/auth/lib/login/login.module.d.ts +7 -0
  18. package/auth/lib/login/password/password.component.d.ts +22 -0
  19. package/auth/lib/register/email/email.component.d.ts +5 -0
  20. package/auth/lib/register/register.module.d.ts +7 -0
  21. package/auth/lib/register/result/result.component.d.ts +5 -0
  22. package/auth/lib/shared/layouts/blank/blank.layout.d.ts +8 -0
  23. package/auth/lib/shared/layouts/master/master.layout.d.ts +7 -0
  24. package/auth/lib/shared/services/idle.service.d.ts +17 -0
  25. package/auth/lib/shared/services/index.d.ts +1 -0
  26. package/auth/lib/store/auth.effects.d.ts +18 -0
  27. package/auth/lib/store/index.d.ts +1 -0
  28. package/auth/lib/two-factor/two-factor-code/two-factor-code.component.d.ts +8 -0
  29. package/auth/lib/two-factor/two-factor.module.d.ts +7 -0
  30. package/backend/README.md +4 -0
  31. package/backend/index.d.ts +2 -0
  32. package/backend/lib/auth/oidc/application.loader.d.ts +16 -0
  33. package/backend/lib/auth/oidc/feature.loader.d.ts +5 -0
  34. package/backend/lib/auth/oidc/index.d.ts +5 -0
  35. package/backend/lib/auth/oidc/oidc.strategy.d.ts +19 -0
  36. package/backend/lib/auth/oidc/permission.loader.d.ts +5 -0
  37. package/backend/lib/auth/oidc/signincallback.component.d.ts +13 -0
  38. package/backend/lib/auth/oidc/tenant.loader.d.ts +16 -0
  39. package/backend/lib/auth/oidc/usermanager.service.d.ts +12 -0
  40. package/backend/lib/auth/userpass/application.loader.d.ts +6 -0
  41. package/backend/lib/auth/userpass/index.d.ts +4 -0
  42. package/backend/lib/auth/userpass/permission.loader.d.ts +5 -0
  43. package/backend/lib/auth/userpass/tenant.loader.d.ts +6 -0
  44. package/backend/lib/auth/userpass/userpass.strategy.d.ts +12 -0
  45. package/backend/lib/backend.configs.d.ts +99 -0
  46. package/backend/lib/backend.module.d.ts +8 -0
  47. package/backend/lib/data/api/data-provider.d.ts +21 -0
  48. package/esm2022/acorex-modules.mjs +5 -0
  49. package/esm2022/auth/acorex-modules-auth.mjs +5 -0
  50. package/esm2022/auth/index.mjs +4 -0
  51. package/esm2022/auth/lib/account/account.module.mjs +106 -0
  52. package/esm2022/auth/lib/account/app-chooser/app-chooser-list.component.mjs +31 -0
  53. package/esm2022/auth/lib/account/app-chooser/app-chooser-slot.component.mjs +41 -0
  54. package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +62 -0
  55. package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +56 -0
  56. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.mjs +26 -0
  57. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +81 -0
  58. package/esm2022/auth/lib/auth.config.mjs +22 -0
  59. package/esm2022/auth/lib/auth.module.mjs +45 -0
  60. package/esm2022/auth/lib/auth.routes.mjs +38 -0
  61. package/esm2022/auth/lib/error-handler.mjs +41 -0
  62. package/esm2022/auth/lib/forgot/password/password.component.mjs +56 -0
  63. package/esm2022/auth/lib/forgot/routes.mjs +7 -0
  64. package/esm2022/auth/lib/login/login.module.mjs +53 -0
  65. package/esm2022/auth/lib/login/password/password.component.mjs +99 -0
  66. package/esm2022/auth/lib/register/email/email.component.mjs +42 -0
  67. package/esm2022/auth/lib/register/register.module.mjs +59 -0
  68. package/esm2022/auth/lib/register/result/result.component.mjs +33 -0
  69. package/esm2022/auth/lib/shared/layouts/blank/blank.layout.mjs +15 -0
  70. package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +21 -0
  71. package/esm2022/auth/lib/shared/services/idle.service.mjs +42 -0
  72. package/esm2022/auth/lib/shared/services/index.mjs +2 -0
  73. package/esm2022/auth/lib/store/auth.effects.mjs +90 -0
  74. package/esm2022/auth/lib/store/index.mjs +3 -0
  75. package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +37 -0
  76. package/esm2022/auth/lib/two-factor/two-factor.module.mjs +42 -0
  77. package/esm2022/backend/acorex-modules-backend.mjs +5 -0
  78. package/esm2022/backend/index.mjs +3 -0
  79. package/esm2022/backend/lib/auth/oidc/application.loader.mjs +47 -0
  80. package/esm2022/backend/lib/auth/oidc/feature.loader.mjs +7 -0
  81. package/esm2022/backend/lib/auth/oidc/index.mjs +6 -0
  82. package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +77 -0
  83. package/esm2022/backend/lib/auth/oidc/permission.loader.mjs +7 -0
  84. package/esm2022/backend/lib/auth/oidc/signincallback.component.mjs +26 -0
  85. package/esm2022/backend/lib/auth/oidc/tenant.loader.mjs +41 -0
  86. package/esm2022/backend/lib/auth/oidc/usermanager.service.mjs +35 -0
  87. package/esm2022/backend/lib/auth/userpass/application.loader.mjs +30 -0
  88. package/esm2022/backend/lib/auth/userpass/index.mjs +5 -0
  89. package/esm2022/backend/lib/auth/userpass/permission.loader.mjs +12 -0
  90. package/esm2022/backend/lib/auth/userpass/tenant.loader.mjs +26 -0
  91. package/esm2022/backend/lib/auth/userpass/userpass.strategy.mjs +40 -0
  92. package/esm2022/backend/lib/backend.configs.mjs +3 -0
  93. package/esm2022/backend/lib/backend.module.mjs +106 -0
  94. package/esm2022/backend/lib/data/api/data-provider.mjs +67 -0
  95. package/esm2022/index.mjs +2 -0
  96. package/esm2022/notification/acorex-modules-notification.mjs +5 -0
  97. package/esm2022/notification/index.mjs +2 -0
  98. package/esm2022/notification/lib/notification.module.mjs +16 -0
  99. package/fesm2022/acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs +484 -0
  100. package/fesm2022/acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs.map +1 -0
  101. package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs +70 -0
  102. package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs.map +1 -0
  103. package/fesm2022/acorex-modules-auth-blank.layout-0xNRyD5z.mjs +18 -0
  104. package/fesm2022/acorex-modules-auth-blank.layout-0xNRyD5z.mjs.map +1 -0
  105. package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs +45 -0
  106. package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs.map +1 -0
  107. package/fesm2022/acorex-modules-auth-login.module-lGs54nBU.mjs +71 -0
  108. package/fesm2022/acorex-modules-auth-login.module-lGs54nBU.mjs.map +1 -0
  109. package/fesm2022/acorex-modules-auth-master.layout-ytopPv2z.mjs +37 -0
  110. package/fesm2022/acorex-modules-auth-master.layout-ytopPv2z.mjs.map +1 -0
  111. package/fesm2022/acorex-modules-auth-password.component-Q9Me4kkK.mjs +72 -0
  112. package/fesm2022/acorex-modules-auth-password.component-Q9Me4kkK.mjs.map +1 -0
  113. package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs +110 -0
  114. package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs.map +1 -0
  115. package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs +77 -0
  116. package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs.map +1 -0
  117. package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs +36 -0
  118. package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs.map +1 -0
  119. package/fesm2022/acorex-modules-auth-routes-jgo2XGe0.mjs +9 -0
  120. package/fesm2022/acorex-modules-auth-routes-jgo2XGe0.mjs.map +1 -0
  121. package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs +84 -0
  122. package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs.map +1 -0
  123. package/fesm2022/acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs +40 -0
  124. package/fesm2022/acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs.map +1 -0
  125. package/fesm2022/acorex-modules-auth-two-factor.module--fcoNW-s.mjs +60 -0
  126. package/fesm2022/acorex-modules-auth-two-factor.module--fcoNW-s.mjs.map +1 -0
  127. package/fesm2022/acorex-modules-auth.mjs +19 -0
  128. package/fesm2022/acorex-modules-auth.mjs.map +1 -0
  129. package/fesm2022/acorex-modules-backend.mjs +488 -0
  130. package/fesm2022/acorex-modules-backend.mjs.map +1 -0
  131. package/fesm2022/acorex-modules-notification.mjs +23 -0
  132. package/fesm2022/acorex-modules-notification.mjs.map +1 -0
  133. package/fesm2022/acorex-modules.mjs +6 -0
  134. package/fesm2022/acorex-modules.mjs.map +1 -0
  135. package/index.d.ts +2 -0
  136. package/notification/README.md +4 -0
  137. package/notification/index.d.ts +1 -0
  138. package/notification/lib/notification.module.d.ts +6 -0
  139. package/package.json +44 -0
@@ -0,0 +1,488 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, Inject, Injector, Component, NgModule } from '@angular/core';
3
+ import * as i1$1 from '@acorex/modules/auth';
4
+ import { AXM_AUTH_CONFIG_TOKEN, AXMAuthModule } from '@acorex/modules/auth';
5
+ import * as i2$1 from '@acorex/platform/auth';
6
+ import { AXP_TENANT_LOADER, AXP_APPLICATION_LOADER, AXP_PERMISSION_LOADER, AXP_FEATURE_LOADER, AXPAuthModule } from '@acorex/platform/auth';
7
+ import { AXPTextLogoConfig, AXPDataProvider } from '@acorex/platform/common';
8
+ import * as i2 from '@angular/router';
9
+ import { ROUTES } from '@angular/router';
10
+ import * as i1 from '@angular/common/http';
11
+ import { HttpParams } from '@angular/common/http';
12
+ import { firstValueFrom, map, of, delay } from 'rxjs';
13
+ import { UserManager, WebStorageStateStore } from 'oidc-client-ts';
14
+
15
+ const AXM_BACKEND_CONFIG_TOKEN = new InjectionToken('AXM_BACKEND_CONFIG_TOKEN');
16
+
17
+ class AXMBackendDataProvider {
18
+ constructor(http) {
19
+ this.http = http;
20
+ this.configs = inject(AXM_BACKEND_CONFIG_TOKEN);
21
+ this.mainUrl = this.configs.baseUrl;
22
+ }
23
+ insertOne(entity, entityItem) {
24
+ console.log('inserting....', entity.name, entityItem);
25
+ const url = `${this.mainUrl}/${entity.module}/${entity.name}`;
26
+ return firstValueFrom(this.http.post(url, entityItem));
27
+ }
28
+ insertMany(entity, entityList) {
29
+ const promises = entityList.map((entity) => {
30
+ const url = `${this.mainUrl}/${entity.module}/${entity.name}`;
31
+ return firstValueFrom(this.http.post(url, entity));
32
+ });
33
+ return Promise.all(promises);
34
+ }
35
+ getOne(entity, id) {
36
+ const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;
37
+ return firstValueFrom(this.http.get(url));
38
+ }
39
+ getMany(entity, params) {
40
+ console.log('@REMOTE getMany', entity.name, params);
41
+ let httpParams = new HttpParams()
42
+ .set('Skip', params?.skip?.toString() ?? '0')
43
+ .set('Take', params?.take?.toString() ?? '10');
44
+ if (params?.sort && params?.sort.length > 0) {
45
+ const sortParam = params?.sort.map((sort) => `${sort.field}:${sort.dir}`).join(',');
46
+ httpParams = httpParams.set('$orderby', sortParam);
47
+ }
48
+ return firstValueFrom(this.http.get(`${this.mainUrl}/${entity.module}/${entity.name}`, { params: httpParams })).then((response) => {
49
+ return {
50
+ total: response.totalCount,
51
+ items: response.items,
52
+ };
53
+ });
54
+ }
55
+ updateOne(entity, id, data) {
56
+ const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;
57
+ return firstValueFrom(this.http.put(url, data));
58
+ }
59
+ deleteOne(entity, id) {
60
+ console.log('deleteOne', entity.name, id);
61
+ const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;
62
+ return firstValueFrom(this.http.delete(url));
63
+ }
64
+ getFirst(entity) {
65
+ // return this.getMany(entity.name).then((res) => res.items[0]);
66
+ return new Promise((resolve) => resolve(true));
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendDataProvider, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
69
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendDataProvider, providedIn: 'root' }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendDataProvider, decorators: [{
72
+ type: Injectable,
73
+ args: [{
74
+ providedIn: 'root',
75
+ }]
76
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
77
+
78
+ class AXMOidcApplicationLoader {
79
+ constructor(http) {
80
+ this.http = http;
81
+ this.configs = inject(AXM_AUTH_CONFIG_TOKEN);
82
+ this.apiGetApps = `${this.configs.apiResourceUrl}/applications/GetListByTenantId`;
83
+ this.apiSetApp = `${this.configs.apiResourceUrl}/SetApplication`;
84
+ }
85
+ getList() {
86
+ return this.http.get(this.apiGetApps).pipe(map((response) => {
87
+ console.log('response', response);
88
+ return response.items.map((item) => this.mapToAXPApplication(item));
89
+ }));
90
+ }
91
+ set(application) {
92
+ return this.http.post(this.apiSetApp, { applicationId: application.id }).pipe(map((response) => {
93
+ return {
94
+ accessToken: response.token,
95
+ refreshToken: response.token,
96
+ };
97
+ }));
98
+ }
99
+ mapToAXPApplication(item) {
100
+ console.log('mapToAXPApplication', item);
101
+ return {
102
+ id: item.id,
103
+ name: item.name || 'defaultName',
104
+ title: item.name || 'defaultTitle',
105
+ version: item.version || '1.0.0',
106
+ description: item.description,
107
+ logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined
108
+ editionName: item.editionName,
109
+ // features: item.features || [],
110
+ };
111
+ }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcApplicationLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
113
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcApplicationLoader }); }
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcApplicationLoader, decorators: [{
116
+ type: Injectable
117
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
118
+
119
+ class AXMOidcFeatureLoader {
120
+ getList() {
121
+ return of([]).pipe(delay(0));
122
+ }
123
+ }
124
+
125
+ // Other imports...
126
+ class AXMOidcUserManagerService {
127
+ constructor(authConfig) {
128
+ this.authConfig = authConfig;
129
+ if (!authConfig.oidc_settings) {
130
+ throw new Error('OIDC configuration is missing');
131
+ }
132
+ this.userManager = new UserManager({
133
+ ...authConfig.oidc_settings,
134
+ userStore: new WebStorageStateStore({ store: window.localStorage }),
135
+ });
136
+ }
137
+ getUserManager() {
138
+ return this.userManager;
139
+ }
140
+ completeAuthentication() {
141
+ this.userManager.signinSilentCallback();
142
+ }
143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcUserManagerService, deps: [{ token: AXM_AUTH_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
144
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcUserManagerService, providedIn: 'root' }); }
145
+ }
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcUserManagerService, decorators: [{
147
+ type: Injectable,
148
+ args: [{
149
+ providedIn: 'root',
150
+ }]
151
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
152
+ type: Inject,
153
+ args: [AXM_AUTH_CONFIG_TOKEN]
154
+ }] }] });
155
+
156
+ class AXMOidcStrategy {
157
+ constructor() {
158
+ this.injector = inject(Injector);
159
+ this.userManagerService = this.injector.get(AXMOidcUserManagerService);
160
+ this.userManager = this.userManagerService.getUserManager();
161
+ }
162
+ get name() {
163
+ return 'oidc';
164
+ }
165
+ async signin(credentials) {
166
+ const currentUser = await this.userManager.getUser();
167
+ if (currentUser && !currentUser.expired && currentUser.profile.name == credentials.username) {
168
+ console.log('user alredy signed in', currentUser);
169
+ const user = {
170
+ id: currentUser.id_token ?? '1',
171
+ name: currentUser.profile.name ?? credentials.username,
172
+ title: currentUser.profile.given_name ?? 'no Name!',
173
+ avatar: currentUser.profile.picture ?? 'https://i.pravatar.cc/150?img=52',
174
+ };
175
+ const accessToken = currentUser.access_token;
176
+ const refreshToken = currentUser.refresh_token ?? '';
177
+ return { user, accessToken, refreshToken };
178
+ }
179
+ await this.userManager.removeUser();
180
+ await this.userManager.clearStaleState();
181
+ const oidcUser = await this.userManager.signinSilent({
182
+ extraQueryParams: {
183
+ identity_provider: 'Local',
184
+ hardcoded_identity_id: '1',
185
+ username: credentials.username,
186
+ password: credentials.password,
187
+ },
188
+ });
189
+ console.log('here is oidcUser', oidcUser);
190
+ if (oidcUser) {
191
+ const user = {
192
+ id: oidcUser.id_token ?? '1',
193
+ name: oidcUser.profile.name ?? credentials.username,
194
+ title: oidcUser.profile.given_name ?? 'no Name!',
195
+ avatar: oidcUser.profile.picture ?? 'https://i.pravatar.cc/150?img=52',
196
+ };
197
+ const accessToken = oidcUser.access_token;
198
+ const refreshToken = oidcUser.refresh_token ?? '';
199
+ return { user, accessToken, refreshToken };
200
+ }
201
+ throw new Error('Invalid credentials');
202
+ }
203
+ async signout() {
204
+ console.log('User signed out');
205
+ this.userManager.removeUser();
206
+ this.userManager.clearStaleState();
207
+ this.userManager.signoutSilent();
208
+ }
209
+ async refreshToken(refreshToken) {
210
+ const user = {
211
+ id: '1',
212
+ name: 'admin',
213
+ title: 'Arash',
214
+ avatar: 'https://i.pravatar.cc/150?img=52',
215
+ };
216
+ const accessToken = this.generateAccessToken();
217
+ const newRefreshToken = this.generateAccessToken();
218
+ return { user, accessToken, refreshToken: newRefreshToken };
219
+ }
220
+ generateAccessToken() {
221
+ return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';
222
+ }
223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
224
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcStrategy }); }
225
+ }
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcStrategy, decorators: [{
227
+ type: Injectable
228
+ }], ctorParameters: () => [] });
229
+
230
+ class AXMOidcPermissionLoader {
231
+ getList() {
232
+ return of(['asc.admin.message', 'asc.admin.settings']).pipe(delay(0));
233
+ }
234
+ }
235
+
236
+ class AXMOidcTenantLoader {
237
+ constructor(http) {
238
+ this.http = http;
239
+ this.configs = inject(AXM_AUTH_CONFIG_TOKEN);
240
+ this.apiGetTenants = `${this.configs.apiResourceUrl}/user-tenants/Tenants `;
241
+ this.apiSetTenant = `${this.configs.apiResourceUrl}/SetTenant`;
242
+ }
243
+ getList() {
244
+ return this.http
245
+ .get(this.apiGetTenants)
246
+ .pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));
247
+ }
248
+ set(tenant) {
249
+ return this.http.post(this.apiSetTenant, { tenantId: tenant.id }).pipe(map((response) => {
250
+ return {
251
+ accessToken: response.token,
252
+ refreshToken: response.token,
253
+ };
254
+ }));
255
+ }
256
+ mapToAXPTenant(item) {
257
+ return {
258
+ id: item.id,
259
+ name: item.name || 'defaultName',
260
+ title: item.name || 'defaultTitle',
261
+ // Add other fields and defaults as needed, and handle the logo if applicable
262
+ };
263
+ }
264
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcTenantLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
265
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcTenantLoader }); }
266
+ }
267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcTenantLoader, decorators: [{
268
+ type: Injectable
269
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
270
+
271
+ class ASCApplicationLoader {
272
+ getList() {
273
+ const app = {
274
+ id: '0',
275
+ name: 'asc',
276
+ title: 'Adelide Soaring Club',
277
+ logo: new AXPTextLogoConfig('ASC'),
278
+ version: '1.0.1',
279
+ editionName: 'Standard',
280
+ };
281
+ const app2 = {
282
+ id: '1',
283
+ name: 'asc1',
284
+ title: 'Application 2',
285
+ logo: new AXPTextLogoConfig('ASC'),
286
+ version: '1.0.1',
287
+ editionName: 'Standard',
288
+ };
289
+ return of([app]).pipe(delay(0));
290
+ }
291
+ set(application) {
292
+ return of({
293
+ accessToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',
294
+ refreshToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',
295
+ }).pipe(delay(500));
296
+ }
297
+ }
298
+
299
+ class ASCPermissionLoader {
300
+ getList() {
301
+ return of([
302
+ 'asc.admin.message',
303
+ 'asc.admin.settings',
304
+ 'asc.admin.gliding',
305
+ ])
306
+ .pipe(delay(0));
307
+ }
308
+ }
309
+
310
+ class ASCTenantLoader {
311
+ getList() {
312
+ const tenant = {
313
+ id: '0',
314
+ name: 'asc',
315
+ title: 'Adelide Soaring Club',
316
+ logo: new AXPTextLogoConfig('ASC'),
317
+ };
318
+ const tenant2 = {
319
+ id: '1',
320
+ name: 'asc1',
321
+ title: 'Adelide Soaring Club',
322
+ logo: new AXPTextLogoConfig('ASC'),
323
+ };
324
+ return of([tenant]).pipe(delay(0));
325
+ }
326
+ set(tenant) {
327
+ return of({
328
+ accessToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',
329
+ refreshToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',
330
+ }).pipe(delay(0));
331
+ }
332
+ }
333
+
334
+ class ASCUserPassStrategy {
335
+ get name() {
336
+ return 'userpass';
337
+ }
338
+ async signin(credentials) {
339
+ const result = credentials.username == 'admin' && credentials.password == '123';
340
+ if (result) {
341
+ const user = {
342
+ id: '1',
343
+ name: credentials.username,
344
+ title: 'Admin',
345
+ avatar: 'https://i.pravatar.cc/150?img=52',
346
+ };
347
+ const accessToken = this.generateAccessToken();
348
+ const refreshToken = this.generateAccessToken();
349
+ return { user, accessToken, refreshToken };
350
+ }
351
+ else {
352
+ throw new Error('Invalid credentials');
353
+ }
354
+ }
355
+ async signout() {
356
+ console.log('User signed out');
357
+ }
358
+ async refreshToken(refreshToken) {
359
+ const user = {
360
+ id: '1',
361
+ name: 'admin',
362
+ title: 'Arash',
363
+ avatar: 'https://i.pravatar.cc/150?img=52',
364
+ };
365
+ const accessToken = this.generateAccessToken();
366
+ const newRefreshToken = this.generateAccessToken();
367
+ return { user, accessToken, refreshToken: newRefreshToken };
368
+ }
369
+ generateAccessToken() {
370
+ return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';
371
+ }
372
+ }
373
+
374
+ class SignincallbackComponent {
375
+ constructor(userManagerService, router, route) {
376
+ this.userManagerService = userManagerService;
377
+ this.router = router;
378
+ this.route = route;
379
+ }
380
+ ngOnInit() {
381
+ this.userManagerService.completeAuthentication();
382
+ }
383
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SignincallbackComponent, deps: [{ token: AXMOidcUserManagerService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
384
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SignincallbackComponent, selector: "ng-component", providers: [], ngImport: i0, template: '', isInline: true }); }
385
+ }
386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SignincallbackComponent, decorators: [{
387
+ type: Component,
388
+ args: [{
389
+ template: '',
390
+ providers: [],
391
+ }]
392
+ }], ctorParameters: () => [{ type: AXMOidcUserManagerService }, { type: i2.Router }, { type: i2.ActivatedRoute }] });
393
+
394
+ function routesFactory() {
395
+ const routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];
396
+ return routes;
397
+ }
398
+ class AXMBackendModule {
399
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
400
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendModule, imports: [i1$1.AXMAuthModule, i2$1.AXPAuthModule] }); }
401
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendModule, providers: [
402
+ {
403
+ provide: AXPDataProvider,
404
+ // useClass: AXMLocalDataProvider,
405
+ useClass: AXMBackendDataProvider,
406
+ },
407
+ {
408
+ provide: AXP_TENANT_LOADER,
409
+ // useClass: ASCTenantLoader,
410
+ useClass: AXMOidcTenantLoader,
411
+ },
412
+ {
413
+ provide: AXP_APPLICATION_LOADER,
414
+ // useClass: ASCApplicationLoader,
415
+ useClass: AXMOidcApplicationLoader,
416
+ },
417
+ {
418
+ provide: AXP_PERMISSION_LOADER,
419
+ // useClass: ASCPermissionLoader,
420
+ useClass: AXMOidcPermissionLoader,
421
+ },
422
+ {
423
+ provide: AXP_FEATURE_LOADER,
424
+ // useClass: ASCFeatureLoader, //TODO: not implimented
425
+ useClass: AXMOidcFeatureLoader,
426
+ },
427
+ {
428
+ provide: ROUTES,
429
+ multi: true,
430
+ useFactory: routesFactory,
431
+ },
432
+ ], imports: [AXMAuthModule.forRoot(),
433
+ AXPAuthModule.forRoot({
434
+ strategies: [AXMOidcStrategy, ASCUserPassStrategy],
435
+ })] }); }
436
+ }
437
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendModule, decorators: [{
438
+ type: NgModule,
439
+ args: [{
440
+ imports: [
441
+ AXMAuthModule.forRoot(),
442
+ AXPAuthModule.forRoot({
443
+ strategies: [AXMOidcStrategy, ASCUserPassStrategy],
444
+ }),
445
+ ],
446
+ exports: [],
447
+ declarations: [],
448
+ providers: [
449
+ {
450
+ provide: AXPDataProvider,
451
+ // useClass: AXMLocalDataProvider,
452
+ useClass: AXMBackendDataProvider,
453
+ },
454
+ {
455
+ provide: AXP_TENANT_LOADER,
456
+ // useClass: ASCTenantLoader,
457
+ useClass: AXMOidcTenantLoader,
458
+ },
459
+ {
460
+ provide: AXP_APPLICATION_LOADER,
461
+ // useClass: ASCApplicationLoader,
462
+ useClass: AXMOidcApplicationLoader,
463
+ },
464
+ {
465
+ provide: AXP_PERMISSION_LOADER,
466
+ // useClass: ASCPermissionLoader,
467
+ useClass: AXMOidcPermissionLoader,
468
+ },
469
+ {
470
+ provide: AXP_FEATURE_LOADER,
471
+ // useClass: ASCFeatureLoader, //TODO: not implimented
472
+ useClass: AXMOidcFeatureLoader,
473
+ },
474
+ {
475
+ provide: ROUTES,
476
+ multi: true,
477
+ useFactory: routesFactory,
478
+ },
479
+ ],
480
+ }]
481
+ }] });
482
+
483
+ /**
484
+ * Generated bundle index. Do not edit.
485
+ */
486
+
487
+ export { AXMBackendModule, AXM_BACKEND_CONFIG_TOKEN };
488
+ //# sourceMappingURL=acorex-modules-backend.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-backend.mjs","sources":["../../../../libs/modules/backend/src/lib/backend.configs.ts","../../../../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/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/tenant.loader.ts","../../../../libs/modules/backend/src/lib/auth/userpass/application.loader.ts","../../../../libs/modules/backend/src/lib/auth/userpass/permission.loader.ts","../../../../libs/modules/backend/src/lib/auth/userpass/tenant.loader.ts","../../../../libs/modules/backend/src/lib/auth/userpass/userpass.strategy.ts","../../../../libs/modules/backend/src/lib/auth/oidc/signincallback.component.ts","../../../../libs/modules/backend/src/lib/backend.module.ts","../../../../libs/modules/backend/src/acorex-modules-backend.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const AXM_BACKEND_CONFIG_TOKEN = new InjectionToken<AXMBackendConfigs>('AXM_BACKEND_CONFIG_TOKEN');\n\nexport interface AXMBackendConfigs {\n baseUrl: string;\n}\n\nexport interface LocalizationValues {\n Default?: any;\n AbpLocalization?: {\n DisplayName: string;\n Description: string;\n };\n AbpTiming?: {\n DisplayName: string;\n Description: string;\n };\n // ... Other properties of LocalizationValues\n}\n\nexport interface CurrentCulture {\n displayName: string;\n englishName: string;\n threeLetterIsoLanguageName: string;\n twoLetterIsoLanguageName: string;\n isRightToLeft: boolean;\n cultureName: string;\n name: string;\n nativeName: string;\n dateTimeFormat: {\n calendarAlgorithmType: string;\n dateTimeFormatLong: string;\n shortDatePattern: string;\n fullDateTimePattern: string;\n dateSeparator: string;\n shortTimePattern: string;\n longTimePattern: string;\n };\n}\n\nexport interface SettingValues {\n 'Abp.Localization.DefaultLanguage': string;\n 'Abp.Timing.TimeZone': string;\n // ... Other properties of SettingValues\n}\n\nexport interface User {\n isAuthenticated: boolean;\n id: string | null;\n tenantId: string | null;\n // ... Other properties of User\n}\n\nexport interface FeaturesValues {\n [key: string]: string;\n}\n\nexport interface Tenant {\n id: string | null;\n name: string | null;\n isAvailable: boolean;\n}\n\nexport interface TimeZone {\n iana: {\n timeZoneName: string;\n };\n windows: {\n timeZoneId: string;\n };\n}\n\nexport interface RootObject {\n localization: {\n values: LocalizationValues;\n resources: any;\n languages: any[];\n currentCulture: CurrentCulture;\n defaultResourceName: string | null;\n languagesMap: any;\n languageFilesMap: any;\n };\n auth: {\n grantedPolicies: any;\n };\n setting: {\n values: SettingValues;\n };\n currentUser: User;\n features: {\n values: FeaturesValues;\n };\n globalFeatures: {\n enabledFeatures: any[];\n };\n multiTenancy: {\n isEnabled: boolean;\n };\n currentTenant: Tenant;\n timing: {\n timeZone: TimeZone;\n };\n clock: {\n kind: string;\n };\n objectExtensions: {\n modules: any;\n enums: any;\n };\n extraProperties: any;\n}\n","import { AXM_BACKEND_CONFIG_TOKEN } from '../../backend.configs';\nimport { AXPDataProvider } from '@acorex/platform/common';\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(AXM_BACKEND_CONFIG_TOKEN);\n private mainUrl = this.configs.baseUrl;\n\n constructor(private http: HttpClient) {}\n\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\n console.log('inserting....', entity.name, entityItem);\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 console.log('@REMOTE getMany', entity.name, params);\n\n let httpParams = new HttpParams()\n .set('Skip', params?.skip?.toString() ?? '0')\n .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 return firstValueFrom(\n this.http.get<any>(`${this.mainUrl}/${entity.module}/${entity.name}`, { params: httpParams })\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 console.log('deleteOne', entity.name, id);\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","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXPApplication, AXPApplicationLoader, AXPTokens } from '@acorex/platform/auth';\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(AXM_AUTH_CONFIG_TOKEN);\n private apiGetApps = `${this.configs.apiResourceUrl}/applications/GetListByTenantId`;\n private apiSetApp = `${this.configs.apiResourceUrl}/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 console.log('response', response);\n return response.items.map((item) => this.mapToAXPApplication(item));\n })\n );\n }\n\n set(application: AXPApplication): Observable<AXPTokens> {\n return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\n map((response) => {\n return {\n accessToken: response.token,\n refreshToken: response.token,\n };\n })\n );\n }\n\n private mapToAXPApplication(item: any): AXPApplication {\n console.log('mapToAXPApplication', item);\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.name || '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 { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\n getList(): Observable<AXPFeature[]> {\n return of([]).pipe(delay(0));\n }\n}\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/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\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 completeAuthentication() {\n this.userManager.signinSilentCallback();\n }\n}\n","import { AXPAuthStrategy, AXPBaseCredentials, AXPTokens, AXPUser } from '@acorex/platform/auth';\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\n constructor() {\n this.userManagerService = this.injector.get(AXMOidcUserManagerService);\n this.userManager = this.userManagerService.getUserManager();\n }\n\n get name(): string {\n return 'oidc';\n }\n\n async signin(credentials: AXPUserPassCredentials): Promise<AXPTokens> {\n const currentUser = await this.userManager.getUser();\n if (currentUser && !currentUser.expired && currentUser.profile.name == credentials.username) {\n console.log('user alredy signed in', currentUser);\n const user: AXPUser = {\n id: currentUser.id_token ?? '1',\n name: currentUser.profile.name ?? credentials.username,\n title: currentUser.profile.given_name ?? 'no Name!',\n avatar: currentUser.profile.picture ?? 'https://i.pravatar.cc/150?img=52',\n };\n const accessToken = currentUser.access_token;\n const refreshToken = currentUser.refresh_token ?? '';\n return { user, accessToken, refreshToken };\n }\n await this.userManager.removeUser();\n await this.userManager.clearStaleState();\n\n const oidcUser = await this.userManager.signinSilent({\n extraQueryParams: {\n identity_provider: 'Local',\n hardcoded_identity_id: '1',\n username: credentials.username,\n password: credentials.password,\n },\n });\n console.log('here is oidcUser', oidcUser);\n if (oidcUser) {\n const user: AXPUser = {\n id: oidcUser.id_token ?? '1',\n name: oidcUser.profile.name ?? credentials.username,\n title: oidcUser.profile.given_name ?? 'no Name!',\n avatar: oidcUser.profile.picture ?? 'https://i.pravatar.cc/150?img=52',\n };\n const accessToken = oidcUser.access_token;\n const refreshToken = oidcUser.refresh_token ?? '';\n return { user, accessToken, refreshToken };\n }\n\n throw new Error('Invalid credentials');\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<AXPTokens> {\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 { user, accessToken, refreshToken: newRefreshToken };\n }\n\n private generateAccessToken(): string {\n return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';\n }\n}\n","import { AXPPermission, AXPPermissionLoader } from '@acorex/platform/auth';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\n getList(): Observable<AXPPermission[]> {\n return of(['asc.admin.message', 'asc.admin.settings']).pipe(delay(0));\n }\n}\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXPTenant, AXPTenantLoader, AXPTokens } from '@acorex/platform/auth';\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(AXM_AUTH_CONFIG_TOKEN);\n private apiGetTenants = `${this.configs.apiResourceUrl}/user-tenants/Tenants `;\n private apiSetTenant = `${this.configs.apiResourceUrl}/SetTenant`;\n constructor(private http: HttpClient) {}\n\n getList(): Observable<AXPTenant[]> {\n return this.http\n .get<{ items: any[] }>(this.apiGetTenants)\n .pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\n }\n\n set(tenant: AXPTenant): Observable<AXPTokens> {\n return this.http.post<any>(this.apiSetTenant, { tenantId: tenant.id }).pipe(\n map((response) => {\n return {\n accessToken: response.token,\n refreshToken: response.token,\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.name || 'defaultTitle',\n // Add other fields and defaults as needed, and handle the logo if applicable\n };\n }\n}\n","import { AXPApplication, AXPApplicationLoader, AXPTokens } from '@acorex/platform/auth';\nimport { AXPTextLogoConfig, AXPFontIconLogoConfig } from '@acorex/platform/common';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class ASCApplicationLoader implements AXPApplicationLoader {\n getList(): Observable<AXPApplication[]> {\n const app: AXPApplication = {\n id: '0',\n name: 'asc',\n title: 'Adelide Soaring Club',\n logo: new AXPTextLogoConfig('ASC'),\n version: '1.0.1',\n editionName: 'Standard',\n };\n const app2: AXPApplication = {\n id: '1',\n name: 'asc1',\n title: 'Application 2',\n logo: new AXPTextLogoConfig('ASC'),\n version: '1.0.1',\n editionName: 'Standard',\n };\n return of<AXPApplication[]>([app]).pipe(delay(0));\n }\n\n set(application: AXPApplication): Observable<AXPTokens> {\n return of<AXPTokens>({\n accessToken:\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',\n refreshToken:\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',\n }).pipe(delay(500));\n }\n}\n","import { AXPPermission, AXPPermissionLoader } from \"@acorex/platform/auth\";\nimport { Observable, delay, of } from \"rxjs\";\n\nexport class ASCPermissionLoader implements AXPPermissionLoader {\n\n getList(): Observable<AXPPermission[]> {\n return of(\n [\n 'asc.admin.message',\n 'asc.admin.settings',\n 'asc.admin.gliding',\n ])\n .pipe(delay(0));\n }\n}","import { AXPTenant, AXPTenantLoader, AXPTokens } from '@acorex/platform/auth';\nimport { AXPTextLogoConfig } from '@acorex/platform/common';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class ASCTenantLoader implements AXPTenantLoader {\n getList(): Observable<AXPTenant[]> {\n const tenant: AXPTenant = {\n id: '0',\n name: 'asc',\n title: 'Adelide Soaring Club',\n logo: new AXPTextLogoConfig('ASC'),\n };\n const tenant2: AXPTenant = {\n id: '1',\n name: 'asc1',\n title: 'Adelide Soaring Club',\n logo: new AXPTextLogoConfig('ASC'),\n };\n return of<AXPTenant[]>([tenant]).pipe(delay(0));\n }\n\n set(tenant: AXPTenant): Observable<AXPTokens> {\n return of<AXPTokens>({\n accessToken:\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',\n refreshToken:\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',\n }).pipe(delay(0));\n }\n}\n","import { AXPAuthStrategy, AXPBaseCredentials, AXPTokens, AXPUser } from '@acorex/platform/auth';\n\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\nexport class ASCUserPassStrategy implements AXPAuthStrategy {\n get name(): string {\n return 'userpass';\n }\n\n async signin(credentials: AXPUserPassCredentials): Promise<AXPTokens> {\n const result = credentials.username == 'admin' && credentials.password == '123';\n if (result) {\n const user: AXPUser = {\n id: '1',\n name: credentials.username,\n title: 'Admin',\n avatar: 'https://i.pravatar.cc/150?img=52',\n };\n const accessToken = this.generateAccessToken();\n const refreshToken = this.generateAccessToken();\n return { user, accessToken, refreshToken };\n } else {\n throw new Error('Invalid credentials');\n }\n }\n\n async signout(): Promise<void> {\n console.log('User signed out');\n }\n\n async refreshToken(refreshToken: string): Promise<AXPTokens> {\n const user: AXPUser = {\n id: '1',\n name: 'admin',\n title: 'Arash',\n avatar: 'https://i.pravatar.cc/150?img=52',\n };\n const accessToken = this.generateAccessToken();\n const newRefreshToken = this.generateAccessToken();\n\n return { user, accessToken, refreshToken: newRefreshToken };\n }\n\n private generateAccessToken(): string {\n return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXMOidcUserManagerService } from './usermanager.service';\n\n@Component({\n template: '',\n providers: [],\n})\nexport class SignincallbackComponent implements OnInit {\n constructor(\n private userManagerService: AXMOidcUserManagerService,\n private router: Router,\n private route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.userManagerService.completeAuthentication();\n }\n}\n","import { AXMAuthModule } from '@acorex/modules/auth';\nimport {\n AXPAuthModule,\n AXP_APPLICATION_LOADER,\n AXP_FEATURE_LOADER,\n AXP_PERMISSION_LOADER,\n AXP_TENANT_LOADER,\n} from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\n\n//-----------------------------------------------------------------\n\n// import { AXMLocalDataProvider } from './data/local/local-data-provider';\nimport { AXMBackendDataProvider } from './data/api/data-provider';\n\n// import { AXMOidcStrategy } from './auth/oidc';\nimport {\n AXMOidcApplicationLoader,\n AXMOidcFeatureLoader,\n AXMOidcPermissionLoader,\n AXMOidcStrategy,\n AXMOidcTenantLoader,\n} from './auth/oidc';\n\nimport { ASCUserPassStrategy } from './auth/userpass';\n// import { ASCApplicationLoader, ASCPermissionLoader, ASCTenantLoader, ASCUserPassStrategy } from './auth/userpass';\n\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, ASCUserPassStrategy],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXPDataProvider,\n // useClass: AXMLocalDataProvider,\n useClass: AXMBackendDataProvider,\n },\n {\n provide: AXP_TENANT_LOADER,\n // useClass: ASCTenantLoader,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n // useClass: ASCApplicationLoader,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n // useClass: ASCPermissionLoader,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n // useClass: ASCFeatureLoader, //TODO: not implimented\n useClass: AXMOidcFeatureLoader,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n ],\n})\nexport class AXMBackendModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXMOidcUserManagerService","i1","i2"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import * as i0 from '@angular/core';
2
+ import { NgModule } from '@angular/core';
3
+
4
+ class AXMNotificationModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMNotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: AXMNotificationModule }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMNotificationModule }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMNotificationModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ imports: [],
13
+ exports: [],
14
+ declarations: [],
15
+ }]
16
+ }] });
17
+
18
+ /**
19
+ * Generated bundle index. Do not edit.
20
+ */
21
+
22
+ export { AXMNotificationModule };
23
+ //# sourceMappingURL=acorex-modules-notification.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-notification.mjs","sources":["../../../../libs/modules/notification/src/lib/notification.module.ts","../../../../libs/modules/notification/src/acorex-modules-notification.ts"],"sourcesContent":["import { NgModule } from \"@angular/core\";\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n})\nexport class AXMNotificationModule {\n}\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAMa,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAArB,qBAAqB,EAAA,CAAA,CAAA,EAAA;+GAArB,qBAAqB,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AACnB,iBAAA,CAAA;;;ACLD;;AAEG;;;;"}
@@ -0,0 +1,6 @@
1
+ var index = {};
2
+
3
+ /**
4
+ * Generated bundle index. Do not edit.
5
+ */
6
+ //# sourceMappingURL=acorex-modules.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules.mjs","sources":["../../../../libs/modules/index.ts","../../../../libs/modules/acorex-modules.ts"],"sourcesContent":["export default {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA,YAAe,EAAE;;ACAjB;;AAEG"}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare const _default: {};
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ # @acorex/modules/notification
2
+
3
+ Secondary entry point of `@acorex/modules`. It can be used by importing from `@acorex/modules/notification`.
4
+
@@ -0,0 +1 @@
1
+ export * from './lib/notification.module';
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class AXMNotificationModule {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMNotificationModule, never>;
4
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMNotificationModule, never, never, never>;
5
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXMNotificationModule>;
6
+ }