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

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
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-tenant-management-client.mjs","sources":["../../../../libs/modules/tenant-management/client/src/lib/features/tenant-status.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/features/tenant-user-status.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/middlewares/tenant-user-account-holder.middleware.ts","../../../../libs/modules/tenant-management/client/src/lib/middlewares/index.ts","../../../../libs/modules/tenant-management/client/src/lib/feature-definition.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/menu.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/setting.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/context-definition.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/tenant-management.module.ts","../../../../libs/modules/tenant-management/client/src/acorex-platform-module-tenant-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPStatusProvider, AXPStatusTransition, AXPSystemStatusType, systemStatusToDefinition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Tenant Status Provider ----\n\n/**\n * Tenant status provider defining lifecycle states for tenants.\n * Used by the status plugin to manage tenant status transitions and metadata.\n */\nexport class AXMTenantStatusProvider extends AXPStatusProvider {\n readonly key = 'tenant-management.status.tenant';\n\n readonly defaultStatus = AXPSystemStatusType.Active;\n\n readonly statuses = [\n systemStatusToDefinition(AXPSystemStatusType.Active, {\n title: '@tenant-management:tenants.states.active',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Inactive, {\n title: '@tenant-management:tenants.states.inactive',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Suspended, {\n title: '@tenant-management:tenants.states.suspended',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Pending, {\n title: '@tenant-management:tenants.states.pending',\n generateView: true,\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: AXPSystemStatusType.Pending,\n to: AXPSystemStatusType.Active,\n title: '@tenant-management:tenants.transitions.activate',\n },\n {\n from: AXPSystemStatusType.Active,\n to: AXPSystemStatusType.Inactive,\n title: '@tenant-management:tenants.transitions.deactivate',\n },\n {\n from: AXPSystemStatusType.Active,\n to: AXPSystemStatusType.Suspended,\n title: '@tenant-management:tenants.transitions.suspend',\n },\n {\n from: AXPSystemStatusType.Suspended,\n to: AXPSystemStatusType.Active,\n title: '@tenant-management:tenants.transitions.resume',\n },\n {\n from: AXPSystemStatusType.Inactive,\n to: AXPSystemStatusType.Active,\n title: '@tenant-management:tenants.transitions.activate',\n },\n ];\n}\n\n//#endregion\n\n","//#region ----- Imports -----\n\nimport {\n AXPStatusProvider,\n AXPStatusTransition,\n AXPSystemStatusType,\n systemStatusToDefinition,\n} from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ----- TenantUser membership status -----\n\n/**\n * Membership lifecycle for TenantManagement.TenantUser (incl. invite outcomes).\n * Separate from tenant-management.status.tenant so Tenant entity tabs stay clean.\n */\nexport class AXMTenantUserStatusProvider extends AXPStatusProvider {\n readonly key = 'tenant-management.status.tenant-user';\n\n readonly defaultStatus = AXPSystemStatusType.Active;\n\n readonly statuses = [\n systemStatusToDefinition(AXPSystemStatusType.Pending, {\n title: '@tenant-management:tenants.entities.tenant-user.states.pending',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Active, {\n title: '@tenant-management:tenants.entities.tenant-user.states.active',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Rejected, {\n title: '@tenant-management:tenants.entities.tenant-user.states.rejected',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Cancelled, {\n title: '@tenant-management:tenants.entities.tenant-user.states.cancelled',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Expired, {\n title: '@tenant-management:tenants.entities.tenant-user.states.expired',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Inactive, {\n title: '@tenant-management:tenants.entities.tenant-user.states.inactive',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Suspended, {\n title: '@tenant-management:tenants.entities.tenant-user.states.suspended',\n generateView: false,\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [];\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { inject } from '@angular/core';\nimport {\n AXPEntityStorageMiddleware,\n AXPMiddlewareAbortError,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#endregion\n\n//#region ---- Tenant User Account Holder Middleware ----\n\n/**\n * Tenant User Account Holder Enforcement Middleware\n *\n * Enforces business rules for the isAccountHolder flag:\n * 1. CREATE: Prevents manual creation with isAccountHolder=true (must use TransferOwnership command)\n * 2. UPDATE:\n * - Prevents deactivating account holder\n * - Prevents manually toggling isAccountHolder flag\n * 3. DELETE: Prevents deleting account holder\n *\n * Runs on: TenantUser entity operations\n */\nexport const tenantUserAccountHolderMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create', 'update', 'delete'],\n order: 10, // Early enforcement before other business logic\n },\n\n execute: async (ctx, next) => {\n const entityFullName = `${RootConfig.module.name}.${RootConfig.entities.tenantUser.name}`;\n\n // Only apply to TenantUser entity\n if (ctx.entityName !== entityFullName) {\n await next();\n return;\n }\n\n const backend = ctx.entities;\n\n //#region ---- CREATE Operation ----\n\n if (ctx.op === 'create') {\n // Rule 1: Cannot manually create account holder\n // Must use TransferOwnership command instead\n if (ctx.data?.isAccountHolder === true) {\n throw new AXPMiddlewareAbortError(\n 'Cannot manually create tenant user as account holder. Use Transfer Ownership command.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_MANUAL_CREATE',\n details: {\n entity: ctx.entityName,\n field: 'isAccountHolder',\n },\n }\n );\n }\n\n // Ensure isAccountHolder is explicitly set to false for new users\n if (ctx.data) {\n ctx.data.isAccountHolder = false;\n }\n }\n\n //#endregion\n\n //#region ---- UPDATE Operation ----\n\n if (ctx.op === 'update') {\n // Load existing record to check current state\n let existing: any;\n try {\n existing = await backend.getOne(ctx.entityName, ctx.id);\n } catch (error) {\n // If record doesn't exist, let it fail naturally in next()\n await next();\n return;\n }\n\n // Rule 2: Cannot manually toggle isAccountHolder flag\n if (\n ctx.data?.isAccountHolder !== undefined &&\n ctx.data.isAccountHolder !== existing.isAccountHolder\n ) {\n throw new AXPMiddlewareAbortError(\n 'Cannot manually change account holder status. Use Transfer Ownership command.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_MANUAL_TOGGLE',\n details: {\n entity: ctx.entityName,\n id: ctx.id,\n currentValue: existing.isAccountHolder,\n attemptedValue: ctx.data.isAccountHolder,\n },\n }\n );\n }\n\n // Rule 3: Cannot deactivate account holder\n if (existing.isAccountHolder === true) {\n // Check if trying to deactivate (status change to inactive/disabled)\n if (ctx.data?.statusId && ctx.data.statusId !== 'active') {\n throw new AXPMiddlewareAbortError(\n 'Cannot deactivate account holder. Transfer ownership to another user first.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_DEACTIVATE',\n details: {\n entity: ctx.entityName,\n id: ctx.id,\n tenantId: existing.tenantId,\n userId: existing.userId,\n },\n }\n );\n }\n\n // Prevent end date before current date for account holder\n if (ctx.data?.endDate) {\n const endDate = new Date(ctx.data.endDate);\n const now = new Date();\n if (endDate < now) {\n throw new AXPMiddlewareAbortError(\n 'Cannot set past end date for account holder. Transfer ownership first.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_END_DATE',\n details: {\n entity: ctx.entityName,\n id: ctx.id,\n endDate: ctx.data.endDate,\n },\n }\n );\n }\n }\n }\n }\n\n //#endregion\n\n //#region ---- DELETE Operation ----\n\n if (ctx.op === 'delete') {\n // Load existing record to check if it's an account holder\n let existing: any;\n try {\n existing = await backend.getOne(ctx.entityName, ctx.id);\n } catch (error) {\n // If record doesn't exist, let it fail naturally in next()\n await next();\n return;\n }\n\n // Rule 4: Cannot delete account holder\n if (existing?.isAccountHolder === true) {\n throw new AXPMiddlewareAbortError(\n 'Cannot delete account holder. Transfer ownership to another user first.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_DELETE',\n details: {\n entity: ctx.entityName,\n id: ctx.id,\n tenantId: existing.tenantId,\n userId: existing.userId,\n },\n }\n );\n }\n }\n\n //#endregion\n\n // Execute the operation if all validations passed\n await next();\n },\n};\n\n//#endregion\n\n","//#region ---- Middleware Exports ----\n\nexport { tenantUserAccountHolderMiddleware } from './tenant-user-account-holder.middleware';\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex-platform/framework-client/core';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Tenant Management Feature Definition Provider.\n * Provides feature definitions for the Tenant Management module.\n */\nexport class AXMTenantManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n // Management feature removed - module name is used directly as feature key\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPApplicationsPlatformPermissionKeys\n} from '@acorex-platform/module-tenant-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers MaintainTenants under Applications & Platform.\n */\n@Injectable()\nexport class AXMTenantManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPApplicationsPlatformPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:applications-platform.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.ApplicationsPlatform.Root, `${G}.applications-platform.title`, `${G}.applications-platform.description`, { order: 110 });\n\n context\n .addGroup(\n groups.ApplicationsPlatform.TenancyShell,\n `${G}.applications-platform-tenancy-shell.title`,\n `${G}.applications-platform-tenancy-shell.description`,\n { parent: groups.ApplicationsPlatform.Root, order: 20 },\n )\n .addPermission(keys.MaintainTenants, `${P}.maintain-tenants.title`, `${P}.maintain-tenants.description`, {\n modules: ['TenantManagement'],\n requiredFeatures: ['TenantManagement'],\n })\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-tenant-management-client/contracts';\nimport { AXMTenantManagementMenuKeys } from '@acorex-platform/module-tenant-management-client/contracts';\nimport { AXPApplicationsPlatformPermissionKeys } from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\nexport class AXMTenantManagementModuleMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n\n context.find(AXPCommonMenuKeys.Platform).addItems([\n {\n name: AXMTenantManagementMenuKeys.Tenants,\n text: `@${RootConfig.config.i18n}:tenants.entities.tenant.plural`,\n path: this.entityService.createPath(module.name, RootConfig.entities.tenant.name),\n icon: RootConfig.entities.tenant.icon,\n priority: 4,\n policy: {\n features: [module.name],\n permissions: [AXPApplicationsPlatformPermissionKeys.MaintainTenants],\n },\n },\n { name: `${AXMTenantManagementMenuKeys.Root}:divider`, text: '', type: 'break', priority: 5 },\n ]);\n }\n}\n\n//#endregion\n","import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-tenant-management-client/contracts';\n\nconst I18N = `@${RootConfig.config.i18n}:tenants.settings.tenant`;\n\nexport class AXMTenantSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n context\n .addGroup(\n 'tenant',\n `${I18N}.group.nav-title`,\n `${I18N}.group.description`,\n RootConfig.module.icon,\n `${I18N}.group.title`,\n 25,\n )\n .addSection('general', `${I18N}.sections.general.title`, `${I18N}.sections.general.description`)\n // TODO: Add tenant-specific settings here when needed\n .endSection()\n .endGroup();\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, createEntitySearchCommand } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nexport class AXMTenantSearchCommandProvider extends AXPSearchCommandProvider {\n commands = [\n createEntitySearchCommand({\n id: 'create-tenant',\n entityKey: `${RootConfig.module.name}.${RootConfig.entities.tenant.name}`,\n entityInfo: { name: RootConfig.entities.tenant.name, module: RootConfig.module.name, title: RootConfig.entities.tenant.title },\n titleKey: `@${RootConfig.config.i18n}:tenants.actions.create-tenant.title`,\n descriptionKey: `@${RootConfig.config.i18n}:tenants.actions.create-tenant.description`,\n icon: RootConfig.entities.tenant.icon,\n }),\n ];\n}\n\n//#endregion\n\n","import { Injectable } from '@angular/core';\nimport type { AXPContextDefinition, AXPContextDefinitionProvider } from '@acorex-platform/framework-client/core';\nimport { AXM_TENANT_CONTEXT_DEFINITIONS } from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#region ---- Tenant context definitions ----\n\n@Injectable()\nexport class AXMTenantManagementContextDefinitionProvider implements AXPContextDefinitionProvider {\n async items(): Promise<AXPContextDefinition[]> {\n return AXM_TENANT_CONTEXT_DEFINITIONS;\n }\n}\n\n//#endregion\n","import { AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_CONTEXT_DEFINITION_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { NgModule } from '@angular/core';\nimport { AXMTenantStatusProvider } from './features/tenant-status.provider';\nimport { AXMTenantUserStatusProvider } from './features/tenant-user-status.provider';\nimport { tenantUserAccountHolderMiddleware } from './middlewares';\nimport { AXMTenantManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXMTenantManagementPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMTenantManagementModuleMenuProvider } from './menu.provider';\n\nimport { AXMTenantSettingProvider } from './setting.provider';\nimport { AXMTenantSearchCommandProvider } from './search-command.provider';\nimport { AXMTenantManagementContextDefinitionProvider } from './context-definition.provider';\n// Entity Modules\n\n@NgModule({\n imports: [\n // Entity Modules\n ],\n exports: [],\n declarations: [],\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMTenantStatusProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMTenantUserStatusProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: tenantUserAccountHolderMiddleware,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXMTenantManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMTenantManagementPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMTenantManagementModuleMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMTenantSettingProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMTenantSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_CONTEXT_DEFINITION_PROVIDER,\n useClass: AXMTenantManagementContextDefinitionProvider,\n multi: true,\n },\n ],\n})\nexport class AXMTenantManagementModule {\n constructor() { }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-tenant-management-client.mjs","sources":["../../../../libs/modules/tenant-management/client/src/lib/features/tenant-status.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/features/tenant-user-status.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/middlewares/tenant-user-account-holder.middleware.ts","../../../../libs/modules/tenant-management/client/src/lib/middlewares/tenant-user-admin-scope.util.ts","../../../../libs/modules/tenant-management/client/src/lib/middlewares/tenant-user-admin-scope.middleware.ts","../../../../libs/modules/tenant-management/client/src/lib/middlewares/tenant-user-admin-scope.interceptor.ts","../../../../libs/modules/tenant-management/client/src/lib/middlewares/index.ts","../../../../libs/modules/tenant-management/client/src/lib/feature-definition.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/menu.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/setting.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/context-definition.provider.ts","../../../../libs/modules/tenant-management/client/src/lib/tenant-management.module.ts","../../../../libs/modules/tenant-management/client/src/lib/tenant-extra/tenant-extra.token.ts","../../../../libs/modules/tenant-management/client/src/lib/tenant-extra/tenant-extra-layout.util.ts","../../../../libs/modules/tenant-management/client/src/acorex-platform-module-tenant-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPStatusProvider, AXPStatusTransition, AXPSystemStatusType, systemStatusToDefinition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Tenant Status Provider ----\n\n/**\n * Tenant status provider defining lifecycle states for tenants.\n * Used by the status plugin to manage tenant status transitions and metadata.\n */\nexport class AXMTenantStatusProvider extends AXPStatusProvider {\n readonly key = 'tenant-management.status.tenant';\n\n readonly defaultStatus = AXPSystemStatusType.Active;\n\n readonly statuses = [\n systemStatusToDefinition(AXPSystemStatusType.Active, {\n title: '@tenant-management:tenants.states.active',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Inactive, {\n title: '@tenant-management:tenants.states.inactive',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Suspended, {\n title: '@tenant-management:tenants.states.suspended',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Pending, {\n title: '@tenant-management:tenants.states.pending',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Rejected, {\n title: '@tenant-management:tenants.states.rejected',\n generateView: true,\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n // Pending → Active / Rejected: use primary Approve / Reject request actions only\n // (status-chip UpdateStatus would skip invite / email / provisioning).\n {\n from: AXPSystemStatusType.Active,\n to: AXPSystemStatusType.Inactive,\n title: '@tenant-management:tenants.transitions.deactivate',\n },\n {\n from: AXPSystemStatusType.Active,\n to: AXPSystemStatusType.Suspended,\n title: '@tenant-management:tenants.transitions.suspend',\n },\n {\n from: AXPSystemStatusType.Suspended,\n to: AXPSystemStatusType.Active,\n title: '@tenant-management:tenants.transitions.resume',\n },\n {\n from: AXPSystemStatusType.Inactive,\n to: AXPSystemStatusType.Active,\n title: '@tenant-management:tenants.transitions.activate',\n },\n ];\n}\n\n//#endregion\n\n","//#region ----- Imports -----\n\nimport {\n AXPStatusProvider,\n AXPStatusTransition,\n AXPSystemStatusType,\n systemStatusToDefinition,\n} from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ----- TenantUser membership status -----\n\n/**\n * Membership lifecycle for TenantManagement.TenantUser (incl. invite outcomes).\n * Separate from tenant-management.status.tenant so Tenant entity tabs stay clean.\n */\nexport class AXMTenantUserStatusProvider extends AXPStatusProvider {\n readonly key = 'tenant-management.status.tenant-user';\n\n readonly defaultStatus = AXPSystemStatusType.Active;\n\n readonly statuses = [\n systemStatusToDefinition(AXPSystemStatusType.Pending, {\n title: '@tenant-management:tenants.entities.tenant-user.states.pending',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Active, {\n title: '@tenant-management:tenants.entities.tenant-user.states.active',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Rejected, {\n title: '@tenant-management:tenants.entities.tenant-user.states.rejected',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Cancelled, {\n title: '@tenant-management:tenants.entities.tenant-user.states.cancelled',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Expired, {\n title: '@tenant-management:tenants.entities.tenant-user.states.expired',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Inactive, {\n title: '@tenant-management:tenants.entities.tenant-user.states.inactive',\n generateView: false,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Suspended, {\n title: '@tenant-management:tenants.entities.tenant-user.states.suspended',\n generateView: false,\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [];\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { inject } from '@angular/core';\nimport {\n AXPEntityStorageMiddleware,\n AXPMiddlewareAbortError,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#endregion\n\n//#region ---- Tenant User Account Holder Middleware ----\n\n/**\n * Tenant User Account Holder Enforcement Middleware\n *\n * Enforces business rules for the isAccountHolder flag:\n * 1. CREATE: Prevents manual creation with isAccountHolder=true (must use TransferOwnership command)\n * 2. UPDATE:\n * - Prevents deactivating account holder\n * - Prevents manually toggling isAccountHolder flag\n * 3. DELETE: Prevents deleting account holder\n *\n * Runs on: TenantUser entity operations\n */\nexport const tenantUserAccountHolderMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create', 'update', 'delete'],\n order: 10, // Early enforcement before other business logic\n },\n\n execute: async (ctx, next) => {\n const entityFullName = `${RootConfig.module.name}.${RootConfig.entities.tenantUser.name}`;\n\n // Only apply to TenantUser entity\n if (ctx.entityName !== entityFullName) {\n await next();\n return;\n }\n\n const backend = ctx.entities;\n\n //#region ---- CREATE Operation ----\n\n if (ctx.op === 'create') {\n // Rule 1: Cannot manually create account holder\n // Must use TransferOwnership command instead\n if (ctx.data?.isAccountHolder === true) {\n throw new AXPMiddlewareAbortError(\n 'Cannot manually create tenant user as account holder. Use Transfer Ownership command.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_MANUAL_CREATE',\n details: {\n entity: ctx.entityName,\n field: 'isAccountHolder',\n },\n }\n );\n }\n\n // Ensure isAccountHolder is explicitly set to false for new users\n if (ctx.data) {\n ctx.data.isAccountHolder = false;\n }\n }\n\n //#endregion\n\n //#region ---- UPDATE Operation ----\n\n if (ctx.op === 'update') {\n // Load existing record to check current state\n let existing: any;\n try {\n existing = await backend.getOne(ctx.entityName, ctx.id);\n } catch (error) {\n // If record doesn't exist, let it fail naturally in next()\n await next();\n return;\n }\n\n // Rule 2: Cannot manually toggle isAccountHolder flag\n if (\n ctx.data?.isAccountHolder !== undefined &&\n ctx.data.isAccountHolder !== existing.isAccountHolder\n ) {\n throw new AXPMiddlewareAbortError(\n 'Cannot manually change account holder status. Use Transfer Ownership command.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_MANUAL_TOGGLE',\n details: {\n entity: ctx.entityName,\n id: ctx.id,\n currentValue: existing.isAccountHolder,\n attemptedValue: ctx.data.isAccountHolder,\n },\n }\n );\n }\n\n // Rule 3: Cannot deactivate account holder\n if (existing.isAccountHolder === true) {\n // Check if trying to deactivate (status change to inactive/disabled)\n if (ctx.data?.statusId && ctx.data.statusId !== 'active') {\n throw new AXPMiddlewareAbortError(\n 'Cannot deactivate account holder. Transfer ownership to another user first.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_DEACTIVATE',\n details: {\n entity: ctx.entityName,\n id: ctx.id,\n tenantId: existing.tenantId,\n userId: existing.userId,\n },\n }\n );\n }\n\n // Prevent end date before current date for account holder\n if (ctx.data?.endDate) {\n const endDate = new Date(ctx.data.endDate);\n const now = new Date();\n if (endDate < now) {\n throw new AXPMiddlewareAbortError(\n 'Cannot set past end date for account holder. Transfer ownership first.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_END_DATE',\n details: {\n entity: ctx.entityName,\n id: ctx.id,\n endDate: ctx.data.endDate,\n },\n }\n );\n }\n }\n }\n }\n\n //#endregion\n\n //#region ---- DELETE Operation ----\n\n if (ctx.op === 'delete') {\n // Load existing record to check if it's an account holder\n let existing: any;\n try {\n existing = await backend.getOne(ctx.entityName, ctx.id);\n } catch (error) {\n // If record doesn't exist, let it fail naturally in next()\n await next();\n return;\n }\n\n // Rule 4: Cannot delete account holder\n if (existing?.isAccountHolder === true) {\n throw new AXPMiddlewareAbortError(\n 'Cannot delete account holder. Transfer ownership to another user first.',\n {\n status: 400,\n code: 'TENANT_USER_ACCOUNT_HOLDER_DELETE',\n details: {\n entity: ctx.entityName,\n id: ctx.id,\n tenantId: existing.tenantId,\n userId: existing.userId,\n },\n }\n );\n }\n }\n\n //#endregion\n\n // Execute the operation if all validations passed\n await next();\n },\n};\n\n//#endregion\n\n","//#region ----- Imports -----\n\nimport {\n AXP_TENANT_USER_ADMIN_SCOPE_PARAM,\n RootConfig,\n resolveTenantUserAdminScopeFromUrl,\n type AXPTenantUserAdminScope,\n} from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#endregion\n\n//#region ----- Tenant Users admin scope (client) -----\n\nexport const TENANT_USER_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.tenantUser.name}`;\nexport const TENANT_USER_APP_ACCESS_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.tenantUserAppAccess.name}`;\n\nexport { resolveTenantUserAdminScopeFromUrl };\n\nexport function isTenantUserAdminScopeEntity(entityName: string | null | undefined): boolean {\n return (\n entityName === TENANT_USER_ENTITY_NAME || entityName === TENANT_USER_APP_ACCESS_ENTITY_NAME\n );\n}\n\nexport function withTenantUserAdminScopeParam(\n params: Record<string, string> | undefined,\n scope: AXPTenantUserAdminScope,\n): Record<string, string> {\n return {\n ...(params ?? {}),\n [AXP_TENANT_USER_ADMIN_SCOPE_PARAM]: scope,\n };\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPEntityStorageMiddleware } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n isTenantUserAdminScopeEntity,\n resolveTenantUserAdminScopeFromUrl,\n withTenantUserAdminScopeParam,\n} from './tenant-user-admin-scope.util';\n\n//#endregion\n\n//#region ----- Tenant Users admin scope (client entity middleware) -----\n\n/**\n * Injects explicit `tenantUserAdminScope=current-tenant` on TenantUser /\n * TenantUserAppAccess queries when the open surface carries `view=tenant-users`\n * — not for generic / PC / shared entity routes without that view.\n */\nexport const tenantUserAdminScopeMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['query'],\n order: 8,\n },\n\n execute: async (ctx, next) => {\n if (!isTenantUserAdminScopeEntity(ctx.entityName)) {\n await next();\n return;\n }\n\n const router = inject(Router);\n const scope = resolveTenantUserAdminScopeFromUrl(router.url);\n if (scope === 'current-tenant' && ctx.request) {\n ctx.request = {\n ...ctx.request,\n params: withTenantUserAdminScopeParam(ctx.request.params, scope),\n };\n }\n await next();\n },\n};\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXP_TENANT_USER_ADMIN_SCOPE_HEADER } from '@acorex-platform/module-tenant-management-client/contracts';\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport {\n isTenantUserAdminScopeEntity,\n resolveTenantUserAdminScopeFromUrl,\n} from './tenant-user-admin-scope.util';\n\n//#endregion\n\n//#region ----- Tenant Users admin scope interceptor -----\n\n/**\n * Attaches admin-scope header for TenantUser / TenantUserAppAccess runtime\n * calls so getOne / update / delete honor the same Tenant Users operation\n * as the open list/detail surface.\n */\n@Injectable()\nexport class TenantUserAdminScopeInterceptor implements HttpInterceptor {\n private readonly router = inject(Router);\n\n intercept(\n request: HttpRequest<unknown>,\n next: HttpHandler,\n ): Observable<HttpEvent<unknown>> {\n if (!this.targetsTenantUserEntities(request)) {\n return next.handle(request);\n }\n\n const scope = resolveTenantUserAdminScopeFromUrl(this.router.url);\n if (scope !== 'current-tenant') {\n return next.handle(request);\n }\n\n return next.handle(\n request.clone({\n setHeaders: {\n [AXP_TENANT_USER_ADMIN_SCOPE_HEADER]: scope,\n },\n }),\n );\n }\n\n private targetsTenantUserEntities(request: HttpRequest<unknown>): boolean {\n const body = request.body;\n if (body && typeof body === 'object' && !Array.isArray(body)) {\n const record = body as Record<string, unknown>;\n const input = record['input'];\n const entityFromInput =\n input && typeof input === 'object' && !Array.isArray(input)\n ? (input as Record<string, unknown>)['entity']\n : undefined;\n const entity = record['entity'] ?? entityFromInput;\n if (typeof entity === 'string' && isTenantUserAdminScopeEntity(entity)) {\n return true;\n }\n }\n\n const entityQuery = request.params?.get?.('entity');\n if (typeof entityQuery === 'string' && isTenantUserAdminScopeEntity(entityQuery)) {\n return true;\n }\n\n return (\n request.url.includes('TenantUserAppAccess') || request.url.includes('/TenantUser')\n );\n }\n}\n\n//#endregion\n","//#region ---- Middleware Exports ----\n\nexport { tenantUserAccountHolderMiddleware } from './tenant-user-account-holder.middleware';\nexport { tenantUserAdminScopeMiddleware } from './tenant-user-admin-scope.middleware';\nexport { TenantUserAdminScopeInterceptor } from './tenant-user-admin-scope.interceptor';\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex-platform/framework-client/core';\nimport {\n AXMTenantManagementFeatureKeys,\n RootConfig,\n} from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Tenant Management Feature Definition Provider.\n * Provides feature definitions for the Tenant Management module.\n */\nexport class AXMTenantManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n const i18n = RootConfig.config.i18n;\n\n context.addFeature(AXMTenantManagementFeatureKeys.ManagePlatformTenants, {\n title: `@${i18n}:features.manage-platform-tenants.title`,\n description: `@${i18n}:features.manage-platform-tenants.description`,\n defaultValue: false,\n type: 'boolean',\n });\n\n context.addFeature(AXMTenantManagementFeatureKeys.TenantConsole, {\n title: `@${i18n}:features.tenant-console.title`,\n description: `@${i18n}:features.tenant-console.description`,\n defaultValue: false,\n type: 'boolean',\n });\n\n context.addFeature(AXMTenantManagementFeatureKeys.InviteMultiApplication, {\n title: `@${i18n}:features.invite-multi-application.title`,\n description: `@${i18n}:features.invite-multi-application.description`,\n defaultValue: false,\n type: 'boolean',\n });\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPApplicationsPlatformPermissionKeys\n} from '@acorex-platform/module-tenant-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers MaintainTenants under Applications & Platform.\n */\n@Injectable()\nexport class AXMTenantManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPApplicationsPlatformPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:applications-platform.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.ApplicationsPlatform.Root, `${G}.applications-platform.title`, `${G}.applications-platform.description`, { order: 110 });\n\n context\n .addGroup(\n groups.ApplicationsPlatform.TenancyShell,\n `${G}.applications-platform-tenancy-shell.title`,\n `${G}.applications-platform-tenancy-shell.description`,\n { parent: groups.ApplicationsPlatform.Root, order: 20 },\n )\n .addPermission(keys.MaintainTenants, `${P}.maintain-tenants.title`, `${P}.maintain-tenants.description`, {\n modules: ['TenantManagement'],\n requiredFeatures: ['TenantManagement'],\n })\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPApplicationsPlatformPermissionKeys,\n AXP_TENANT_USER_ADMIN_SCOPE_PARAM,\n AXP_TENANT_USERS_VIEW,\n AXMTenantManagementFeatureKeys,\n AXMTenantManagementMenuKeys,\n RootConfig,\n} from '@acorex-platform/module-tenant-management-client/contracts';\nimport { inject } from '@angular/core';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Stable capability keys (avoid importing SecurityManagement client — cycle risk). */\nconst MAINTAIN_USERS_AND_ROLES = 'Administration:Permission:MaintainUsersAndRoles';\nconst MANAGE_SESSIONS = 'Administration:Permission:ManageSessions';\nconst SECURITY_MODULE = 'SecurityManagement';\nconst DEVICE_SESSIONS_ENTITY = 'DeviceSessions';\n/** Explicit tenant-sessions list view (operation-owned scope; not inferred from TM app id). */\nconst TENANT_SESSIONS_VIEW = 'tenant-sessions';\n\n/**\n * Durable Tenant Users operation signal on the menu path.\n * Prefer `tenantUserAdminScope=` over `view=` alone — entity list rewrites\n * unknown/hidden views to `all` and would drop a view-only signal.\n */\nconst TENANT_USERS_OPERATION_QUERY = `${AXP_TENANT_USER_ADMIN_SCOPE_PARAM}=current-tenant&view=${AXP_TENANT_USERS_VIEW}`;\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\nexport class AXMTenantManagementModuleMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n\n // Platform → Tenants: Platform Console only (ADR-TEN-001 — must not appear in TM).\n context.find(AXPCommonMenuKeys.Platform).addItems([\n {\n name: AXMTenantManagementMenuKeys.Tenants,\n text: `@${RootConfig.config.i18n}:tenants.entities.tenant.plural`,\n path: this.entityService.createPath(module.name, RootConfig.entities.tenant.name),\n icon: RootConfig.entities.tenant.icon,\n priority: 4,\n policy: {\n features: [AXMTenantManagementFeatureKeys.ManagePlatformTenants],\n permissions: [AXPApplicationsPlatformPermissionKeys.MaintainTenants],\n },\n },\n { name: `${AXMTenantManagementMenuKeys.Root}:divider`, text: '', type: 'break', priority: 5 },\n ]);\n\n // TM Administration surfaces (ADR-TEN-001 D-04 / D-07) — TM application only.\n // Gated by TenantConsole (TM Standard edition); not by TenantManagement module alone\n // (PC also enables the module for Platform → Tenants).\n // Application Users remain under Administration → Security → Users (SecurityManagement provider).\n context.find(AXPCommonMenuKeys.Administration).addItems([\n {\n name: AXMTenantManagementMenuKeys.TenantUsers,\n text: RootConfig.entities.tenantUser.titlePlural,\n // Explicit Tenant Users operation (current-tenant scope; not Application.code).\n path: `${this.entityService.createPath(module.name, RootConfig.entities.tenantUser.name)}?${TENANT_USERS_OPERATION_QUERY}`,\n icon: RootConfig.entities.tenantUser.icon,\n priority: 20,\n policy: {\n features: [AXMTenantManagementFeatureKeys.TenantConsole],\n permissions: [MAINTAIN_USERS_AND_ROLES],\n },\n },\n {\n name: AXMTenantManagementMenuKeys.TenantApplicationAccess,\n text: RootConfig.entities.tenantUserAppAccess.titlePlural,\n path: `${this.entityService.createPath(module.name, RootConfig.entities.tenantUserAppAccess.name)}?${TENANT_USERS_OPERATION_QUERY}`,\n icon: RootConfig.entities.tenantUserAppAccess.icon,\n priority: 21,\n policy: {\n features: [AXMTenantManagementFeatureKeys.TenantConsole],\n permissions: [MAINTAIN_USERS_AND_ROLES],\n },\n },\n {\n name: AXMTenantManagementMenuKeys.TenantSessions,\n text: `@${RootConfig.config.i18n}:module.menus.tenant-sessions.title`,\n path: `${this.entityService.createPath(SECURITY_MODULE, DEVICE_SESSIONS_ENTITY)}?view=${TENANT_SESSIONS_VIEW}`,\n icon: 'fa-light fa-laptop-mobile',\n priority: 22,\n policy: {\n features: [AXMTenantManagementFeatureKeys.TenantConsole, SECURITY_MODULE],\n permissions: [MANAGE_SESSIONS],\n },\n },\n ]);\n }\n}\n\n//#endregion\n","import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-tenant-management-client/contracts';\n\nconst I18N = `@${RootConfig.config.i18n}:tenants.settings.tenant`;\n\nexport class AXMTenantSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n context\n .addGroup(\n 'tenant',\n `${I18N}.group.nav-title`,\n `${I18N}.group.description`,\n RootConfig.module.icon,\n `${I18N}.group.title`,\n 25,\n )\n .addSection('general', `${I18N}.sections.general.title`, `${I18N}.sections.general.description`)\n // TODO: Add tenant-specific settings here when needed\n .endSection()\n .endGroup();\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, createEntitySearchCommand } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nexport class AXMTenantSearchCommandProvider extends AXPSearchCommandProvider {\n commands = [\n createEntitySearchCommand({\n id: 'create-tenant',\n entityKey: `${RootConfig.module.name}.${RootConfig.entities.tenant.name}`,\n entityInfo: { name: RootConfig.entities.tenant.name, module: RootConfig.module.name, title: RootConfig.entities.tenant.title },\n titleKey: `@${RootConfig.config.i18n}:tenants.actions.create-tenant.title`,\n descriptionKey: `@${RootConfig.config.i18n}:tenants.actions.create-tenant.description`,\n icon: RootConfig.entities.tenant.icon,\n }),\n ];\n}\n\n//#endregion\n\n","import { Injectable } from '@angular/core';\nimport type { AXPContextDefinition, AXPContextDefinitionProvider } from '@acorex-platform/framework-client/core';\nimport { AXM_TENANT_CONTEXT_DEFINITIONS } from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#region ---- Tenant context definitions ----\n\n@Injectable()\nexport class AXMTenantManagementContextDefinitionProvider implements AXPContextDefinitionProvider {\n async items(): Promise<AXPContextDefinition[]> {\n return AXM_TENANT_CONTEXT_DEFINITIONS;\n }\n}\n\n//#endregion\n","import {\n AXP_ENTITY_STORAGE_MIDDLEWARE,\n configureEntityListColumnsSettingsMigrateDrop,\n configureEntityListColumnsSettingsVersion,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_CONTEXT_DEFINITION_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport {\n AXM_TENANT_APPROVE_REQUEST_COMMAND,\n AXM_TENANT_REJECT_REQUEST_COMMAND,\n} from '@acorex-platform/module-tenant-management-client/contracts';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { AXMTenantStatusProvider } from './features/tenant-status.provider';\nimport { AXMTenantUserStatusProvider } from './features/tenant-user-status.provider';\nimport {\n TenantUserAdminScopeInterceptor,\n tenantUserAccountHolderMiddleware,\n tenantUserAdminScopeMiddleware,\n} from './middlewares';\nimport { AXMTenantManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXMTenantManagementPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMTenantManagementModuleMenuProvider } from './menu.provider';\n\nimport { AXMTenantSettingProvider } from './setting.provider';\nimport { AXMTenantSearchCommandProvider } from './search-command.provider';\nimport { AXMTenantManagementContextDefinitionProvider } from './context-definition.provider';\n\n//#region ----- Boot configure (once) -----\n\n/**\n * Stale AppAccess list prefs pinned `tenantUser.userId` / bare `userDisplayName`\n * text columns; list now uses `userId` lookup (display via userDisplayName expose).\n */\nconfigureEntityListColumnsSettingsMigrateDrop([\n 'tenantUser.userId',\n 'tenantUserId',\n 'userDisplayName',\n]);\nconfigureEntityListColumnsSettingsVersion(5);\n\n//#endregion\n\n// Entity Modules\n\n@NgModule({\n imports: [\n // Entity Modules\n ],\n exports: [],\n declarations: [],\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMTenantStatusProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMTenantUserStatusProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: tenantUserAccountHolderMiddleware,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: tenantUserAdminScopeMiddleware,\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: TenantUserAdminScopeInterceptor,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXMTenantManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMTenantManagementPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMTenantManagementModuleMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMTenantSettingProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMTenantSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_CONTEXT_DEFINITION_PROVIDER,\n useClass: AXMTenantManagementContextDefinitionProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: AXM_TENANT_APPROVE_REQUEST_COMMAND,\n command: () =>\n import('./commands/approve-tenant-request.command').then((c) => c.AXPApproveTenantRequestCommand),\n },\n {\n key: AXM_TENANT_REJECT_REQUEST_COMMAND,\n command: () =>\n import('./commands/reject-tenant-request.command').then((c) => c.AXPRejectTenantRequestCommand),\n },\n ]),\n ],\n})\nexport class AXMTenantManagementModule {\n constructor() { }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { AXMTenantExtraFieldDefinition } from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#region ----- Tenant extra field providers -----\n\n/**\n * Multi provider: each demo product (e.g. Safetyminder) supplies field defs\n * that merge into Tenant.extra on the public request form / PC layout.\n */\nexport const AXP_TENANT_EXTRA_FIELD_DEFINITIONS = new InjectionToken<\n AXMTenantExtraFieldDefinition[]\n>('AXP_TENANT_EXTRA_FIELD_DEFINITIONS');\n\n//#endregion\n","import { AXPWidgetsList, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport type { AXMTenantExtraFieldDefinition } from '@acorex-platform/module-tenant-management-client/contracts';\n\n//#region ----- Build layout for Tenant.extra -----\n\n/** Flattens multi-provider arrays into one field list (later providers override by name). */\nexport function mergeTenantExtraFieldDefinitions(\n batches: Array<AXMTenantExtraFieldDefinition[] | null | undefined>,\n): AXMTenantExtraFieldDefinition[] {\n const byName = new Map<string, AXMTenantExtraFieldDefinition>();\n for (const batch of batches) {\n if (!Array.isArray(batch)) {\n continue;\n }\n for (const field of batch) {\n const name = String(field?.name ?? '').trim();\n if (!name) {\n continue;\n }\n byName.set(name, field);\n }\n }\n return [...byName.values()];\n}\n\n/**\n * Builds an `axp-layout-renderer` tree bound under context path `extra.*`.\n */\nexport function buildTenantExtraFieldsLayout(\n fields: AXMTenantExtraFieldDefinition[],\n): AXPWidgetNode | null {\n if (!fields.length) {\n return null;\n }\n\n return {\n type: AXPWidgetsList.Layouts.FlexLayout,\n mode: 'edit',\n options: {\n flexDirection: 'column',\n gap: '16px',\n },\n children: fields.map((field) => buildFieldNode(field)),\n };\n}\n\nfunction buildFieldNode(field: AXMTenantExtraFieldDefinition): AXPWidgetNode {\n const editorType = (field.editorType ?? AXPWidgetsList.Editors.TextBox).trim();\n const path = `extra.${field.name}`;\n const validations = field.required ? [{ rule: 'required' }] : [];\n\n const editorOptions: Record<string, unknown> = {\n placeholder: field.placeholder,\n validations,\n };\n if (editorType === AXPWidgetsList.Editors.SelectBox && Array.isArray(field.selectOptions)) {\n editorOptions['dataSource'] = field.selectOptions;\n editorOptions['valueField'] = 'id';\n editorOptions['textField'] = 'title';\n }\n\n return {\n type: AXPWidgetsList.Layouts.FormField,\n mode: 'edit',\n options: {\n label: field.title,\n showLabel: true,\n },\n children: [\n {\n type: editorType,\n mode: 'edit',\n path,\n name: field.name,\n options: editorOptions,\n },\n ],\n };\n}\n\n/**\n * Meta-data-editor `listMeta` shape (interface is a JSON widget tree string).\n */\nexport function toTenantExtraMetaDataList(\n fields: AXMTenantExtraFieldDefinition[],\n): Array<{ name: string; title: string; interface: string }> {\n return fields.map((field) => {\n const editorType = (field.editorType ?? AXPWidgetsList.Editors.TextBox).trim();\n const editorNode: AXPWidgetNode = {\n type: editorType,\n mode: 'edit',\n path: field.name,\n name: field.name,\n options: {\n placeholder: field.placeholder,\n ...(editorType === AXPWidgetsList.Editors.SelectBox && Array.isArray(field.selectOptions)\n ? {\n dataSource: field.selectOptions,\n valueField: 'id',\n textField: 'title',\n }\n : {}),\n },\n };\n return {\n name: field.name,\n title: field.title,\n interface: JSON.stringify({\n children: [{ children: [editorNode] }],\n }),\n };\n });\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -6,6 +6,9 @@
6
6
  "root": {
7
7
  "title": "Tenant Management",
8
8
  "description": "Manage tenants and their settings"
9
+ },
10
+ "tenant-sessions": {
11
+ "title": "Sessions"
9
12
  }
10
13
  }
11
14
  },
@@ -13,6 +16,18 @@
13
16
  "tenant-management": {
14
17
  "title": "Tenant Management",
15
18
  "description": "Enable tenant management functionality"
19
+ },
20
+ "manage-platform-tenants": {
21
+ "title": "Manage Platform Tenants",
22
+ "description": "Platform Console directory for all tenants"
23
+ },
24
+ "tenant-console": {
25
+ "title": "Tenant Console",
26
+ "description": "Tenant Management administration menus for the current tenant"
27
+ },
28
+ "invite-multi-application": {
29
+ "title": "Invite Multi-Application",
30
+ "description": "Allow tenant-level invitations that grant access to one or more applications"
16
31
  }
17
32
  },
18
33
  "tenants": {
@@ -30,9 +45,29 @@
30
45
  "contact-info": "Contact Information",
31
46
  "location-info": "Location Information",
32
47
  "domain-info": "Domain Information",
33
- "administrative": "Administrative"
48
+ "administrative": "Administrative",
49
+ "extra": "Organisation Details"
34
50
  },
35
51
  "fields": {
52
+ "extra": {
53
+ "title": "Organisation Details",
54
+ "description": "Product-specific organisation attributes"
55
+ },
56
+ "extra-fields": {
57
+ "first-name": "First Name",
58
+ "last-name": "Last Name",
59
+ "mobile-phone": "Mobile Phone Number",
60
+ "suburb": "Suburb",
61
+ "state": "State",
62
+ "country": "Country",
63
+ "country-options": {
64
+ "australia": "Australia",
65
+ "new-zealand": "New Zealand",
66
+ "other": "Other"
67
+ },
68
+ "referral-code": "Referral Code",
69
+ "terms-accepted": "Terms Accepted"
70
+ },
36
71
  "name": {
37
72
  "title": "Name",
38
73
  "description": "Unique identifier for the tenant",
@@ -73,6 +108,16 @@
73
108
  "description": "Support email address",
74
109
  "placeholder": "Enter support email address"
75
110
  },
111
+ "street1": {
112
+ "title": "Street Address",
113
+ "description": "Primary street address",
114
+ "placeholder": "Enter street address"
115
+ },
116
+ "postal-code": {
117
+ "title": "Post Code",
118
+ "description": "Postal or ZIP code",
119
+ "placeholder": "Enter post code"
120
+ },
76
121
  "country": {
77
122
  "title": "Country",
78
123
  "description": "Country location",
@@ -147,14 +192,17 @@
147
192
  }
148
193
  },
149
194
  "tenant-user-app-access": {
150
- "title": "Tenant User App Access",
151
- "plural": "Tenant User App Accesses",
195
+ "title": "User App Access",
196
+ "plural": "User App Accesses",
152
197
  "groups": {
153
198
  "basic-info": "Basic Information"
154
199
  },
155
200
  "fields": {
156
201
  "tenant-user": {
157
- "title": "Tenant User"
202
+ "title": "User"
203
+ },
204
+ "user": {
205
+ "title": "User"
158
206
  },
159
207
  "tenant": {
160
208
  "title": "Tenant"
@@ -171,8 +219,8 @@
171
219
  }
172
220
  },
173
221
  "tenant-user": {
174
- "title": "Tenant User",
175
- "plural": "Tenant Users",
222
+ "title": "User",
223
+ "plural": "Users",
176
224
  "groups": {
177
225
  "basic-info": "Basic Information",
178
226
  "membership-details": "Membership Details"
@@ -261,7 +309,10 @@
261
309
  "title": "Subscriptions"
262
310
  },
263
311
  "tenant-users": {
264
- "title": "Tenant Users"
312
+ "title": "Users"
313
+ },
314
+ "tenant-user-app-access": {
315
+ "title": "Application Access"
265
316
  }
266
317
  }
267
318
  },
@@ -293,12 +344,40 @@
293
344
  "description": "Create a new tenant in the system"
294
345
  },
295
346
  "create-tenant-user": {
296
- "title": "Create Tenant User",
347
+ "title": "Create User",
297
348
  "description": "Create a new user and assign them to the tenant"
298
349
  },
299
350
  "transfer-ownership": {
300
351
  "title": "Transfer Ownership",
301
352
  "description": "Transfer account holder ownership to another user"
353
+ },
354
+ "approve-request": {
355
+ "title": "Approve Request",
356
+ "confirm-title": "Approve Tenant Request",
357
+ "confirm-message": "Approve the tenant request for {{tenant}}? Subscriptions and Tenant Management access will be provisioned.",
358
+ "success": {
359
+ "title": "Approved",
360
+ "description": "The tenant request was approved."
361
+ },
362
+ "error": {
363
+ "title": "Approve Failed",
364
+ "description": "Failed to approve the tenant request.",
365
+ "not-pending": "This tenant request is no longer pending."
366
+ }
367
+ },
368
+ "reject-request": {
369
+ "title": "Reject Request",
370
+ "confirm-title": "Reject Tenant Request",
371
+ "confirm-message": "Reject the tenant request for {{tenant}}?",
372
+ "success": {
373
+ "title": "Rejected",
374
+ "description": "The tenant request was rejected."
375
+ },
376
+ "error": {
377
+ "title": "Reject Failed",
378
+ "description": "Failed to reject the tenant request.",
379
+ "not-pending": "This tenant request is no longer pending."
380
+ }
302
381
  }
303
382
  },
304
383
  "messages": {
@@ -310,13 +389,15 @@
310
389
  "active": "Active",
311
390
  "inactive": "Inactive",
312
391
  "suspended": "Suspended",
313
- "pending": "Pending"
392
+ "pending": "Pending",
393
+ "rejected": "Rejected"
314
394
  },
315
395
  "transitions": {
316
396
  "activate": "Activate",
317
397
  "deactivate": "Deactivate",
318
398
  "suspend": "Suspend",
319
- "resume": "Resume"
399
+ "resume": "Resume",
400
+ "reject": "Reject"
320
401
  },
321
402
  "settings": {
322
403
  "tenant": {
@@ -6,6 +6,9 @@
6
6
  "root": {
7
7
  "title": "Tenant Management",
8
8
  "description": "Manage tenants and their settings"
9
+ },
10
+ "tenant-sessions": {
11
+ "title": "Sessions"
9
12
  }
10
13
  }
11
14
  },
@@ -13,6 +16,18 @@
13
16
  "tenant-management": {
14
17
  "title": "Tenant Management",
15
18
  "description": "Enable tenant management functionality"
19
+ },
20
+ "manage-platform-tenants": {
21
+ "title": "Manage Platform Tenants",
22
+ "description": "Platform Console directory for all tenants"
23
+ },
24
+ "tenant-console": {
25
+ "title": "Tenant Console",
26
+ "description": "Tenant Management administration menus for the current tenant"
27
+ },
28
+ "invite-multi-application": {
29
+ "title": "Invite Multi-Application",
30
+ "description": "Allow tenant-level invitations that grant access to one or more applications"
16
31
  }
17
32
  },
18
33
  "tenants": {
@@ -30,9 +45,29 @@
30
45
  "contact-info": "Contact Information",
31
46
  "location-info": "Location Information",
32
47
  "domain-info": "Domain Information",
33
- "administrative": "Administrative"
48
+ "administrative": "Administrative",
49
+ "extra": "Organization Details"
34
50
  },
35
51
  "fields": {
52
+ "extra": {
53
+ "title": "Organization Details",
54
+ "description": "Product-specific organization attributes"
55
+ },
56
+ "extra-fields": {
57
+ "first-name": "First Name",
58
+ "last-name": "Last Name",
59
+ "mobile-phone": "Mobile Phone Number",
60
+ "suburb": "Suburb",
61
+ "state": "State",
62
+ "country": "Country",
63
+ "country-options": {
64
+ "australia": "Australia",
65
+ "new-zealand": "New Zealand",
66
+ "other": "Other"
67
+ },
68
+ "referral-code": "Referral Code",
69
+ "terms-accepted": "Terms Accepted"
70
+ },
36
71
  "name": {
37
72
  "title": "Name",
38
73
  "description": "Unique identifier for the tenant",
@@ -73,6 +108,16 @@
73
108
  "description": "Support email address",
74
109
  "placeholder": "Enter support email address"
75
110
  },
111
+ "street1": {
112
+ "title": "Street Address",
113
+ "description": "Primary street address",
114
+ "placeholder": "Enter street address"
115
+ },
116
+ "postal-code": {
117
+ "title": "Post Code",
118
+ "description": "Postal or ZIP code",
119
+ "placeholder": "Enter post code"
120
+ },
76
121
  "country": {
77
122
  "title": "Country",
78
123
  "description": "Country location",
@@ -147,14 +192,17 @@
147
192
  }
148
193
  },
149
194
  "tenant-user-app-access": {
150
- "title": "Tenant User App Access",
151
- "plural": "Tenant User App Accesses",
195
+ "title": "User App Access",
196
+ "plural": "User App Accesses",
152
197
  "groups": {
153
198
  "basic-info": "Basic Information"
154
199
  },
155
200
  "fields": {
156
201
  "tenant-user": {
157
- "title": "Tenant User"
202
+ "title": "User"
203
+ },
204
+ "user": {
205
+ "title": "User"
158
206
  },
159
207
  "tenant": {
160
208
  "title": "Tenant"
@@ -171,8 +219,8 @@
171
219
  }
172
220
  },
173
221
  "tenant-user": {
174
- "title": "Tenant User",
175
- "plural": "Tenant Users",
222
+ "title": "User",
223
+ "plural": "Users",
176
224
  "groups": {
177
225
  "basic-info": "Basic Information",
178
226
  "membership-details": "Membership Details"
@@ -261,7 +309,10 @@
261
309
  "title": "Subscriptions"
262
310
  },
263
311
  "tenant-users": {
264
- "title": "Tenant Users"
312
+ "title": "Users"
313
+ },
314
+ "tenant-user-app-access": {
315
+ "title": "Application Access"
265
316
  }
266
317
  }
267
318
  },
@@ -293,12 +344,40 @@
293
344
  "description": "Create a new tenant in the system"
294
345
  },
295
346
  "create-tenant-user": {
296
- "title": "Create Tenant User",
347
+ "title": "Create User",
297
348
  "description": "Create a new user and assign them to the tenant"
298
349
  },
299
350
  "transfer-ownership": {
300
351
  "title": "Transfer Ownership",
301
352
  "description": "Transfer account holder ownership to another user"
353
+ },
354
+ "approve-request": {
355
+ "title": "Approve Request",
356
+ "confirm-title": "Approve Tenant Request",
357
+ "confirm-message": "Approve the tenant request for {{tenant}}? Subscriptions and Tenant Management access will be provisioned.",
358
+ "success": {
359
+ "title": "Approved",
360
+ "description": "The tenant request was approved."
361
+ },
362
+ "error": {
363
+ "title": "Approve Failed",
364
+ "description": "Failed to approve the tenant request.",
365
+ "not-pending": "This tenant request is no longer pending."
366
+ }
367
+ },
368
+ "reject-request": {
369
+ "title": "Reject Request",
370
+ "confirm-title": "Reject Tenant Request",
371
+ "confirm-message": "Reject the tenant request for {{tenant}}?",
372
+ "success": {
373
+ "title": "Rejected",
374
+ "description": "The tenant request was rejected."
375
+ },
376
+ "error": {
377
+ "title": "Reject Failed",
378
+ "description": "Failed to reject the tenant request.",
379
+ "not-pending": "This tenant request is no longer pending."
380
+ }
302
381
  }
303
382
  },
304
383
  "messages": {
@@ -310,13 +389,15 @@
310
389
  "active": "Active",
311
390
  "inactive": "Inactive",
312
391
  "suspended": "Suspended",
313
- "pending": "Pending"
392
+ "pending": "Pending",
393
+ "rejected": "Rejected"
314
394
  },
315
395
  "transitions": {
316
396
  "activate": "Activate",
317
397
  "deactivate": "Deactivate",
318
398
  "suspend": "Suspend",
319
- "resume": "Resume"
399
+ "resume": "Resume",
400
+ "reject": "Reject"
320
401
  },
321
402
  "settings": {
322
403
  "tenant": {