@acorex-platform/module-tenant-management-client 0.0.59 → 0.0.60

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 (39) hide show
  1. package/fesm2022/acorex-platform-module-tenant-management-client-approve-tenant-request.command-D18-n5Lc.mjs +91 -0
  2. package/fesm2022/acorex-platform-module-tenant-management-client-approve-tenant-request.command-D18-n5Lc.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-resource-share.mjs +6 -0
  4. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-resource-share.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.mjs +110 -5
  6. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user.mjs +186 -9
  8. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant.mjs +158 -24
  10. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant.mjs.map +1 -1
  11. package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-acorex-platform-module-tenant-management-client-contracts-entity-catalog-CDfoKWOn.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-acorex-platform-module-tenant-management-client-contracts-entity-catalog-DqBYnske.mjs} +11 -5
  12. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-acorex-platform-module-tenant-management-client-contracts-entity-catalog-DqBYnske.mjs.map +1 -0
  13. package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-resource-share.entity-BPbgUTEH.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-resource-share.entity-Bf7keWah.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-resource-share.entity-BPbgUTEH.mjs.map → acorex-platform-module-tenant-management-client-contracts-entity-catalog-resource-share.entity-Bf7keWah.mjs.map} +1 -1
  15. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-admin-scope-C6Ekm0Qg.mjs +43 -0
  16. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-admin-scope-C6Ekm0Qg.mjs.map +1 -0
  17. package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-app-access.entity-nA_yhhRD.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-app-access.entity-BhkM_HyR.mjs} +66 -7
  18. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-app-access.entity-BhkM_HyR.mjs.map +1 -0
  19. package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user.entity-CmUdRisR.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user.entity-Dk8LTu5B.mjs} +142 -11
  20. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user.entity-Dk8LTu5B.mjs.map +1 -0
  21. package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant.entity-ZpnmQnXF.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant.entity-cOVeFcEP.mjs} +154 -26
  22. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant.entity-cOVeFcEP.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog.mjs +1 -1
  24. package/fesm2022/acorex-platform-module-tenant-management-client-contracts.mjs +96 -3
  25. package/fesm2022/acorex-platform-module-tenant-management-client-contracts.mjs.map +1 -1
  26. package/fesm2022/acorex-platform-module-tenant-management-client-reject-tenant-request.command-CKSHPw1a.mjs +80 -0
  27. package/fesm2022/acorex-platform-module-tenant-management-client-reject-tenant-request.command-CKSHPw1a.mjs.map +1 -0
  28. package/fesm2022/acorex-platform-module-tenant-management-client.mjs +350 -14
  29. package/fesm2022/acorex-platform-module-tenant-management-client.mjs.map +1 -1
  30. package/i18n/en-AU/tenant-management.json +91 -10
  31. package/i18n/en-US/tenant-management.json +91 -10
  32. package/i18n/fa-IR/tenant-management.json +92 -11
  33. package/package.json +1 -1
  34. package/types/acorex-platform-module-tenant-management-client-contracts.d.ts +178 -4
  35. package/types/acorex-platform-module-tenant-management-client.d.ts +25 -1
  36. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-acorex-platform-module-tenant-management-client-contracts-entity-catalog-CDfoKWOn.mjs.map +0 -1
  37. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-app-access.entity-nA_yhhRD.mjs.map +0 -1
  38. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user.entity-CmUdRisR.mjs.map +0 -1
  39. package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant.entity-ZpnmQnXF.mjs.map +0 -1
@@ -0,0 +1,91 @@
1
+ import { AXDialogService } from '@acorex/components/dialog';
2
+ import { AXToastService } from '@acorex/components/toast';
3
+ import { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';
4
+ import { AXPSessionService } from '@acorex-platform/framework-client/auth';
5
+ import { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';
6
+ import { AXPCommandService } from '@acorex-platform/framework-client/runtime';
7
+ import { resolveEntityActionCommandInput } from '@acorex-platform/framework-shared/runtime';
8
+ import { AXMTenantManagementServerCommands, AXM_TENANT_REQUEST_ERROR_CODES } from '@acorex-platform/module-tenant-management-client/contracts';
9
+ export { AXM_TENANT_APPROVE_REQUEST_COMMAND } from '@acorex-platform/module-tenant-management-client/contracts';
10
+ import * as i0 from '@angular/core';
11
+ import { inject, Injectable } from '@angular/core';
12
+
13
+ //#region ---- AXPApproveTenantRequestCommand ----
14
+ class AXPApproveTenantRequestCommand {
15
+ constructor() {
16
+ this.dialogService = inject(AXDialogService);
17
+ this.toastService = inject(AXToastService);
18
+ this.translationService = inject(AXTranslationService);
19
+ this.commandService = inject(AXPCommandService);
20
+ this.sessionService = inject(AXPSessionService);
21
+ this.entityEvents = inject(AXPEntityBroadcastService);
22
+ }
23
+ async execute(input) {
24
+ const actionInput = resolveEntityActionCommandInput(input);
25
+ const data = (actionInput.data ?? {});
26
+ const tenantId = String(data['id'] ?? '').trim();
27
+ if (!tenantId) {
28
+ return { success: false, message: { text: 'Tenant id is required.' } };
29
+ }
30
+ const locale = this.translationService.getActiveLang?.() ?? 'en-US';
31
+ const who = resolveMultiLanguageString(data['title'], locale).trim() ||
32
+ String(data['name'] ?? tenantId);
33
+ const confirmTitle = await this.translationService
34
+ .translateAsync('@tenant-management:tenants.actions.approve-request.confirm-title')
35
+ .catch(() => 'Approve Tenant Request');
36
+ const confirmMessage = await this.translationService
37
+ .translateAsync('@tenant-management:tenants.actions.approve-request.confirm-message', {
38
+ params: { tenant: who },
39
+ })
40
+ .catch(() => `Approve the tenant request for ${who}?`);
41
+ const confirmed = await this.dialogService.confirm(confirmTitle, confirmMessage, 'primary', 'horizontal');
42
+ if (!confirmed.result) {
43
+ return { success: true, kind: 'object', data: { outcome: 'cancelled' } };
44
+ }
45
+ const result = await this.commandService.executeRemote(AXMTenantManagementServerCommands.ApproveTenantRequest, {
46
+ tenantId,
47
+ webOrigin: typeof window !== 'undefined' ? window.location.origin : undefined,
48
+ });
49
+ if (result?.success) {
50
+ const entity = actionInput.entity?.trim() || 'TenantManagement.Tenant';
51
+ // Membership may become selectable immediately — drop ListTenants cache + refresh entity list.
52
+ this.sessionService.invalidateCatalogCaches();
53
+ this.entityEvents.publishLayoutRefresh(entity, { highlightRowId: tenantId });
54
+ const [toastTitle, toastContent] = await Promise.all([
55
+ this.translationService
56
+ .translateAsync('@tenant-management:tenants.actions.approve-request.success.title')
57
+ .catch(() => 'Approved'),
58
+ this.translationService
59
+ .translateAsync('@tenant-management:tenants.actions.approve-request.success.description')
60
+ .catch(() => 'The tenant request was approved.'),
61
+ ]);
62
+ this.toastService.show({ color: 'success', title: toastTitle, content: toastContent, timeOut: 3000 });
63
+ return { success: true, kind: 'object', data: undefined };
64
+ }
65
+ const [toastTitle, fallback] = await Promise.all([
66
+ this.translationService
67
+ .translateAsync('@tenant-management:tenants.actions.approve-request.error.title')
68
+ .catch(() => 'Approve Failed'),
69
+ this.translationService
70
+ .translateAsync('@tenant-management:tenants.actions.approve-request.error.description')
71
+ .catch(() => 'Failed to approve the tenant request.'),
72
+ ]);
73
+ const code = typeof result?.message?.code === 'string' ? result.message.code : '';
74
+ const mapped = code === AXM_TENANT_REQUEST_ERROR_CODES.NotPending
75
+ ? await this.translationService
76
+ .translateAsync('@tenant-management:tenants.actions.approve-request.error.not-pending')
77
+ .catch(() => fallback)
78
+ : fallback;
79
+ this.toastService.show({ color: 'danger', title: toastTitle, content: mapped, timeOut: 4000 });
80
+ return { success: false };
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApproveTenantRequestCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
83
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApproveTenantRequestCommand, providedIn: 'root' }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApproveTenantRequestCommand, decorators: [{
86
+ type: Injectable,
87
+ args: [{ providedIn: 'root' }]
88
+ }] });
89
+
90
+ export { AXPApproveTenantRequestCommand };
91
+ //# sourceMappingURL=acorex-platform-module-tenant-management-client-approve-tenant-request.command-D18-n5Lc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-tenant-management-client-approve-tenant-request.command-D18-n5Lc.mjs","sources":["../../../../libs/modules/tenant-management/client/src/lib/commands/approve-tenant-request.command.ts"],"sourcesContent":["import { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport type { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { resolveEntityActionCommandInput } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXM_TENANT_APPROVE_REQUEST_COMMAND,\n AXM_TENANT_REQUEST_ERROR_CODES,\n AXMTenantManagementServerCommands,\n} from '@acorex-platform/module-tenant-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\n\nexport { AXM_TENANT_APPROVE_REQUEST_COMMAND };\n\n//#region ---- AXPApproveTenantRequestCommand ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXPApproveTenantRequestCommand implements AXPCommand {\n private readonly dialogService = inject(AXDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n\n async execute(input?: unknown): AXPCommandExecuteResultPromise {\n const actionInput = resolveEntityActionCommandInput(input);\n const data = (actionInput.data ?? {}) as Record<string, unknown>;\n const tenantId = String(data['id'] ?? '').trim();\n if (!tenantId) {\n return { success: false, message: { text: 'Tenant id is required.' } };\n }\n\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n const who =\n resolveMultiLanguageString(data['title'] as never, locale).trim() ||\n String(data['name'] ?? tenantId);\n\n const confirmTitle = await this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.confirm-title')\n .catch(() => 'Approve Tenant Request');\n const confirmMessage = await this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.confirm-message', {\n params: { tenant: who },\n })\n .catch(() => `Approve the tenant request for ${who}?`);\n\n const confirmed = await this.dialogService.confirm(confirmTitle, confirmMessage, 'primary', 'horizontal');\n if (!confirmed.result) {\n return { success: true, kind: 'object', data: { outcome: 'cancelled' } };\n }\n\n const result = await this.commandService.executeRemote(\n AXMTenantManagementServerCommands.ApproveTenantRequest,\n {\n tenantId,\n webOrigin: typeof window !== 'undefined' ? window.location.origin : undefined,\n },\n );\n\n if (result?.success) {\n const entity = actionInput.entity?.trim() || 'TenantManagement.Tenant';\n // Membership may become selectable immediately — drop ListTenants cache + refresh entity list.\n this.sessionService.invalidateCatalogCaches();\n this.entityEvents.publishLayoutRefresh(entity, { highlightRowId: tenantId });\n\n const [toastTitle, toastContent] = await Promise.all([\n this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.success.title')\n .catch(() => 'Approved'),\n this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.success.description')\n .catch(() => 'The tenant request was approved.'),\n ]);\n this.toastService.show({ color: 'success', title: toastTitle, content: toastContent, timeOut: 3000 });\n return { success: true, kind: 'object', data: undefined };\n }\n\n const [toastTitle, fallback] = await Promise.all([\n this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.error.title')\n .catch(() => 'Approve Failed'),\n this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.error.description')\n .catch(() => 'Failed to approve the tenant request.'),\n ]);\n const code = typeof result?.message?.code === 'string' ? result.message.code : '';\n const mapped =\n code === AXM_TENANT_REQUEST_ERROR_CODES.NotPending\n ? await this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.error.not-pending')\n .catch(() => fallback)\n : fallback;\n this.toastService.show({ color: 'danger', title: toastTitle, content: mapped, timeOut: 4000 });\n return { success: false };\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -45,7 +45,13 @@ const RootConfig = {
45
45
  },
46
46
  queries: {
47
47
  dashboard: {
48
+ /** Tenant-wide TenantUser count (Tenant Console Overview). */
48
49
  activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,
50
+ /**
51
+ * Current-application TenantUserAppAccess count (TM Application scope).
52
+ * On Tenant Console Overview / TM Application Overview widgets (D-17 / D-18).
53
+ */
54
+ tmApplicationUsersKpi: `${config.module}:Dashboard:TmApplicationUsersKpi`,
49
55
  usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,
50
56
  },
51
57
  reports: {
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-tenant-management-client-contracts-entities-resource-share.mjs","sources":["../../../../libs/modules/tenant-management/contracts/src/root-config.ts","../../../../libs/modules/tenant-management/contracts/src/entities/resource-share/resource-share.entity.ts","../../../../libs/modules/tenant-management/contracts/src/acorex-platform-module-tenant-management-client-contracts-entities-resource-share.ts"],"sourcesContent":["const config = {\n i18n: 'tenant-management',\n module: 'TenantManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'tenant-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-building',\n },\n entities: {\n tenant: {\n name: 'Tenant',\n source: `${config.module}.Tenant`,\n title: `@${config.i18n}:tenants.entities.tenant.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant.plural`,\n icon: 'fa-light fa-building',\n },\n tenantUser: {\n name: 'TenantUser',\n source: `${config.module}.TenantUser`,\n title: `@${config.i18n}:tenants.entities.tenant-user.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user.plural`,\n icon: 'fa-light fa-user-group',\n },\n tenantUserAppAccess: {\n name: 'TenantUserAppAccess',\n source: `${config.module}.TenantUserAppAccess`,\n title: `@${config.i18n}:tenants.entities.tenant-user-app-access.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user-app-access.plural`,\n icon: 'fa-light fa-app-store',\n },\n resourceShare: {\n name: 'ResourceShare',\n source: `${config.module}.ResourceShare`,\n title: `@${config.i18n}:tenants.entities.resource-share.title`,\n titlePlural: `@${config.i18n}:tenants.entities.resource-share.plural`,\n icon: 'fa-light fa-share-nodes',\n },\n },\n queries: {\n dashboard: {\n activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,\n usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,\n },\n reports: {\n getTenantApplicationAccess: `${config.module}:Reports:GetTenantApplicationAccess`,\n getTenantUserDistribution: `${config.module}:Reports:GetTenantUserDistribution`,\n getTenantRegistrationTimeline: `${config.module}:Reports:GetTenantRegistrationTimeline`,\n getTenantRegistrationChartData: `${config.module}:Reports:GetTenantRegistrationChartData`,\n getSubscriptionsTimeline: `${config.module}:Reports:GetSubscriptionsTimeline`,\n getSubscriptionsChartData: `${config.module}:Reports:GetSubscriptionsChartData`,\n },\n },\n};\n\n// Keep the old export for backward compatibility\nexport const AXMTenantManagementModuleConst = {\n moduleName: 'TenantManagement',\n moduleRoute: 'tenant-management',\n i18n: 'tenant-management',\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n createAllQueryView,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\n\n//#endregion\n\n//#region ---- ResourceShare entity factory ----\n\n/**\n * Cross-tenant resource grants (performance-first collection).\n * Intended Mongo indexes (applied by storage when supported):\n * - (shareInfo.sharedWithTenantId, shareInfo.status, resourceInfo.type)\n * - (resourceInfo.type, resourceInfo.id, shareInfo.status)\n * - (shareInfo.ownerTenantId, shareInfo.sharedWithTenantId, shareInfo.status)\n */\nexport async function resourceShareEntityFactory(): Promise<AXPEntity | null> {\n const i18n = `${RootConfig.config.i18n}:tenants.entities.resource-share`;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.resourceShare.name,\n title: RootConfig.entities.resourceShare.title,\n icon: RootConfig.entities.resourceShare.icon,\n searchTags: [\n 'resource-share',\n 'cross-tenant',\n 'sharing',\n 'isolation',\n 'access-grant',\n 'tenant',\n 'tenant-management',\n 'اشتراک منبع',\n 'اشتراک',\n 'مستأجر',\n ],\n formats: {\n individual: RootConfig.entities.resourceShare.title,\n plural: RootConfig.entities.resourceShare.titlePlural,\n },\n plugins: [{ name: 'history' }],\n groups: [\n {\n id: 'basic-info',\n title: `@general:terms.interface.basic-info`,\n },\n ],\n properties: [\n {\n name: 'id',\n title: `@general:terms.common.id`,\n groupId: 'basic-info',\n schema: {\n dataType: 'uuid',\n visible: false,\n nullable: false,\n readonly: true,\n unique: { enabled: true },\n },\n },\n {\n name: 'resourceInfo',\n title: `@${i18n}.fields.resource-info.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'object',\n interface: { type: AXPWidgetsCatalog.text },\n },\n },\n {\n name: 'shareInfo',\n title: `@${i18n}.fields.share-info.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'object',\n interface: { type: AXPWidgetsCatalog.text },\n },\n },\n ],\n interfaces: {\n master: {\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n single: {\n title: '{{ id }}',\n sections: [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }],\n properties: [\n { name: 'resourceInfo', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'shareInfo', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.resource-share';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-tenant-management-client-contracts-entities-resource-share.mjs","sources":["../../../../libs/modules/tenant-management/contracts/src/root-config.ts","../../../../libs/modules/tenant-management/contracts/src/entities/resource-share/resource-share.entity.ts","../../../../libs/modules/tenant-management/contracts/src/acorex-platform-module-tenant-management-client-contracts-entities-resource-share.ts"],"sourcesContent":["const config = {\n i18n: 'tenant-management',\n module: 'TenantManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'tenant-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-building',\n },\n entities: {\n tenant: {\n name: 'Tenant',\n source: `${config.module}.Tenant`,\n title: `@${config.i18n}:tenants.entities.tenant.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant.plural`,\n icon: 'fa-light fa-building',\n },\n tenantUser: {\n name: 'TenantUser',\n source: `${config.module}.TenantUser`,\n title: `@${config.i18n}:tenants.entities.tenant-user.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user.plural`,\n icon: 'fa-light fa-user-group',\n },\n tenantUserAppAccess: {\n name: 'TenantUserAppAccess',\n source: `${config.module}.TenantUserAppAccess`,\n title: `@${config.i18n}:tenants.entities.tenant-user-app-access.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user-app-access.plural`,\n icon: 'fa-light fa-app-store',\n },\n resourceShare: {\n name: 'ResourceShare',\n source: `${config.module}.ResourceShare`,\n title: `@${config.i18n}:tenants.entities.resource-share.title`,\n titlePlural: `@${config.i18n}:tenants.entities.resource-share.plural`,\n icon: 'fa-light fa-share-nodes',\n },\n },\n queries: {\n dashboard: {\n /** Tenant-wide TenantUser count (Tenant Console Overview). */\n activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,\n /**\n * Current-application TenantUserAppAccess count (TM Application scope).\n * On Tenant Console Overview / TM Application Overview widgets (D-17 / D-18).\n */\n tmApplicationUsersKpi: `${config.module}:Dashboard:TmApplicationUsersKpi`,\n usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,\n },\n reports: {\n getTenantApplicationAccess: `${config.module}:Reports:GetTenantApplicationAccess`,\n getTenantUserDistribution: `${config.module}:Reports:GetTenantUserDistribution`,\n getTenantRegistrationTimeline: `${config.module}:Reports:GetTenantRegistrationTimeline`,\n getTenantRegistrationChartData: `${config.module}:Reports:GetTenantRegistrationChartData`,\n getSubscriptionsTimeline: `${config.module}:Reports:GetSubscriptionsTimeline`,\n getSubscriptionsChartData: `${config.module}:Reports:GetSubscriptionsChartData`,\n },\n },\n};\n\n// Keep the old export for backward compatibility\nexport const AXMTenantManagementModuleConst = {\n moduleName: 'TenantManagement',\n moduleRoute: 'tenant-management',\n i18n: 'tenant-management',\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n createAllQueryView,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\n\n//#endregion\n\n//#region ---- ResourceShare entity factory ----\n\n/**\n * Cross-tenant resource grants (performance-first collection).\n * Intended Mongo indexes (applied by storage when supported):\n * - (shareInfo.sharedWithTenantId, shareInfo.status, resourceInfo.type)\n * - (resourceInfo.type, resourceInfo.id, shareInfo.status)\n * - (shareInfo.ownerTenantId, shareInfo.sharedWithTenantId, shareInfo.status)\n */\nexport async function resourceShareEntityFactory(): Promise<AXPEntity | null> {\n const i18n = `${RootConfig.config.i18n}:tenants.entities.resource-share`;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.resourceShare.name,\n title: RootConfig.entities.resourceShare.title,\n icon: RootConfig.entities.resourceShare.icon,\n searchTags: [\n 'resource-share',\n 'cross-tenant',\n 'sharing',\n 'isolation',\n 'access-grant',\n 'tenant',\n 'tenant-management',\n 'اشتراک منبع',\n 'اشتراک',\n 'مستأجر',\n ],\n formats: {\n individual: RootConfig.entities.resourceShare.title,\n plural: RootConfig.entities.resourceShare.titlePlural,\n },\n plugins: [{ name: 'history' }],\n groups: [\n {\n id: 'basic-info',\n title: `@general:terms.interface.basic-info`,\n },\n ],\n properties: [\n {\n name: 'id',\n title: `@general:terms.common.id`,\n groupId: 'basic-info',\n schema: {\n dataType: 'uuid',\n visible: false,\n nullable: false,\n readonly: true,\n unique: { enabled: true },\n },\n },\n {\n name: 'resourceInfo',\n title: `@${i18n}.fields.resource-info.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'object',\n interface: { type: AXPWidgetsCatalog.text },\n },\n },\n {\n name: 'shareInfo',\n title: `@${i18n}.fields.share-info.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'object',\n interface: { type: AXPWidgetsCatalog.text },\n },\n },\n ],\n interfaces: {\n master: {\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n single: {\n title: '{{ id }}',\n sections: [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }],\n properties: [\n { name: 'resourceInfo', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'shareInfo', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.resource-share';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,46 @@
1
- import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';
2
- import { entityMasterCrudActions, entityMasterRecordActions, createAllQueryView } from '@acorex-platform/framework-shared/entity';
1
+ import { AXPWidgetsList, AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
2
+ import { entityMasterCrudActions, entityMasterRecordActions, createAllQueryView, createQueryView } from '@acorex-platform/framework-shared/entity';
3
+
4
+ //#region ----- Tenant Users admin scope (operation-owned) -----
5
+ /** Query `params` key carrying the operation scope. */
6
+ const AXP_TENANT_USER_ADMIN_SCOPE_PARAM = 'tenantUserAdminScope';
7
+ /** HTTP header (lowercase) for getOne/update/delete (and related) ops. */
8
+ const AXP_TENANT_USER_ADMIN_SCOPE_HEADER = 'x-axp-tenant-user-admin-scope';
9
+ /** Entity list view name for TM → Tenant Users / Tenant Application Access. */
10
+ const AXP_TENANT_USERS_VIEW = 'tenant-users';
11
+ function normalizeTenantUserAdminScope(value) {
12
+ return value === 'current-tenant' ? 'current-tenant' : 'default';
13
+ }
14
+ /**
15
+ * Whether the URL carries the explicit Tenant Users operation context.
16
+ *
17
+ * Prefer durable `tenantUserAdminScope=current-tenant` (entity list rewrites
18
+ * unknown `view=` values to `all`). Also accept `view=tenant-users` when present.
19
+ * Never infer from entity path `/e/TenantUser*` alone.
20
+ */
21
+ function isTenantUsersOperationUrl(url) {
22
+ if (!url) {
23
+ return false;
24
+ }
25
+ try {
26
+ const parsed = new URL(url, 'http://local.invalid');
27
+ if (parsed.searchParams.get(AXP_TENANT_USER_ADMIN_SCOPE_PARAM)?.trim() === 'current-tenant') {
28
+ return true;
29
+ }
30
+ if (parsed.searchParams.get('view')?.trim() === AXP_TENANT_USERS_VIEW) {
31
+ return true;
32
+ }
33
+ }
34
+ catch {
35
+ // Fall through to substring checks.
36
+ }
37
+ return (url.includes(`${AXP_TENANT_USER_ADMIN_SCOPE_PARAM}=current-tenant`) ||
38
+ url.includes(`view=${AXP_TENANT_USERS_VIEW}`));
39
+ }
40
+ function resolveTenantUserAdminScopeFromUrl(url) {
41
+ return isTenantUsersOperationUrl(url) ? 'current-tenant' : 'default';
42
+ }
43
+ //#endregion
3
44
 
4
45
  const config = {
5
46
  i18n: 'tenant-management',
@@ -45,7 +86,13 @@ const RootConfig = {
45
86
  },
46
87
  queries: {
47
88
  dashboard: {
89
+ /** Tenant-wide TenantUser count (Tenant Console Overview). */
48
90
  activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,
91
+ /**
92
+ * Current-application TenantUserAppAccess count (TM Application scope).
93
+ * On Tenant Console Overview / TM Application Overview widgets (D-17 / D-18).
94
+ */
95
+ tmApplicationUsersKpi: `${config.module}:Dashboard:TmApplicationUsersKpi`,
49
96
  usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,
50
97
  },
51
98
  reports: {
@@ -132,12 +179,15 @@ async function tenantUserAppAccessEntityFactory() {
132
179
  type: AXPWidgetsList.Editors.LookupBox,
133
180
  options: {
134
181
  entity: `${RootConfig.module.name}.${RootConfig.entities.tenantUser.name}`,
135
- textField: 'user.displayName',
182
+ // Prefer entity searchResult template (user.displayName) over nested textField
183
+ // so list/hydrate can resolve membership labels.
136
184
  valueField: 'id',
137
185
  look: 'select',
138
186
  expose: [
139
187
  { source: 'id', target: 'tenantUser.id' },
140
188
  { source: 'userId', target: 'tenantUser.userId' },
189
+ { source: 'userId', target: 'userId' },
190
+ { source: 'user.displayName', target: 'tenantUser.displayName' },
141
191
  { source: 'tenantId', target: 'tenantUser.tenantId' },
142
192
  { source: 'tenantId', target: 'tenantId' },
143
193
  ],
@@ -150,6 +200,49 @@ async function tenantUserAppAccessEntityFactory() {
150
200
  filter: { advance: { enabled: true }, inline: { enabled: true } },
151
201
  },
152
202
  },
203
+ {
204
+ name: 'userId',
205
+ // List column label — values render from denormalized userDisplayName (expose target).
206
+ title: `@${i18n}.fields.tenant-user.title`,
207
+ groupId: 'basic-info',
208
+ schema: {
209
+ dataType: 'string',
210
+ interface: {
211
+ type: AXPWidgetsList.Editors.LookupBox,
212
+ options: {
213
+ entity: 'SecurityManagement.User',
214
+ textField: 'displayName',
215
+ valueField: 'id',
216
+ look: 'select',
217
+ expose: [
218
+ { source: 'id', target: 'user.id' },
219
+ { source: 'displayName', target: 'user.displayName' },
220
+ { source: 'displayName', target: 'userDisplayName' },
221
+ { source: 'username', target: 'user.username' },
222
+ ],
223
+ },
224
+ },
225
+ },
226
+ options: {
227
+ sort: { enabled: true },
228
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
229
+ },
230
+ },
231
+ {
232
+ name: 'userDisplayName',
233
+ title: `@${i18n}.fields.user.title`,
234
+ groupId: 'basic-info',
235
+ schema: {
236
+ dataType: 'string',
237
+ // Snapshot for list display / filters; not a primary list column widget.
238
+ visible: false,
239
+ interface: { type: AXPWidgetsCatalog.text },
240
+ },
241
+ options: {
242
+ sort: { enabled: true },
243
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
244
+ },
245
+ },
153
246
  {
154
247
  name: 'tenantId',
155
248
  title: `@${i18n}.fields.tenant.title`,
@@ -163,6 +256,11 @@ async function tenantUserAppAccessEntityFactory() {
163
256
  textField: 'title',
164
257
  valueField: 'id',
165
258
  look: 'select',
259
+ expose: [
260
+ { source: 'id', target: 'tenant.id' },
261
+ { source: 'title', target: 'tenant.title' },
262
+ { source: 'name', target: 'tenant.name' },
263
+ ],
166
264
  },
167
265
  },
168
266
  },
@@ -219,7 +317,8 @@ async function tenantUserAppAccessEntityFactory() {
219
317
  },
220
318
  ],
221
319
  columns: [
222
- { name: 'tenantUserId' },
320
+ // Lookup column; list cells prefer expose target `userDisplayName` (no User identity join).
321
+ { name: 'userId' },
223
322
  { name: 'tenantId' },
224
323
  { name: 'applicationId' },
225
324
  { name: 'startDate' },
@@ -259,7 +358,13 @@ async function tenantUserAppAccessEntityFactory() {
259
358
  ],
260
359
  },
261
360
  list: {
262
- views: [createAllQueryView()],
361
+ views: [
362
+ createAllQueryView(),
363
+ {
364
+ ...createQueryView(AXP_TENANT_USERS_VIEW, RootConfig.entities.tenantUserAppAccess.titlePlural, true),
365
+ visible: false,
366
+ },
367
+ ],
263
368
  actions: [...entityMasterCrudActions(), ...entityMasterRecordActions()],
264
369
  },
265
370
  },
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.mjs","sources":["../../../../libs/modules/tenant-management/contracts/src/root-config.ts","../../../../libs/modules/tenant-management/contracts/src/entities/tenant-user-app-access/tenant-user-app-access.entity.ts","../../../../libs/modules/tenant-management/contracts/src/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.ts"],"sourcesContent":["const config = {\n i18n: 'tenant-management',\n module: 'TenantManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'tenant-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-building',\n },\n entities: {\n tenant: {\n name: 'Tenant',\n source: `${config.module}.Tenant`,\n title: `@${config.i18n}:tenants.entities.tenant.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant.plural`,\n icon: 'fa-light fa-building',\n },\n tenantUser: {\n name: 'TenantUser',\n source: `${config.module}.TenantUser`,\n title: `@${config.i18n}:tenants.entities.tenant-user.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user.plural`,\n icon: 'fa-light fa-user-group',\n },\n tenantUserAppAccess: {\n name: 'TenantUserAppAccess',\n source: `${config.module}.TenantUserAppAccess`,\n title: `@${config.i18n}:tenants.entities.tenant-user-app-access.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user-app-access.plural`,\n icon: 'fa-light fa-app-store',\n },\n resourceShare: {\n name: 'ResourceShare',\n source: `${config.module}.ResourceShare`,\n title: `@${config.i18n}:tenants.entities.resource-share.title`,\n titlePlural: `@${config.i18n}:tenants.entities.resource-share.plural`,\n icon: 'fa-light fa-share-nodes',\n },\n },\n queries: {\n dashboard: {\n activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,\n usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,\n },\n reports: {\n getTenantApplicationAccess: `${config.module}:Reports:GetTenantApplicationAccess`,\n getTenantUserDistribution: `${config.module}:Reports:GetTenantUserDistribution`,\n getTenantRegistrationTimeline: `${config.module}:Reports:GetTenantRegistrationTimeline`,\n getTenantRegistrationChartData: `${config.module}:Reports:GetTenantRegistrationChartData`,\n getSubscriptionsTimeline: `${config.module}:Reports:GetSubscriptionsTimeline`,\n getSubscriptionsChartData: `${config.module}:Reports:GetSubscriptionsChartData`,\n },\n },\n};\n\n// Keep the old export for backward compatibility\nexport const AXMTenantManagementModuleConst = {\n moduleName: 'TenantManagement',\n moduleRoute: 'tenant-management',\n i18n: 'tenant-management',\n} as const;\n","import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n createAllQueryView,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\n\n//#region ---- TenantUserAppAccess entity factory ----\n\nexport async function tenantUserAppAccessEntityFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n + ':tenants.entities.tenant-user-app-access';\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.tenantUserAppAccess.name,\n title: RootConfig.entities.tenantUserAppAccess.title,\n icon: RootConfig.entities.tenantUserAppAccess.icon,\n searchTags: [\n 'app-access',\n 'tenant-user',\n 'application-access',\n 'tenant',\n 'application',\n 'membership',\n 'tenant-management',\n 'دسترسی کاربر مستأجر به برنامه',\n 'دسترسی برنامه',\n 'مستأجر',\n ],\n formats: {\n individual: RootConfig.entities.tenantUserAppAccess.title,\n plural: RootConfig.entities.tenantUserAppAccess.titlePlural,\n searchResult: {\n title: '{{ application.title || applicationId }}',\n description: '{{ tenantUserId }}',\n },\n },\n plugins: [\n {\n name: 'status',\n options: {\n field: 'statusId',\n definition: 'tenant-management.status.tenant',\n },\n },\n { name: 'history' },\n ],\n groups: [\n {\n id: 'basic-info',\n title: `@${i18n}.groups.basic-info`,\n },\n ],\n properties: [\n {\n name: 'id',\n title: 'ID',\n groupId: 'basic-info',\n schema: {\n dataType: 'uuid',\n visible: false,\n nullable: false,\n readonly: true,\n unique: { enabled: true },\n },\n },\n {\n name: 'tenantUserId',\n title: `@${i18n}.fields.tenant-user.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.tenantUser.name}`,\n textField: 'user.displayName',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'tenantUser.id' },\n { source: 'userId', target: 'tenantUser.userId' },\n { source: 'tenantId', target: 'tenantUser.tenantId' },\n { source: 'tenantId', target: 'tenantId' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'tenantId',\n title: `@${i18n}.fields.tenant.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.tenant.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'applicationId',\n title: `@${i18n}.fields.application.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'ApplicationManagement.Application',\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'application.id' },\n { source: 'title', target: 'application.title' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'startDate',\n title: `@${i18n}.fields.start-date.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'endDate',\n title: `@${i18n}.fields.end-date.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n },\n ],\n columns: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n single: {\n title: '{{applicationId}}',\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n list: {\n views: [createAllQueryView()],\n actions: [...entityMasterCrudActions(), ...entityMasterRecordActions()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.tenant-user-app-access';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.mjs","sources":["../../../../libs/modules/tenant-management/contracts/src/tenant-user-admin-scope.ts","../../../../libs/modules/tenant-management/contracts/src/root-config.ts","../../../../libs/modules/tenant-management/contracts/src/entities/tenant-user-app-access/tenant-user-app-access.entity.ts","../../../../libs/modules/tenant-management/contracts/src/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.ts"],"sourcesContent":["//#region ----- Tenant Users admin scope (operation-owned) -----\n\n/**\n * Explicit Tenant Users / Tenant Application Access operation scope (ADR-TEN-001).\n * Selected by the calling surface (`view=tenant-users`), not Application.code / TM ids,\n * and not by generic `/e/TenantUser*` entity routes alone.\n *\n * - `current-tenant` — TM → Tenant Users (and related AppAccess): force session tenant\n * - `default` — generic / platform TenantUser ops: existing membership policy (incl. isPlatform)\n */\nexport type AXPTenantUserAdminScope = 'current-tenant' | 'default';\n\n/** Query `params` key carrying the operation scope. */\nexport const AXP_TENANT_USER_ADMIN_SCOPE_PARAM = 'tenantUserAdminScope';\n\n/** HTTP header (lowercase) for getOne/update/delete (and related) ops. */\nexport const AXP_TENANT_USER_ADMIN_SCOPE_HEADER = 'x-axp-tenant-user-admin-scope';\n\n/** Entity list view name for TM → Tenant Users / Tenant Application Access. */\nexport const AXP_TENANT_USERS_VIEW = 'tenant-users';\n\nexport function normalizeTenantUserAdminScope(value: unknown): AXPTenantUserAdminScope {\n return value === 'current-tenant' ? 'current-tenant' : 'default';\n}\n\n/**\n * Whether the URL carries the explicit Tenant Users operation context.\n *\n * Prefer durable `tenantUserAdminScope=current-tenant` (entity list rewrites\n * unknown `view=` values to `all`). Also accept `view=tenant-users` when present.\n * Never infer from entity path `/e/TenantUser*` alone.\n */\nexport function isTenantUsersOperationUrl(url: string | null | undefined): boolean {\n if (!url) {\n return false;\n }\n\n try {\n const parsed = new URL(url, 'http://local.invalid');\n if (\n parsed.searchParams.get(AXP_TENANT_USER_ADMIN_SCOPE_PARAM)?.trim() === 'current-tenant'\n ) {\n return true;\n }\n if (parsed.searchParams.get('view')?.trim() === AXP_TENANT_USERS_VIEW) {\n return true;\n }\n } catch {\n // Fall through to substring checks.\n }\n\n return (\n url.includes(`${AXP_TENANT_USER_ADMIN_SCOPE_PARAM}=current-tenant`) ||\n url.includes(`view=${AXP_TENANT_USERS_VIEW}`)\n );\n}\n\nexport function resolveTenantUserAdminScopeFromUrl(\n url: string | null | undefined,\n): AXPTenantUserAdminScope {\n return isTenantUsersOperationUrl(url) ? 'current-tenant' : 'default';\n}\n\n//#endregion\n","const config = {\n i18n: 'tenant-management',\n module: 'TenantManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'tenant-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-building',\n },\n entities: {\n tenant: {\n name: 'Tenant',\n source: `${config.module}.Tenant`,\n title: `@${config.i18n}:tenants.entities.tenant.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant.plural`,\n icon: 'fa-light fa-building',\n },\n tenantUser: {\n name: 'TenantUser',\n source: `${config.module}.TenantUser`,\n title: `@${config.i18n}:tenants.entities.tenant-user.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user.plural`,\n icon: 'fa-light fa-user-group',\n },\n tenantUserAppAccess: {\n name: 'TenantUserAppAccess',\n source: `${config.module}.TenantUserAppAccess`,\n title: `@${config.i18n}:tenants.entities.tenant-user-app-access.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user-app-access.plural`,\n icon: 'fa-light fa-app-store',\n },\n resourceShare: {\n name: 'ResourceShare',\n source: `${config.module}.ResourceShare`,\n title: `@${config.i18n}:tenants.entities.resource-share.title`,\n titlePlural: `@${config.i18n}:tenants.entities.resource-share.plural`,\n icon: 'fa-light fa-share-nodes',\n },\n },\n queries: {\n dashboard: {\n /** Tenant-wide TenantUser count (Tenant Console Overview). */\n activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,\n /**\n * Current-application TenantUserAppAccess count (TM Application scope).\n * On Tenant Console Overview / TM Application Overview widgets (D-17 / D-18).\n */\n tmApplicationUsersKpi: `${config.module}:Dashboard:TmApplicationUsersKpi`,\n usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,\n },\n reports: {\n getTenantApplicationAccess: `${config.module}:Reports:GetTenantApplicationAccess`,\n getTenantUserDistribution: `${config.module}:Reports:GetTenantUserDistribution`,\n getTenantRegistrationTimeline: `${config.module}:Reports:GetTenantRegistrationTimeline`,\n getTenantRegistrationChartData: `${config.module}:Reports:GetTenantRegistrationChartData`,\n getSubscriptionsTimeline: `${config.module}:Reports:GetSubscriptionsTimeline`,\n getSubscriptionsChartData: `${config.module}:Reports:GetSubscriptionsChartData`,\n },\n },\n};\n\n// Keep the old export for backward compatibility\nexport const AXMTenantManagementModuleConst = {\n moduleName: 'TenantManagement',\n moduleRoute: 'tenant-management',\n i18n: 'tenant-management',\n} as const;\n","import { AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n createAllQueryView,\n createQueryView,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { AXP_TENANT_USERS_VIEW } from '../../tenant-user-admin-scope';\nimport { RootConfig } from '../../root-config';\n\n//#region ---- TenantUserAppAccess entity factory ----\n\nexport async function tenantUserAppAccessEntityFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n + ':tenants.entities.tenant-user-app-access';\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.tenantUserAppAccess.name,\n title: RootConfig.entities.tenantUserAppAccess.title,\n icon: RootConfig.entities.tenantUserAppAccess.icon,\n searchTags: [\n 'app-access',\n 'tenant-user',\n 'application-access',\n 'tenant',\n 'application',\n 'membership',\n 'tenant-management',\n 'دسترسی کاربر مستأجر به برنامه',\n 'دسترسی برنامه',\n 'مستأجر',\n ],\n formats: {\n individual: RootConfig.entities.tenantUserAppAccess.title,\n plural: RootConfig.entities.tenantUserAppAccess.titlePlural,\n searchResult: {\n title: '{{ application.title || applicationId }}',\n description: '{{ tenantUserId }}',\n },\n },\n plugins: [\n {\n name: 'status',\n options: {\n field: 'statusId',\n definition: 'tenant-management.status.tenant',\n },\n },\n { name: 'history' },\n ],\n groups: [\n {\n id: 'basic-info',\n title: `@${i18n}.groups.basic-info`,\n },\n ],\n properties: [\n {\n name: 'id',\n title: 'ID',\n groupId: 'basic-info',\n schema: {\n dataType: 'uuid',\n visible: false,\n nullable: false,\n readonly: true,\n unique: { enabled: true },\n },\n },\n {\n name: 'tenantUserId',\n title: `@${i18n}.fields.tenant-user.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.tenantUser.name}`,\n // Prefer entity searchResult template (user.displayName) over nested textField\n // so list/hydrate can resolve membership labels.\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'tenantUser.id' },\n { source: 'userId', target: 'tenantUser.userId' },\n { source: 'userId', target: 'userId' },\n { source: 'user.displayName', target: 'tenantUser.displayName' },\n { source: 'tenantId', target: 'tenantUser.tenantId' },\n { source: 'tenantId', target: 'tenantId' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'userId',\n // List column label — values render from denormalized userDisplayName (expose target).\n title: `@${i18n}.fields.tenant-user.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'SecurityManagement.User',\n textField: 'displayName',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'user.id' },\n { source: 'displayName', target: 'user.displayName' },\n { source: 'displayName', target: 'userDisplayName' },\n { source: 'username', target: 'user.username' },\n ],\n },\n },\n },\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'userDisplayName',\n title: `@${i18n}.fields.user.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n // Snapshot for list display / filters; not a primary list column widget.\n visible: false,\n interface: { type: AXPWidgetsCatalog.text },\n },\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'tenantId',\n title: `@${i18n}.fields.tenant.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.tenant.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'tenant.id' },\n { source: 'title', target: 'tenant.title' },\n { source: 'name', target: 'tenant.name' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'applicationId',\n title: `@${i18n}.fields.application.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'ApplicationManagement.Application',\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'application.id' },\n { source: 'title', target: 'application.title' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'startDate',\n title: `@${i18n}.fields.start-date.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'endDate',\n title: `@${i18n}.fields.end-date.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n },\n ],\n columns: [\n // Lookup column; list cells prefer expose target `userDisplayName` (no User identity join).\n { name: 'userId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n single: {\n title: '{{applicationId}}',\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n list: {\n views: [\n createAllQueryView(),\n {\n ...createQueryView(\n AXP_TENANT_USERS_VIEW,\n RootConfig.entities.tenantUserAppAccess.titlePlural,\n true,\n ),\n visible: false,\n },\n ],\n actions: [...entityMasterCrudActions(), ...entityMasterRecordActions()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.tenant-user-app-access';\n"],"names":[],"mappings":"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"}