@acorex/modules 1.0.0 → 1.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.
Files changed (134) hide show
  1. package/auth/index.d.ts +1 -0
  2. package/auth/lib/account/account.module.d.ts +1 -1
  3. package/auth/lib/account/app-chooser/app-chooser-slot.component.d.ts +1 -1
  4. package/auth/lib/account/app-chooser/app-chooser.component.d.ts +1 -1
  5. package/auth/lib/account/profile/profile-slot.component.d.ts +6 -1
  6. package/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.d.ts +1 -1
  7. package/auth/lib/auth.config.d.ts +5 -5
  8. package/auth/lib/error-handler.d.ts +1 -1
  9. package/auth/lib/login/password/password.component.d.ts +1 -1
  10. package/backend/index.d.ts +2 -0
  11. package/backend/lib/auth/oidc/application.loader.d.ts +2 -2
  12. package/backend/lib/auth/oidc/configuration.service.d.ts +60 -0
  13. package/backend/lib/auth/oidc/feature.loader.d.ts +1 -0
  14. package/backend/lib/auth/oidc/index.d.ts +3 -0
  15. package/backend/lib/auth/oidc/oidc.strategy.d.ts +5 -3
  16. package/backend/lib/auth/oidc/permission.loader.d.ts +11 -2
  17. package/backend/lib/auth/oidc/signincallback.component.d.ts +1 -0
  18. package/backend/lib/auth/oidc/tenant.loader.d.ts +2 -2
  19. package/backend/lib/auth/oidc/usermanager.service.d.ts +4 -1
  20. package/backend/lib/backend.configs.d.ts +0 -5
  21. package/backend/lib/data/api/data-provider.d.ts +4 -0
  22. package/backend/lib/data/index.d.ts +3 -0
  23. package/backend/lib/data/local/data-Conditioner.d.ts +6 -0
  24. package/backend/lib/data/local/local-data-provider.d.ts +23 -0
  25. package/esm2022/auth/index.mjs +2 -1
  26. package/esm2022/auth/lib/account/account.module.mjs +12 -12
  27. package/esm2022/auth/lib/account/app-chooser/app-chooser-list.component.mjs +6 -6
  28. package/esm2022/auth/lib/account/app-chooser/app-chooser-slot.component.mjs +7 -6
  29. package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +7 -6
  30. package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +45 -18
  31. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.mjs +6 -5
  32. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +7 -7
  33. package/esm2022/auth/lib/auth.config.mjs +7 -6
  34. package/esm2022/auth/lib/auth.module.mjs +4 -4
  35. package/esm2022/auth/lib/auth.routes.mjs +7 -6
  36. package/esm2022/auth/lib/error-handler.mjs +14 -7
  37. package/esm2022/auth/lib/forgot/password/password.component.mjs +4 -4
  38. package/esm2022/auth/lib/login/login.module.mjs +5 -6
  39. package/esm2022/auth/lib/login/password/password.component.mjs +26 -11
  40. package/esm2022/auth/lib/shared/layouts/blank/blank.layout.mjs +3 -3
  41. package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +8 -7
  42. package/esm2022/auth/lib/shared/services/idle.service.mjs +3 -3
  43. package/esm2022/auth/lib/store/auth.effects.mjs +3 -3
  44. package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +4 -4
  45. package/esm2022/auth/lib/two-factor/two-factor.module.mjs +4 -4
  46. package/esm2022/backend/index.mjs +3 -1
  47. package/esm2022/backend/lib/auth/oidc/application.loader.mjs +15 -13
  48. package/esm2022/backend/lib/auth/oidc/configuration.service.mjs +53 -0
  49. package/esm2022/backend/lib/auth/oidc/feature.loader.mjs +16 -2
  50. package/esm2022/backend/lib/auth/oidc/index.mjs +4 -1
  51. package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +59 -39
  52. package/esm2022/backend/lib/auth/oidc/permission.loader.mjs +31 -4
  53. package/esm2022/backend/lib/auth/oidc/signincallback.component.mjs +27 -7
  54. package/esm2022/backend/lib/auth/oidc/tenant.loader.mjs +16 -14
  55. package/esm2022/backend/lib/auth/oidc/usermanager.service.mjs +8 -6
  56. package/esm2022/backend/lib/backend.configs.mjs +2 -3
  57. package/esm2022/backend/lib/backend.module.mjs +9 -23
  58. package/esm2022/backend/lib/data/api/data-provider.mjs +49 -13
  59. package/esm2022/backend/lib/data/index.mjs +4 -0
  60. package/esm2022/backend/lib/data/local/data-Conditioner.mjs +76 -0
  61. package/esm2022/backend/lib/data/local/local-data-provider.mjs +84 -0
  62. package/esm2022/log-management/acorex-modules-log-management.mjs +5 -0
  63. package/esm2022/log-management/index.mjs +3 -0
  64. package/esm2022/log-management/lib/audit-logs.entity.mjs +392 -0
  65. package/esm2022/log-management/lib/log-management.module.mjs +16 -0
  66. package/esm2022/notification/index.mjs +3 -1
  67. package/esm2022/notification/lib/notification.module.mjs +4 -4
  68. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs → acorex-modules-auth-acorex-modules-auth-jEqtVhBE.mjs} +143 -109
  69. package/fesm2022/acorex-modules-auth-acorex-modules-auth-jEqtVhBE.mjs.map +1 -0
  70. package/fesm2022/acorex-modules-auth-app-chooser.component-BbtMSwfI.mjs +72 -0
  71. package/fesm2022/acorex-modules-auth-app-chooser.component-BbtMSwfI.mjs.map +1 -0
  72. package/fesm2022/{acorex-modules-auth-blank.layout-0xNRyD5z.mjs → acorex-modules-auth-blank.layout-BOdRxDNv.mjs} +4 -4
  73. package/fesm2022/{acorex-modules-auth-blank.layout-0xNRyD5z.mjs.map → acorex-modules-auth-blank.layout-BOdRxDNv.mjs.map} +1 -1
  74. package/fesm2022/{acorex-modules-auth-login.module-lGs54nBU.mjs → acorex-modules-auth-login.module-Drm4fC1I.mjs} +13 -12
  75. package/fesm2022/acorex-modules-auth-login.module-Drm4fC1I.mjs.map +1 -0
  76. package/fesm2022/{acorex-modules-auth-master.layout-ytopPv2z.mjs → acorex-modules-auth-master.layout-cAm6TYeA.mjs} +12 -10
  77. package/fesm2022/acorex-modules-auth-master.layout-cAm6TYeA.mjs.map +1 -0
  78. package/fesm2022/{acorex-modules-auth-password.component-Q9Me4kkK.mjs → acorex-modules-auth-password.component-Ch2Wqi2W.mjs} +12 -10
  79. package/fesm2022/{acorex-modules-auth-password.component-Q9Me4kkK.mjs.map → acorex-modules-auth-password.component-Ch2Wqi2W.mjs.map} +1 -1
  80. package/fesm2022/acorex-modules-auth-password.component-D4CkGaq0.mjs +127 -0
  81. package/fesm2022/acorex-modules-auth-password.component-D4CkGaq0.mjs.map +1 -0
  82. package/fesm2022/{acorex-modules-auth-routes-jgo2XGe0.mjs → acorex-modules-auth-routes-DyjibH6l.mjs} +2 -2
  83. package/fesm2022/{acorex-modules-auth-routes-jgo2XGe0.mjs.map → acorex-modules-auth-routes-DyjibH6l.mjs.map} +1 -1
  84. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CJu2Lfbf.mjs +84 -0
  85. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CJu2Lfbf.mjs.map +1 -0
  86. package/fesm2022/{acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs → acorex-modules-auth-two-factor-code.component-B41iXHoT.mjs} +5 -5
  87. package/fesm2022/{acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs.map → acorex-modules-auth-two-factor-code.component-B41iXHoT.mjs.map} +1 -1
  88. package/fesm2022/{acorex-modules-auth-two-factor.module--fcoNW-s.mjs → acorex-modules-auth-two-factor.module-A0hevYO2.mjs} +12 -10
  89. package/fesm2022/acorex-modules-auth-two-factor.module-A0hevYO2.mjs.map +1 -0
  90. package/fesm2022/acorex-modules-auth.mjs +7 -5
  91. package/fesm2022/acorex-modules-auth.mjs.map +1 -1
  92. package/fesm2022/acorex-modules-backend.mjs +432 -227
  93. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  94. package/fesm2022/acorex-modules-log-management.mjs +415 -0
  95. package/fesm2022/acorex-modules-log-management.mjs.map +1 -0
  96. package/fesm2022/acorex-modules-notification.mjs +7 -4
  97. package/fesm2022/acorex-modules-notification.mjs.map +1 -1
  98. package/log-management/README.md +4 -0
  99. package/log-management/index.d.ts +2 -0
  100. package/log-management/lib/audit-logs.entity.d.ts +3 -0
  101. package/log-management/lib/log-management.module.d.ts +6 -0
  102. package/package.json +7 -1
  103. package/auth/lib/register/email/email.component.d.ts +0 -5
  104. package/auth/lib/register/register.module.d.ts +0 -7
  105. package/auth/lib/register/result/result.component.d.ts +0 -5
  106. package/backend/lib/auth/userpass/application.loader.d.ts +0 -6
  107. package/backend/lib/auth/userpass/index.d.ts +0 -4
  108. package/backend/lib/auth/userpass/permission.loader.d.ts +0 -5
  109. package/backend/lib/auth/userpass/tenant.loader.d.ts +0 -6
  110. package/backend/lib/auth/userpass/userpass.strategy.d.ts +0 -12
  111. package/esm2022/auth/lib/register/email/email.component.mjs +0 -42
  112. package/esm2022/auth/lib/register/register.module.mjs +0 -59
  113. package/esm2022/auth/lib/register/result/result.component.mjs +0 -33
  114. package/esm2022/backend/lib/auth/userpass/application.loader.mjs +0 -30
  115. package/esm2022/backend/lib/auth/userpass/index.mjs +0 -5
  116. package/esm2022/backend/lib/auth/userpass/permission.loader.mjs +0 -12
  117. package/esm2022/backend/lib/auth/userpass/tenant.loader.mjs +0 -26
  118. package/esm2022/backend/lib/auth/userpass/userpass.strategy.mjs +0 -40
  119. package/fesm2022/acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs.map +0 -1
  120. package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs +0 -70
  121. package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs.map +0 -1
  122. package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs +0 -45
  123. package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs.map +0 -1
  124. package/fesm2022/acorex-modules-auth-login.module-lGs54nBU.mjs.map +0 -1
  125. package/fesm2022/acorex-modules-auth-master.layout-ytopPv2z.mjs.map +0 -1
  126. package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs +0 -110
  127. package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs.map +0 -1
  128. package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs +0 -77
  129. package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs.map +0 -1
  130. package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs +0 -36
  131. package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs.map +0 -1
  132. package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs +0 -84
  133. package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs.map +0 -1
  134. package/fesm2022/acorex-modules-auth-two-factor.module--fcoNW-s.mjs.map +0 -1
@@ -1 +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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"}
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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"}
@@ -0,0 +1,415 @@
1
+ import { AXPDataProvider } from '@acorex/platform/common';
2
+ import { widgetSchemas, convertPropertiesToColumns } from '@acorex/platform/layouts';
3
+ import * as i0 from '@angular/core';
4
+ import { NgModule } from '@angular/core';
5
+
6
+ const properties = [
7
+ {
8
+ name: 'executionTime',
9
+ title: 'Execution Time',
10
+ schema: widgetSchemas.dateTime,
11
+ canEdit: false,
12
+ canInsert: true,
13
+ formats: {
14
+ default: 'HH:mm:ss dd MMM YYYY',
15
+ },
16
+ canInlineFilter: true,
17
+ validationRules: [],
18
+ },
19
+ {
20
+ name: 'httpMethod',
21
+ title: 'HTTP Method',
22
+ schema: widgetSchemas.text,
23
+ canEdit: false,
24
+ canInsert: true,
25
+ canInlineFilter: true,
26
+ validationRules: [],
27
+ },
28
+ {
29
+ name: 'url',
30
+ title: 'URL',
31
+ schema: widgetSchemas.text,
32
+ canEdit: false,
33
+ canInsert: true,
34
+ canInlineFilter: true,
35
+ validationRules: [],
36
+ },
37
+ {
38
+ name: 'httpStatusCode',
39
+ title: 'HTTP Status Code',
40
+ schema: widgetSchemas.number,
41
+ canEdit: false,
42
+ canInsert: true,
43
+ canInlineFilter: true,
44
+ validationRules: [],
45
+ },
46
+ {
47
+ name: 'exceptions',
48
+ title: 'Exceptions',
49
+ schema: widgetSchemas.largetext,
50
+ canEdit: false,
51
+ canInsert: true,
52
+ canInlineFilter: true,
53
+ validationRules: [],
54
+ },
55
+ {
56
+ name: 'browserInfo',
57
+ title: 'Browser Info',
58
+ schema: widgetSchemas.text,
59
+ canEdit: false,
60
+ canInsert: true,
61
+ canInlineFilter: true,
62
+ validationRules: [],
63
+ },
64
+ {
65
+ name: 'comments',
66
+ title: 'Comments',
67
+ schema: widgetSchemas.text,
68
+ canEdit: true,
69
+ canInsert: true,
70
+ canInlineFilter: true,
71
+ validationRules: [],
72
+ },
73
+ {
74
+ name: 'applicationName',
75
+ title: 'Application Name',
76
+ schema: widgetSchemas.text,
77
+ canEdit: true,
78
+ canInsert: true,
79
+ canInlineFilter: true,
80
+ validationRules: [],
81
+ },
82
+ {
83
+ name: 'axApplicationName',
84
+ title: 'AX Application Name',
85
+ schema: widgetSchemas.text,
86
+ canEdit: true,
87
+ canInsert: true,
88
+ canInlineFilter: true,
89
+ validationRules: [],
90
+ },
91
+ {
92
+ name: 'executionDuration',
93
+ title: 'Execution Duration',
94
+ schema: widgetSchemas.number,
95
+ canEdit: false,
96
+ canInsert: true,
97
+ canInlineFilter: true,
98
+ validationRules: [],
99
+ },
100
+ {
101
+ name: 'clientIpAddress',
102
+ title: 'Client IP Address',
103
+ schema: widgetSchemas.text,
104
+ canEdit: false,
105
+ canInsert: true,
106
+ canInlineFilter: true,
107
+ validationRules: [],
108
+ },
109
+ {
110
+ name: 'correlationId',
111
+ title: 'Correlation ID',
112
+ schema: widgetSchemas.text,
113
+ canEdit: false,
114
+ canInsert: true,
115
+ canInlineFilter: true,
116
+ validationRules: [],
117
+ },
118
+ {
119
+ name: 'entityChanges',
120
+ title: 'Entity Changes',
121
+ schema: widgetSchemas.richText,
122
+ canEdit: true,
123
+ canInsert: true,
124
+ canInlineFilter: true,
125
+ validationRules: [],
126
+ component: {
127
+ common: {
128
+ options: {
129
+ reference: 'entityChanges',
130
+ referenceField: 'entityChangeId',
131
+ textField: 'changeType',
132
+ valueField: 'id',
133
+ multiple: true,
134
+ },
135
+ },
136
+ },
137
+ },
138
+ {
139
+ name: 'actions',
140
+ title: 'Actions',
141
+ schema: widgetSchemas.richText,
142
+ canEdit: true,
143
+ canInsert: true,
144
+ canInlineFilter: true,
145
+ validationRules: [],
146
+ component: {
147
+ common: {
148
+ options: {
149
+ reference: 'actions',
150
+ referenceField: 'actionId',
151
+ textField: 'methodName',
152
+ valueField: 'id',
153
+ multiple: true,
154
+ },
155
+ },
156
+ },
157
+ },
158
+ {
159
+ name: 'userId',
160
+ title: 'User ID',
161
+ schema: widgetSchemas.text,
162
+ canEdit: false,
163
+ canInsert: false,
164
+ canInlineFilter: true,
165
+ validationRules: [],
166
+ },
167
+ {
168
+ name: 'userName',
169
+ title: 'Username',
170
+ schema: widgetSchemas.text,
171
+ canEdit: false,
172
+ canInsert: true,
173
+ canInlineFilter: true,
174
+ validationRules: [
175
+ {
176
+ rule: 'required',
177
+ },
178
+ ],
179
+ },
180
+ {
181
+ name: 'tenantId',
182
+ title: 'Tenant ID',
183
+ schema: widgetSchemas.text,
184
+ canEdit: false,
185
+ canInsert: false,
186
+ canInlineFilter: true,
187
+ validationRules: [],
188
+ },
189
+ {
190
+ name: 'tenantName',
191
+ title: 'Tenant Name',
192
+ schema: widgetSchemas.text,
193
+ canEdit: true,
194
+ canInsert: true,
195
+ canInlineFilter: true,
196
+ validationRules: [],
197
+ },
198
+ {
199
+ name: 'impersonatorUserId',
200
+ title: 'Impersonator User ID',
201
+ schema: widgetSchemas.text,
202
+ canEdit: false,
203
+ canInsert: false,
204
+ canInlineFilter: true,
205
+ validationRules: [],
206
+ },
207
+ {
208
+ name: 'impersonatorUserName',
209
+ title: 'Impersonator Username',
210
+ schema: widgetSchemas.text,
211
+ canEdit: false,
212
+ canInsert: true,
213
+ canInlineFilter: true,
214
+ validationRules: [],
215
+ },
216
+ {
217
+ name: 'impersonatorTenantId',
218
+ title: 'Impersonator Tenant ID',
219
+ schema: widgetSchemas.text,
220
+ canEdit: false,
221
+ canInsert: false,
222
+ canInlineFilter: true,
223
+ validationRules: [],
224
+ },
225
+ {
226
+ name: 'impersonatorTenantName',
227
+ title: 'Impersonator Tenant Name',
228
+ schema: widgetSchemas.text,
229
+ canEdit: true,
230
+ canInsert: true,
231
+ canInlineFilter: true,
232
+ validationRules: [],
233
+ },
234
+ {
235
+ name: 'clientName',
236
+ title: 'Client Name',
237
+ schema: widgetSchemas.text,
238
+ canEdit: false,
239
+ canInsert: true,
240
+ canInlineFilter: true,
241
+ validationRules: [],
242
+ },
243
+ {
244
+ name: 'clientId',
245
+ title: 'Client ID',
246
+ schema: widgetSchemas.text,
247
+ canEdit: false,
248
+ canInsert: true,
249
+ canInlineFilter: true,
250
+ validationRules: [],
251
+ },
252
+ {
253
+ name: 'id',
254
+ title: 'ID',
255
+ schema: widgetSchemas.text,
256
+ canEdit: false,
257
+ canInsert: false,
258
+ canInlineFilter: true,
259
+ validationRules: [],
260
+ },
261
+ ];
262
+ const columns = convertPropertiesToColumns(...properties);
263
+ const entityName = 'logs';
264
+ async function entityFactory(injector) {
265
+ const dataService = injector.get(AXPDataProvider);
266
+ const entity = {
267
+ module: 'log-management',
268
+ name: entityName,
269
+ title: 'Logs',
270
+ properties: properties,
271
+ editOptions: {
272
+ create: false,
273
+ delete: false,
274
+ update: false,
275
+ },
276
+ formats: {
277
+ default: 'Log Information',
278
+ },
279
+ dataSource: {
280
+ key: 'id',
281
+ pageSize: 20,
282
+ load: async (e) => {
283
+ return dataService.getMany(entity, e);
284
+ },
285
+ byKey: async (id) => {
286
+ return dataService.getOne(entity, id);
287
+ },
288
+ },
289
+ views: {
290
+ list: {
291
+ title: 'Audit Logs',
292
+ views: [
293
+ {
294
+ name: 'all',
295
+ title: 'All Items',
296
+ fixed: true,
297
+ sorts: [
298
+ {
299
+ name: 'executionTime',
300
+ dir: 'asc',
301
+ },
302
+ ],
303
+ columns: columns.slice(0, 6),
304
+ conditions: [],
305
+ },
306
+ ],
307
+ },
308
+ quickView: {
309
+ root: {
310
+ properties: [],
311
+ sections: [
312
+ {
313
+ title: 'Execution Details',
314
+ name: 'executionDetails',
315
+ properties: properties.slice(0, 5).map((c) => c.name),
316
+ },
317
+ {
318
+ title: 'Client Info',
319
+ name: 'clientInfo',
320
+ properties: properties.slice(5, 10).map((c) => c.name),
321
+ },
322
+ ],
323
+ },
324
+ },
325
+ detailView: {
326
+ root: {
327
+ properties: [],
328
+ sections: [
329
+ {
330
+ title: 'General Information',
331
+ name: 'generalInformation',
332
+ properties: [],
333
+ sections: [
334
+ {
335
+ title: 'Identifier',
336
+ name: 'identifier',
337
+ properties: ['id'],
338
+ },
339
+ {
340
+ title: 'Execution Details',
341
+ description: 'Details about the execution of the audit log.',
342
+ name: 'executionDetails',
343
+ properties: ['executionTime', 'httpMethod', 'url', 'httpStatusCode', 'exceptions'],
344
+ },
345
+ {
346
+ title: 'Client Info',
347
+ description: 'Information about the client involved in the audit.',
348
+ name: 'clientInfo',
349
+ properties: ['browserInfo', 'comments', 'clientIpAddress', 'clientName', 'clientId'],
350
+ },
351
+ {
352
+ title: 'Application Info',
353
+ name: 'applicationInfo',
354
+ properties: ['applicationName', 'axApplicationName'],
355
+ },
356
+ {
357
+ title: 'Execution Metrics',
358
+ name: 'executionMetrics',
359
+ properties: ['executionDuration', 'correlationId'],
360
+ },
361
+ {
362
+ title: 'User Info',
363
+ name: 'userInfo',
364
+ properties: ['userId', 'userName', 'tenantId', 'tenantName'],
365
+ },
366
+ {
367
+ title: 'Impersonator Info',
368
+ name: 'impersonatorInfo',
369
+ properties: ['impersonatorUserId', 'impersonatorUserName', 'impersonatorTenantId', 'impersonatorTenantName'],
370
+ },
371
+ {
372
+ title: 'Entity Changes',
373
+ name: 'entityChanges',
374
+ properties: ['entityChanges'],
375
+ },
376
+ {
377
+ title: 'Actions',
378
+ name: 'actions',
379
+ properties: ['actions'],
380
+ },
381
+ ],
382
+ },
383
+ ],
384
+ },
385
+ },
386
+ createView: {
387
+ root: {
388
+ properties: properties.map((c) => c.name),
389
+ },
390
+ },
391
+ },
392
+ };
393
+ return entity;
394
+ }
395
+
396
+ class AXMLogManagementModule {
397
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXMLogManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
398
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: AXMLogManagementModule }); }
399
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXMLogManagementModule }); }
400
+ }
401
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXMLogManagementModule, decorators: [{
402
+ type: NgModule,
403
+ args: [{
404
+ imports: [],
405
+ exports: [],
406
+ declarations: [],
407
+ }]
408
+ }] });
409
+
410
+ /**
411
+ * Generated bundle index. Do not edit.
412
+ */
413
+
414
+ export { AXMLogManagementModule, entityFactory };
415
+ //# sourceMappingURL=acorex-modules-log-management.mjs.map