@infuro/cms-core 1.0.69 → 1.0.70

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 (37) hide show
  1. package/dist/admin.cjs +2831 -2680
  2. package/dist/admin.js +1590 -1439
  3. package/dist/api.cjs +41 -41
  4. package/dist/api.js +8 -8
  5. package/dist/auth.cjs +51 -51
  6. package/dist/auth.js +3 -3
  7. package/dist/{chunk-RBKVMHBH.js → chunk-3LF4RYAJ.js} +353 -23
  8. package/dist/{chunk-DBBYLSQP.js → chunk-7NQMGB2S.js} +136 -25
  9. package/dist/{chunk-DWNQTFJ5.js → chunk-CJY2HUJC.js} +19 -19
  10. package/dist/{chunk-SWSTGV4F.cjs → chunk-CKTRA3Q2.cjs} +9 -9
  11. package/dist/{chunk-53AMBXMM.js → chunk-ECUGNV2I.js} +1 -57
  12. package/dist/{chunk-QXAQ3V7R.cjs → chunk-FNLF6G2N.cjs} +7 -7
  13. package/dist/{chunk-T47VP2ZT.js → chunk-HZZTDM5J.js} +2 -2
  14. package/dist/{chunk-3XCTGADT.js → chunk-K6JT7BKY.js} +58 -1
  15. package/dist/{chunk-M5QDJOUP.cjs → chunk-K742UE6S.cjs} +1 -0
  16. package/dist/{chunk-6MM5OMRL.cjs → chunk-KB7EBYPR.cjs} +0 -58
  17. package/dist/{chunk-OXFC3DAM.cjs → chunk-KJB5LBFQ.cjs} +59 -0
  18. package/dist/{chunk-LXWF6T7F.cjs → chunk-LCZZ3S4I.cjs} +19 -19
  19. package/dist/{chunk-HGR4IA7I.cjs → chunk-NIBEGDD4.cjs} +15 -15
  20. package/dist/{chunk-D4LR3S77.js → chunk-NQF6H656.js} +1 -1
  21. package/dist/{chunk-QL44NCZC.cjs → chunk-OP624LWU.cjs} +222 -111
  22. package/dist/{chunk-MJDNS324.js → chunk-SCE2GIKH.js} +2 -2
  23. package/dist/{chunk-747MJJCZ.cjs → chunk-TTOEY7AH.cjs} +404 -74
  24. package/dist/{chunk-WHMIWJL7.js → chunk-W2ZTGLUH.js} +1 -0
  25. package/dist/{emit-order-notification-trigger-X36V4DOH.cjs → emit-order-notification-trigger-I4HQSTEN.cjs} +4 -4
  26. package/dist/{emit-order-notification-trigger-XKN2TWVF.js → emit-order-notification-trigger-TBXAZAPS.js} +2 -2
  27. package/dist/index.cjs +330 -330
  28. package/dist/index.js +13 -13
  29. package/dist/{order-assignees-handlers-JEJ5IDID.cjs → order-assignees-handlers-E6PQZP4H.cjs} +22 -3
  30. package/dist/{order-assignees-handlers-F7WOZHOG.js → order-assignees-handlers-YCT3Q3KC.js} +22 -3
  31. package/dist/{order-completion-otp-handlers-LNAZTMTS.cjs → order-completion-otp-handlers-2ZKRK5SN.cjs} +10 -10
  32. package/dist/{order-completion-otp-handlers-FIW7PZ6W.js → order-completion-otp-handlers-KHLZQQJX.js} +4 -4
  33. package/dist/{order-notification-dispatcher-GG5C4LKZ.cjs → order-notification-dispatcher-37KDVHBM.cjs} +8 -8
  34. package/dist/{order-notification-dispatcher-FS54ANAV.js → order-notification-dispatcher-Z3MXNF4U.js} +3 -3
  35. package/dist/{rbac-debug-db-IRKT6G62.js → rbac-debug-db-JK3U5UZK.js} +1 -1
  36. package/dist/{rbac-debug-db-2ZI3XKA4.cjs → rbac-debug-db-S3D6N6HN.cjs} +2 -2
  37. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- export { emitOrderNotificationTrigger, fireOrderNotificationTrigger } from './chunk-T47VP2ZT.js';
2
- import { checkMultiVendorEnabled, loadUserVendorContext, getPublicSettingsGroup, BlogGeneratorService } from './chunk-DBBYLSQP.js';
3
- export { Address, Attendee, Attribute, BLOG_GENERATOR_AGENT_NAME, BLOG_GENERATOR_DEFAULT_SYSTEM_INSTRUCTION, BLOG_GENERATOR_DEFAULT_VALIDATION_RULES, BLOG_GENERATOR_LLM_AGENT_SLUG, BLOG_GENERATOR_MARKDOWN_ARTICLE_SEPARATOR, BLOG_METADATA_ENRICHER_AGENT_NAME, BLOG_METADATA_ENRICHER_DEFAULT_SYSTEM_INSTRUCTION, BLOG_METADATA_ENRICHER_DEFAULT_VALIDATION_RULES, BLOG_METADATA_ENRICHER_LLM_AGENT_SLUG, Blog, BlogGeneratorService, Brand, CMS_ENTITY_MAP, Cart, CartItem, Category, ChatConversation, ChatMessage, Collection, Combo, ComboItem, Comment, Config, Contact, Currency, CurrencyExchange, Customer, Customer_Contacts, Discount, DiscountRules, Event, EventProduct, Form, FormField, FormSubmission, JobSchedule, JobScheduleRun, KnowledgeBaseChunk, KnowledgeBaseDocument, LlmAgent, LlmAgentKnowledgeDocument, Media, MessageTemplate, Order, OrderAddresses, OrderAssignee, OrderDiscounts, OrderItem, OrderNotificationBinding, OrderNotificationTrigger, OtpChallenge, Page, PasswordResetToken, Payment, Permission, Product, ProductAttribute, ProductCategory, ProductConfig, ProductVariant, RefundPolicy, RefundRequest, RssArticle, RssFeed, Seo, Tag, Tax, User, UserDeviceToken, UserGroup, Vendor, VendorCustomer, VendorRole, VendorRolePermission, VendorUser, VendorUserProfile, Wishlist, WishlistItem, ZIP_MIME_TYPES, applyApprovalStatusSideEffects, applyEventApprovalStatusSideEffects, applyRotatingVendorInvite, applyVendorCustomersContactFilter, applyVendorEventCreateApproval, applyVendorProductCreateApproval, assertCaptchaOk, assertContactAllowedForVendorOrder, assertEventApprovalUpdate, assertProductApprovalUpdate, autoExpireOrderIfPaymentTimeExceeded, buildBlogMetadataUserPrompt, buildCronFromSchedule, buildRssUserPromptFromFeeds, buildUserInviteLink, buildVendorInviteLink, calculateOrderRefundPreview, calculateRefundFromPolicy, checkAndIncrementDiscountUsage, checkEventsEnabled, checkMultiVendorEnabled, completeUserInviteAccept, consumeAppliedDiscountUsages, contactIsVendorCustomer, countDiscountOrdersForContact, createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCmsApp, createCmsAppWithMessaging, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createEventOrderMessageTemplateHandlers, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createMessageTemplateRowLoader, createSetPasswordHandler, createSettingsApiHandlers, createSocialMediaHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, daysBeforeEventStart, decrementDiscountUsage, describeEventTierPolicy, ensureMessagingPluginsOnCms, ensureScheduleQueueWorker, ensureVendorCustomerForOrderContact, ensureVendorCustomersForOrder, findActiveRefundPolicyForVendor, findUserByInviteToken, findVendorByInviteToken, formatTierRange, getPublicSettingsGroup, getRequireEventApproval, getRequireProductApproval, getRssArticleSummaryFromItem, getVendorCatalogCreateFlags, hydrateVendorSessionUser, invalidateEventsCache, invalidateMultiVendorCache, invalidateRequireEventApprovalCache, invalidateRequireProductApprovalCache, invalidateVendorCatalogCreateFlagsCache, isCustomerTypeContact, isMaxPerUserUsageReached, isMaxTotalUsageReached, isZipMedia, llmAgentToChatAgentOptions, loadSettingsGroupFromDb, loadUserVendorContext, mergeGuardrailsIntoSystemPrompt, messagingPlugins, metaFetchUserManagedPages, metaPostPageFeed, metaPostPagePhoto, metaResolvePageAccessToken, newUserInviteToken, normalizeRefundTiers, overlayCmsPlugins, parseBlogGeneratorAgentContent, parseBlogGeneratorModelOutput, parseBlogMetadataEnrichmentJson, parseLlmAgentValidationRules, pgBossScheduleNameForId, queueErpCreateContactIfEnabled, queueJobScheduleNow, queuePlugin, recordDiscountUsage, registerJobRunnerWorker, registerMessagingQueueProcessors, relativePathFromMediaParentId, resolveBlogCategoryIdByName, resolveSettingsEncryptionKey, resolveVendorIdForContactCheck, sanitizeMediaFolderPath, sanitizeStorageSegment, sendVendorOnboardEmails, simpleDecrypt, simpleEncrypt, syncJobScheduleToPgBoss, validateRefundTiers, validateScheduleInput, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules, whatsappPlugin, wrapGetCmsWithMessaging } from './chunk-DBBYLSQP.js';
1
+ export { emitOrderNotificationTrigger, fireOrderNotificationTrigger } from './chunk-HZZTDM5J.js';
2
+ import { checkMultiVendorEnabled, loadUserVendorContext, getPublicSettingsGroup, BlogGeneratorService } from './chunk-7NQMGB2S.js';
3
+ export { Address, Attendee, Attribute, BLOG_GENERATOR_AGENT_NAME, BLOG_GENERATOR_DEFAULT_SYSTEM_INSTRUCTION, BLOG_GENERATOR_DEFAULT_VALIDATION_RULES, BLOG_GENERATOR_LLM_AGENT_SLUG, BLOG_GENERATOR_MARKDOWN_ARTICLE_SEPARATOR, BLOG_METADATA_ENRICHER_AGENT_NAME, BLOG_METADATA_ENRICHER_DEFAULT_SYSTEM_INSTRUCTION, BLOG_METADATA_ENRICHER_DEFAULT_VALIDATION_RULES, BLOG_METADATA_ENRICHER_LLM_AGENT_SLUG, Blog, BlogGeneratorService, Brand, CMS_ENTITY_MAP, Cart, CartItem, Category, ChatConversation, ChatMessage, Collection, Combo, ComboItem, Comment, Config, Contact, Currency, CurrencyExchange, Customer, Customer_Contacts, Discount, DiscountRules, Event, EventProduct, Form, FormField, FormSubmission, JobSchedule, JobScheduleRun, KnowledgeBaseChunk, KnowledgeBaseDocument, LlmAgent, LlmAgentKnowledgeDocument, Media, MessageTemplate, Order, OrderAddresses, OrderAssignee, OrderDiscounts, OrderItem, OrderNotificationBinding, OrderNotificationTrigger, OtpChallenge, Page, PasswordResetToken, Payment, Permission, Product, ProductAttribute, ProductCategory, ProductConfig, ProductVariant, RefundPolicy, RefundRequest, RssArticle, RssFeed, Seo, Tag, Tax, User, UserDeviceToken, UserGroup, Vendor, VendorCustomer, VendorRole, VendorRolePermission, VendorUser, VendorUserProfile, Wishlist, WishlistItem, ZIP_MIME_TYPES, applyApprovalStatusSideEffects, applyEventApprovalStatusSideEffects, applyRotatingVendorInvite, applyVendorCustomersContactFilter, applyVendorEventCreateApproval, applyVendorProductCreateApproval, assertCaptchaOk, assertContactAllowedForVendorOrder, assertEventApprovalUpdate, assertProductApprovalUpdate, autoExpireOrderIfPaymentTimeExceeded, buildBlogMetadataUserPrompt, buildCronFromSchedule, buildRssUserPromptFromFeeds, buildUserInviteLink, buildVendorInviteLink, calculateOrderRefundPreview, calculateRefundFromPolicy, checkAndIncrementDiscountUsage, checkEventsEnabled, checkMultiVendorEnabled, completeUserInviteAccept, consumeAppliedDiscountUsages, contactIsVendorCustomer, countDiscountOrdersForContact, createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCmsApp, createCmsAppWithMessaging, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createEventOrderMessageTemplateHandlers, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createMessageTemplateRowLoader, createSetPasswordHandler, createSettingsApiHandlers, createSocialMediaHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, daysBeforeEventStart, decrementDiscountUsage, describeEventTierPolicy, ensureMessagingPluginsOnCms, ensureScheduleQueueWorker, ensureVendorCustomerForOrderContact, ensureVendorCustomersForOrder, findActiveRefundPolicyForVendor, findUserByInviteToken, findVendorByInviteToken, formatTierRange, getPublicSettingsGroup, getRequireEventApproval, getRequireProductApproval, getRssArticleSummaryFromItem, getVendorCatalogCreateFlags, hydrateVendorSessionUser, invalidateEventsCache, invalidateMultiVendorCache, invalidateRequireEventApprovalCache, invalidateRequireProductApprovalCache, invalidateVendorCatalogCreateFlagsCache, isCustomerTypeContact, isMaxPerUserUsageReached, isMaxTotalUsageReached, isZipMedia, llmAgentToChatAgentOptions, loadSettingsGroupFromDb, loadUserVendorContext, mergeGuardrailsIntoSystemPrompt, messagingPlugins, metaFetchUserManagedPages, metaPostPageFeed, metaPostPagePhoto, metaResolvePageAccessToken, newUserInviteToken, normalizeRefundTiers, overlayCmsPlugins, parseBlogGeneratorAgentContent, parseBlogGeneratorModelOutput, parseBlogMetadataEnrichmentJson, parseLlmAgentValidationRules, pgBossScheduleNameForId, queueErpCreateContactIfEnabled, queueJobScheduleNow, queuePlugin, recordDiscountUsage, registerJobRunnerWorker, registerMessagingQueueProcessors, relativePathFromMediaParentId, resolveBlogCategoryIdByName, resolveSettingsEncryptionKey, resolveVendorIdForContactCheck, sanitizeMediaFolderPath, sanitizeStorageSegment, sendVendorOnboardEmails, simpleDecrypt, simpleEncrypt, syncJobScheduleToPgBoss, validateRefundTiers, validateScheduleInput, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules, whatsappPlugin, wrapGetCmsWithMessaging } from './chunk-7NQMGB2S.js';
4
+ import { parseEmailRecipientsFromConfig } from './chunk-3LF4RYAJ.js';
5
+ export { buildEventOrderTemplateVariables, emailPlugin, initWhatsappTriggerDispatcher, joinRecipientsForSend, parseEmailRecipientsFromConfig, resendOrderNotification, serializeEmailRecipients } from './chunk-3LF4RYAJ.js';
6
+ export { countRecentOtpSends, createOtpChallenge, generateNumericOtp, hashOtpCode, normalizePhoneE164, verifyAndConsumeOtpChallenge, verifyOtpCodeHash } from './chunk-ECUGNV2I.js';
7
+ export { queueSms, queueWhatsApp, registerSmsQueueProcessor, registerWhatsAppQueueProcessor } from './chunk-K6JT7BKY.js';
8
+ export { KNOWN_NOTIFICATION_TRIGGERS, notificationTriggerEmitter } from './chunk-W2ZTGLUH.js';
9
+ import './chunk-ECNYZG6T.js';
4
10
  import './chunk-ZMIMKNSQ.js';
5
- export { countRecentOtpSends, createOtpChallenge, generateNumericOtp, hashOtpCode, normalizePhoneE164, queueSms, registerSmsQueueProcessor, verifyAndConsumeOtpChallenge, verifyOtpCodeHash } from './chunk-53AMBXMM.js';
6
11
  export { EVENT_ORDER_MESSAGE_TEMPLATE_DEFAULTS, EVENT_ORDER_TEMPLATE_KEY, EVENT_ORDER_TEMPLATE_VARIABLES, resolveEventOrderTemplate } from './chunk-5NVGWJSY.js';
7
12
  import { PgBossService } from './chunk-2BNVRFUQ.js';
8
13
  export { JOB_RUNNER_QUEUE, PgBossService } from './chunk-2BNVRFUQ.js';
9
14
  export { deductInventoryForConfirmedOrder, mergeInventoryLines, orderInventorySnapshotFromRow, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, restoreInventoryForCancelledOrder, validateInventoryForConfirmedOrderLines, validateInventoryForOrderBecomingConfirmed } from './chunk-JYRFSFXH.js';
10
- import { parseEmailRecipientsFromConfig } from './chunk-RBKVMHBH.js';
11
- export { buildEventOrderTemplateVariables, emailPlugin, initWhatsappTriggerDispatcher, joinRecipientsForSend, parseEmailRecipientsFromConfig, resendOrderNotification, serializeEmailRecipients } from './chunk-RBKVMHBH.js';
12
- export { queueWhatsApp, registerWhatsAppQueueProcessor } from './chunk-3XCTGADT.js';
13
- export { KNOWN_NOTIFICATION_TRIGGERS, notificationTriggerEmitter } from './chunk-WHMIWJL7.js';
14
- import './chunk-ECNYZG6T.js';
15
15
  export { EmailService, emailTemplates, renderEmail, renderLayout } from './chunk-CFUSYGSA.js';
16
16
  import { queueOrderPlacedEmails } from './chunk-LJ5C4RBF.js';
17
17
  export { queueEmail, queueOrderPlacedEmails, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-LJ5C4RBF.js';
@@ -23,10 +23,10 @@ export { resolveInvoiceAssetUrl } from './chunk-5DSY3GQI.js';
23
23
  import { mergeEmailLayoutCompanyDetails } from './chunk-YDMHG6BA.js';
24
24
  export { getCompanyDetailsFromSettings, mergeEmailLayoutCompanyDetails } from './chunk-YDMHG6BA.js';
25
25
  import './chunk-MGT4DJ2D.js';
26
- export { AUTH_PROVIDERS_SETTINGS_GROUP, buildNextAuthOptions, buildStorefrontNextAuthOptions, createCustomerUserFromGoogleOAuth, getNextAuthOptions, getStorefrontNextAuthOptions, googleOAuthRedirectUri, isGoogleAuthPubliclyEnabled, resolveGoogleAuthConfig, seedAdministratorPermissions } from './chunk-MJDNS324.js';
27
- export { OPEN_ENDPOINTS, PERMISSION_REQUIRED_ENDPOINTS, RBAC_ADMIN_ONLY_ENTITIES, canManageRoles, createAuthHelpers, createCmsAuthBundle, customerPhoneForEmail, customerPhoneForUser, ensureCustomerForUser, ensureCustomerRecord, getRequiredPermission, isOpenEndpoint, isPublicMethod, isSyntheticCustomerPhone, linkUnclaimedContactToUser, normalizeCustomerPhone, sessionHasEntityAccess } from './chunk-D4LR3S77.js';
28
- import { isSuperAdmin, isVendorGroupName } from './chunk-DWNQTFJ5.js';
29
- export { ADMIN_GROUP_NAME, SUPER_ADMIN_GROUP_ID, VENDOR_ADMIN_GROUP_ID, VENDOR_GROUP_NAME, VENDOR_OWNER_GROUP_NAME, VENDOR_SCOPED_STORE_ENTITIES, VENDOR_STORE_RBAC_ENTITIES, canManageVendorRoles, canManageVendorTeam, canOnboardVendors, explainSessionEntityAccess, getPermissionableEntityKeys, hasEntityPermission, isPlatformAdministrator, isRbacDebugEnabled, isSuperAdmin, isSuperAdminGroupName, isVendorAdmin, isVendorGroupName, isVendorOwner, isVendorPortalUser, isVendorStaff, logEntityAccessDecision, logRbac, permissionRowsToRecord, resolveVendorScopeFromSessionUser, summarizeEntityPerms, vendorPortalFlagsFromUser } from './chunk-DWNQTFJ5.js';
26
+ export { AUTH_PROVIDERS_SETTINGS_GROUP, buildNextAuthOptions, buildStorefrontNextAuthOptions, createCustomerUserFromGoogleOAuth, getNextAuthOptions, getStorefrontNextAuthOptions, googleOAuthRedirectUri, isGoogleAuthPubliclyEnabled, resolveGoogleAuthConfig, seedAdministratorPermissions } from './chunk-SCE2GIKH.js';
27
+ export { OPEN_ENDPOINTS, PERMISSION_REQUIRED_ENDPOINTS, RBAC_ADMIN_ONLY_ENTITIES, canManageRoles, createAuthHelpers, createCmsAuthBundle, customerPhoneForEmail, customerPhoneForUser, ensureCustomerForUser, ensureCustomerRecord, getRequiredPermission, isOpenEndpoint, isPublicMethod, isSyntheticCustomerPhone, linkUnclaimedContactToUser, normalizeCustomerPhone, sessionHasEntityAccess } from './chunk-NQF6H656.js';
28
+ import { isSuperAdmin, isVendorGroupName } from './chunk-CJY2HUJC.js';
29
+ export { ADMIN_GROUP_NAME, SUPER_ADMIN_GROUP_ID, VENDOR_ADMIN_GROUP_ID, VENDOR_GROUP_NAME, VENDOR_OWNER_GROUP_NAME, VENDOR_SCOPED_STORE_ENTITIES, VENDOR_STORE_RBAC_ENTITIES, canManageVendorRoles, canManageVendorTeam, canOnboardVendors, explainSessionEntityAccess, getPermissionableEntityKeys, hasEntityPermission, isPlatformAdministrator, isRbacDebugEnabled, isSuperAdmin, isSuperAdminGroupName, isVendorAdmin, isVendorGroupName, isVendorOwner, isVendorPortalUser, isVendorStaff, logEntityAccessDecision, logRbac, permissionRowsToRecord, resolveVendorScopeFromSessionUser, summarizeEntityPerms, vendorPortalFlagsFromUser } from './chunk-CJY2HUJC.js';
30
30
  export { activeUniqueValueExists, retireSoftDeletedUniqueValue } from './chunk-BK5XW5XH.js';
31
31
  export { createCmsMiddleware, defaultPublicApiMethods, isAuthDebugClientEnabled, isAuthDebugEnabled, logAuth, logAuthClient, nextAuthCookieDebugInfo, summarizeSessionUserForLog } from './chunk-SERRQ736.js';
32
32
  export { queueErpPaidOrderForOrderId } from './chunk-PRZOLCFW.js';
@@ -99,6 +99,7 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
99
99
  relations: [
100
100
  "user",
101
101
  "vendorRole",
102
+ "vendorRole.permissions",
102
103
  "vendor"
103
104
  ]
104
105
  });
@@ -108,13 +109,21 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
108
109
  const v = vu.vendor;
109
110
  if (u && u.id && !u.deleted && !u.blocked && u.inviteStatus === "active") {
110
111
  const roleName = r?.name || (r?.isOwnerRole ? "Owner" : "Vendor Staff");
112
+ const isOwner = Boolean(r?.isOwnerRole);
113
+ let hasOrderPermission = isOwner;
114
+ if (!isOwner && Array.isArray(r?.permissions)) {
115
+ const orderPerm = r.permissions.find((p) => String(p?.entity).toLowerCase() === "orders");
116
+ hasOrderPermission = Boolean(orderPerm?.canRead);
117
+ }
111
118
  assigneesMap.set(u.id, {
112
119
  id: u.id,
113
120
  name: u.name || u.email?.split("@")[0] || `User #${u.id}`,
114
121
  email: u.email || "",
115
122
  role: roleName,
116
123
  vendorId: targetVendorId,
117
- vendorName: v?.name || `Vendor #${targetVendorId}`
124
+ vendorName: v?.name || `Vendor #${targetVendorId}`,
125
+ hasOrderPermission,
126
+ permissionReason: hasOrderPermission ? void 0 : "No order access in role permissions"
118
127
  });
119
128
  }
120
129
  }
@@ -147,6 +156,7 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
147
156
  relations: [
148
157
  "user",
149
158
  "vendorRole",
159
+ "vendorRole.permissions",
150
160
  "vendor"
151
161
  ]
152
162
  });
@@ -157,13 +167,21 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
157
167
  if (u && u.id && !u.deleted && !u.blocked && u.inviteStatus === "active") {
158
168
  if (v && v.deleted) continue;
159
169
  const roleName = r?.name || (r?.isOwnerRole ? "Owner" : "Vendor Staff");
170
+ const isOwner = Boolean(r?.isOwnerRole);
171
+ let hasOrderPermission = isOwner;
172
+ if (!isOwner && Array.isArray(r?.permissions)) {
173
+ const orderPerm = r.permissions.find((p) => String(p?.entity).toLowerCase() === "orders");
174
+ hasOrderPermission = Boolean(orderPerm?.canRead);
175
+ }
160
176
  assigneesMap.set(u.id, {
161
177
  id: u.id,
162
178
  name: u.name || u.email?.split("@")[0] || `User #${u.id}`,
163
179
  email: u.email || "",
164
180
  role: roleName,
165
181
  vendorId: vu.vendorId,
166
- vendorName: v?.name || `Vendor #${vu.vendorId}`
182
+ vendorName: v?.name || `Vendor #${vu.vendorId}`,
183
+ hasOrderPermission,
184
+ permissionReason: hasOrderPermission ? void 0 : "No order access in role permissions"
167
185
  });
168
186
  }
169
187
  }
@@ -199,7 +217,8 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
199
217
  email: u.email || "",
200
218
  role: roleLabel,
201
219
  vendorId: null,
202
- vendorName: "Platform Staff"
220
+ vendorName: "Platform Staff",
221
+ hasOrderPermission: true
203
222
  });
204
223
  }
205
224
  }
@@ -97,6 +97,7 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
97
97
  relations: [
98
98
  "user",
99
99
  "vendorRole",
100
+ "vendorRole.permissions",
100
101
  "vendor"
101
102
  ]
102
103
  });
@@ -106,13 +107,21 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
106
107
  const v = vu.vendor;
107
108
  if (u && u.id && !u.deleted && !u.blocked && u.inviteStatus === "active") {
108
109
  const roleName = r?.name || (r?.isOwnerRole ? "Owner" : "Vendor Staff");
110
+ const isOwner = Boolean(r?.isOwnerRole);
111
+ let hasOrderPermission = isOwner;
112
+ if (!isOwner && Array.isArray(r?.permissions)) {
113
+ const orderPerm = r.permissions.find((p) => String(p?.entity).toLowerCase() === "orders");
114
+ hasOrderPermission = Boolean(orderPerm?.canRead);
115
+ }
109
116
  assigneesMap.set(u.id, {
110
117
  id: u.id,
111
118
  name: u.name || u.email?.split("@")[0] || `User #${u.id}`,
112
119
  email: u.email || "",
113
120
  role: roleName,
114
121
  vendorId: targetVendorId,
115
- vendorName: v?.name || `Vendor #${targetVendorId}`
122
+ vendorName: v?.name || `Vendor #${targetVendorId}`,
123
+ hasOrderPermission,
124
+ permissionReason: hasOrderPermission ? void 0 : "No order access in role permissions"
116
125
  });
117
126
  }
118
127
  }
@@ -145,6 +154,7 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
145
154
  relations: [
146
155
  "user",
147
156
  "vendorRole",
157
+ "vendorRole.permissions",
148
158
  "vendor"
149
159
  ]
150
160
  });
@@ -155,13 +165,21 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
155
165
  if (u && u.id && !u.deleted && !u.blocked && u.inviteStatus === "active") {
156
166
  if (v && v.deleted) continue;
157
167
  const roleName = r?.name || (r?.isOwnerRole ? "Owner" : "Vendor Staff");
168
+ const isOwner = Boolean(r?.isOwnerRole);
169
+ let hasOrderPermission = isOwner;
170
+ if (!isOwner && Array.isArray(r?.permissions)) {
171
+ const orderPerm = r.permissions.find((p) => String(p?.entity).toLowerCase() === "orders");
172
+ hasOrderPermission = Boolean(orderPerm?.canRead);
173
+ }
158
174
  assigneesMap.set(u.id, {
159
175
  id: u.id,
160
176
  name: u.name || u.email?.split("@")[0] || `User #${u.id}`,
161
177
  email: u.email || "",
162
178
  role: roleName,
163
179
  vendorId: vu.vendorId,
164
- vendorName: v?.name || `Vendor #${vu.vendorId}`
180
+ vendorName: v?.name || `Vendor #${vu.vendorId}`,
181
+ hasOrderPermission,
182
+ permissionReason: hasOrderPermission ? void 0 : "No order access in role permissions"
165
183
  });
166
184
  }
167
185
  }
@@ -197,7 +215,8 @@ function createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionU
197
215
  email: u.email || "",
198
216
  role: roleLabel,
199
217
  vendorId: null,
200
- vendorName: "Platform Staff"
218
+ vendorName: "Platform Staff",
219
+ hasOrderPermission: true
201
220
  });
202
221
  }
203
222
  }
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkHGR4IA7I_cjs = require('./chunk-HGR4IA7I.cjs');
4
- var chunk6MM5OMRL_cjs = require('./chunk-6MM5OMRL.cjs');
5
- var chunkOXFC3DAM_cjs = require('./chunk-OXFC3DAM.cjs');
6
- require('./chunk-M5QDJOUP.cjs');
3
+ var chunkNIBEGDD4_cjs = require('./chunk-NIBEGDD4.cjs');
4
+ var chunkKB7EBYPR_cjs = require('./chunk-KB7EBYPR.cjs');
5
+ var chunkKJB5LBFQ_cjs = require('./chunk-KJB5LBFQ.cjs');
6
+ require('./chunk-K742UE6S.cjs');
7
7
  var chunk4MNVIGVJ_cjs = require('./chunk-4MNVIGVJ.cjs');
8
8
  require('./chunk-BQQMTQ4C.cjs');
9
9
  require('./chunk-RQCXRCYM.cjs');
@@ -250,8 +250,8 @@ function createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydr
250
250
  if (customerEmail) targetChannels.push("email");
251
251
  else if (customerPhone) targetChannels.push("whatsapp");
252
252
  }
253
- const code = chunk6MM5OMRL_cjs.generateNumericOtp(6);
254
- const challengeResult = await chunk6MM5OMRL_cjs.createOtpChallenge(dataSource, entityMap, {
253
+ const code = chunkKB7EBYPR_cjs.generateNumericOtp(6);
254
+ const challengeResult = await chunkKB7EBYPR_cjs.createOtpChallenge(dataSource, entityMap, {
255
255
  purpose: "order_completion",
256
256
  channel: targetChannels[0] || "email",
257
257
  identifier: `order:${orderId}`,
@@ -294,7 +294,7 @@ function createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydr
294
294
  }
295
295
  if (targetChannels.includes("whatsapp") && customerPhone) {
296
296
  try {
297
- const sent = await chunkOXFC3DAM_cjs.queueWhatsApp(cms, {
297
+ const sent = await chunkKJB5LBFQ_cjs.queueWhatsApp(cms, {
298
298
  to: customerPhone,
299
299
  body: `Your completion code for Order #${o.orderNumber} is ${code}. Share this with your representative to complete your order. Valid for 10 minutes.`,
300
300
  variables: {
@@ -310,7 +310,7 @@ function createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydr
310
310
  }
311
311
  if (targetChannels.includes("sms") && customerPhone) {
312
312
  try {
313
- await chunk6MM5OMRL_cjs.queueSms(cms, {
313
+ await chunkKJB5LBFQ_cjs.queueSms(cms, {
314
314
  to: customerPhone,
315
315
  body: `Your verification code for Order #${o.orderNumber} is ${code}. Valid for 10 minutes.`,
316
316
  otpCode: code,
@@ -378,7 +378,7 @@ function createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydr
378
378
  }
379
379
  const accessError = await verifyOrderAccess(order);
380
380
  if (accessError) return accessError;
381
- const verifyResult = await chunk6MM5OMRL_cjs.verifyAndConsumeOtpChallenge(dataSource, entityMap, {
381
+ const verifyResult = await chunkKB7EBYPR_cjs.verifyAndConsumeOtpChallenge(dataSource, entityMap, {
382
382
  purpose: "order_completion",
383
383
  identifier: `order:${orderId}`,
384
384
  code
@@ -396,7 +396,7 @@ function createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydr
396
396
  order.updatedAt = now;
397
397
  await orderRepo.save(order);
398
398
  try {
399
- await chunkHGR4IA7I_cjs.fireOrderNotificationTrigger("order_completed", orderId, {
399
+ await chunkNIBEGDD4_cjs.fireOrderNotificationTrigger("order_completed", orderId, {
400
400
  dataSource,
401
401
  entityMap
402
402
  });
@@ -1,7 +1,7 @@
1
- import { fireOrderNotificationTrigger } from './chunk-T47VP2ZT.js';
2
- import { verifyAndConsumeOtpChallenge, generateNumericOtp, createOtpChallenge, queueSms } from './chunk-53AMBXMM.js';
3
- import { queueWhatsApp } from './chunk-3XCTGADT.js';
4
- import './chunk-WHMIWJL7.js';
1
+ import { fireOrderNotificationTrigger } from './chunk-HZZTDM5J.js';
2
+ import { verifyAndConsumeOtpChallenge, generateNumericOtp, createOtpChallenge } from './chunk-ECUGNV2I.js';
3
+ import { queueWhatsApp, queueSms } from './chunk-K6JT7BKY.js';
4
+ import './chunk-W2ZTGLUH.js';
5
5
  import { queueEmail } from './chunk-LJ5C4RBF.js';
6
6
  import './chunk-PQJIJ4ZX.js';
7
7
  import './chunk-WQZ4AH2P.js';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunk747MJJCZ_cjs = require('./chunk-747MJJCZ.cjs');
4
- require('./chunk-OXFC3DAM.cjs');
5
- require('./chunk-M5QDJOUP.cjs');
3
+ var chunkTTOEY7AH_cjs = require('./chunk-TTOEY7AH.cjs');
4
+ require('./chunk-KJB5LBFQ.cjs');
5
+ require('./chunk-K742UE6S.cjs');
6
6
  require('./chunk-CIZZX57T.cjs');
7
7
  require('./chunk-QN6PZLAP.cjs');
8
8
  require('./chunk-4MNVIGVJ.cjs');
@@ -18,21 +18,21 @@ require('./chunk-XHPRD45G.cjs');
18
18
 
19
19
  Object.defineProperty(exports, "dispatchOrderNotificationDirectly", {
20
20
  enumerable: true,
21
- get: function () { return chunk747MJJCZ_cjs.dispatchOrderNotificationDirectly; }
21
+ get: function () { return chunkTTOEY7AH_cjs.dispatchOrderNotificationDirectly; }
22
22
  });
23
23
  Object.defineProperty(exports, "emitOrderNotificationTrigger", {
24
24
  enumerable: true,
25
- get: function () { return chunk747MJJCZ_cjs.emitOrderNotificationTrigger; }
25
+ get: function () { return chunkTTOEY7AH_cjs.emitOrderNotificationTrigger; }
26
26
  });
27
27
  Object.defineProperty(exports, "getSettingsGroup", {
28
28
  enumerable: true,
29
- get: function () { return chunk747MJJCZ_cjs.getSettingsGroup; }
29
+ get: function () { return chunkTTOEY7AH_cjs.getSettingsGroup; }
30
30
  });
31
31
  Object.defineProperty(exports, "initWhatsappTriggerDispatcher", {
32
32
  enumerable: true,
33
- get: function () { return chunk747MJJCZ_cjs.initWhatsappTriggerDispatcher; }
33
+ get: function () { return chunkTTOEY7AH_cjs.initWhatsappTriggerDispatcher; }
34
34
  });
35
35
  Object.defineProperty(exports, "resendOrderNotification", {
36
36
  enumerable: true,
37
- get: function () { return chunk747MJJCZ_cjs.resendOrderNotification; }
37
+ get: function () { return chunkTTOEY7AH_cjs.resendOrderNotification; }
38
38
  });
@@ -1,6 +1,6 @@
1
- export { dispatchOrderNotificationDirectly, emitOrderNotificationTrigger, getSettingsGroup, initWhatsappTriggerDispatcher, resendOrderNotification } from './chunk-RBKVMHBH.js';
2
- import './chunk-3XCTGADT.js';
3
- import './chunk-WHMIWJL7.js';
1
+ export { dispatchOrderNotificationDirectly, emitOrderNotificationTrigger, getSettingsGroup, initWhatsappTriggerDispatcher, resendOrderNotification } from './chunk-3LF4RYAJ.js';
2
+ import './chunk-K6JT7BKY.js';
3
+ import './chunk-W2ZTGLUH.js';
4
4
  import './chunk-ECNYZG6T.js';
5
5
  import './chunk-CFUSYGSA.js';
6
6
  import './chunk-LJ5C4RBF.js';
@@ -1,4 +1,4 @@
1
- import { summarizeEntityPerms, permissionRowsToRecord } from './chunk-DWNQTFJ5.js';
1
+ import { summarizeEntityPerms, permissionRowsToRecord } from './chunk-CJY2HUJC.js';
2
2
  import { __name } from './chunk-5BKT4CS5.js';
3
3
 
4
4
  // src/auth/rbac-debug-db.ts
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkLXWF6T7F_cjs = require('./chunk-LXWF6T7F.cjs');
3
+ var chunkLCZZ3S4I_cjs = require('./chunk-LCZZ3S4I.cjs');
4
4
  var chunkXHPRD45G_cjs = require('./chunk-XHPRD45G.cjs');
5
5
 
6
6
  // src/auth/rbac-debug-db.ts
@@ -27,7 +27,7 @@ async function loadDbPermissionsForUser(dataSource, userId) {
27
27
  return {
28
28
  groupId,
29
29
  groupName,
30
- dbEntityPerms: chunkLXWF6T7F_cjs.summarizeEntityPerms(chunkLXWF6T7F_cjs.permissionRowsToRecord(permRows))
30
+ dbEntityPerms: chunkLCZZ3S4I_cjs.summarizeEntityPerms(chunkLCZZ3S4I_cjs.permissionRowsToRecord(permRows))
31
31
  };
32
32
  }
33
33
  chunkXHPRD45G_cjs.__name(loadDbPermissionsForUser, "loadDbPermissionsForUser");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infuro/cms-core",
3
- "version": "1.0.69",
3
+ "version": "1.0.70",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",