@infuro/cms-core 1.0.69 → 1.0.71
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.
- package/dist/admin.cjs +2834 -2683
- package/dist/admin.js +1593 -1442
- package/dist/api.cjs +41 -41
- package/dist/api.js +8 -8
- package/dist/auth.cjs +51 -51
- package/dist/auth.js +3 -3
- package/dist/{chunk-RBKVMHBH.js → chunk-3LF4RYAJ.js} +353 -23
- package/dist/{chunk-DBBYLSQP.js → chunk-7NQMGB2S.js} +136 -25
- package/dist/{chunk-DWNQTFJ5.js → chunk-CJY2HUJC.js} +19 -19
- package/dist/{chunk-SWSTGV4F.cjs → chunk-CKTRA3Q2.cjs} +9 -9
- package/dist/{chunk-53AMBXMM.js → chunk-ECUGNV2I.js} +1 -57
- package/dist/{chunk-QXAQ3V7R.cjs → chunk-FNLF6G2N.cjs} +7 -7
- package/dist/{chunk-T47VP2ZT.js → chunk-HZZTDM5J.js} +2 -2
- package/dist/{chunk-3XCTGADT.js → chunk-K6JT7BKY.js} +58 -1
- package/dist/{chunk-M5QDJOUP.cjs → chunk-K742UE6S.cjs} +1 -0
- package/dist/{chunk-6MM5OMRL.cjs → chunk-KB7EBYPR.cjs} +0 -58
- package/dist/{chunk-OXFC3DAM.cjs → chunk-KJB5LBFQ.cjs} +59 -0
- package/dist/{chunk-LXWF6T7F.cjs → chunk-LCZZ3S4I.cjs} +19 -19
- package/dist/{chunk-HGR4IA7I.cjs → chunk-NIBEGDD4.cjs} +15 -15
- package/dist/{chunk-D4LR3S77.js → chunk-NQF6H656.js} +1 -1
- package/dist/{chunk-QL44NCZC.cjs → chunk-OP624LWU.cjs} +222 -111
- package/dist/{chunk-MJDNS324.js → chunk-SCE2GIKH.js} +2 -2
- package/dist/{chunk-747MJJCZ.cjs → chunk-TTOEY7AH.cjs} +404 -74
- package/dist/{chunk-WHMIWJL7.js → chunk-W2ZTGLUH.js} +1 -0
- package/dist/{emit-order-notification-trigger-X36V4DOH.cjs → emit-order-notification-trigger-I4HQSTEN.cjs} +4 -4
- package/dist/{emit-order-notification-trigger-XKN2TWVF.js → emit-order-notification-trigger-TBXAZAPS.js} +2 -2
- package/dist/index.cjs +330 -330
- package/dist/index.js +13 -13
- package/dist/{order-assignees-handlers-JEJ5IDID.cjs → order-assignees-handlers-E6PQZP4H.cjs} +22 -3
- package/dist/{order-assignees-handlers-F7WOZHOG.js → order-assignees-handlers-YCT3Q3KC.js} +22 -3
- package/dist/{order-completion-otp-handlers-LNAZTMTS.cjs → order-completion-otp-handlers-2ZKRK5SN.cjs} +10 -10
- package/dist/{order-completion-otp-handlers-FIW7PZ6W.js → order-completion-otp-handlers-KHLZQQJX.js} +4 -4
- package/dist/{order-notification-dispatcher-GG5C4LKZ.cjs → order-notification-dispatcher-37KDVHBM.cjs} +8 -8
- package/dist/{order-notification-dispatcher-FS54ANAV.js → order-notification-dispatcher-Z3MXNF4U.js} +3 -3
- package/dist/{rbac-debug-db-IRKT6G62.js → rbac-debug-db-JK3U5UZK.js} +1 -1
- package/dist/{rbac-debug-db-2ZI3XKA4.cjs → rbac-debug-db-S3D6N6HN.cjs} +2 -2
- package/package.json +1 -1
|
@@ -1,17 +1,17 @@
|
|
|
1
|
+
import { resolveChatEmailToolSettings, CHAT_EMAIL_LOG, detectChatLeadIntent, parseIntentRecipientEmails, sendChatLeadEmail, buildTranscriptForLeadEmail, buildChatbotSystemPromptWithEmailTool, validateFcmCredentials, sendFcmPushNotification, parseEmailRecipientsFromConfig, isWhatsAppPluginEnabled, WhatsAppService, emailPlugin, initWhatsappTriggerDispatcher } from './chunk-3LF4RYAJ.js';
|
|
2
|
+
import { normalizePhoneE164, generateNumericOtp, createOtpChallenge, verifyAndConsumeOtpChallenge } from './chunk-ECUGNV2I.js';
|
|
3
|
+
import { registerWhatsAppQueueProcessor, queueSms } from './chunk-K6JT7BKY.js';
|
|
1
4
|
import { inviteStatusForActivation } from './chunk-ZMIMKNSQ.js';
|
|
2
|
-
import { normalizePhoneE164, generateNumericOtp, createOtpChallenge, queueSms, verifyAndConsumeOtpChallenge } from './chunk-53AMBXMM.js';
|
|
3
5
|
import { EVENT_ORDER_MESSAGE_TEMPLATE_DEFAULTS, EVENT_ORDER_TEMPLATE_KEY, EVENT_ORDER_TEMPLATE_VARIABLES } from './chunk-5NVGWJSY.js';
|
|
4
6
|
import { JOB_RUNNER_QUEUE } from './chunk-2BNVRFUQ.js';
|
|
5
7
|
import { validateInventoryForConfirmedOrderLines, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, orderInventorySnapshotFromRow, validateInventoryForOrderBecomingConfirmed } from './chunk-JYRFSFXH.js';
|
|
6
|
-
import { resolveChatEmailToolSettings, CHAT_EMAIL_LOG, detectChatLeadIntent, parseIntentRecipientEmails, sendChatLeadEmail, buildTranscriptForLeadEmail, buildChatbotSystemPromptWithEmailTool, validateFcmCredentials, sendFcmPushNotification, parseEmailRecipientsFromConfig, isWhatsAppPluginEnabled, WhatsAppService, emailPlugin, initWhatsappTriggerDispatcher } from './chunk-RBKVMHBH.js';
|
|
7
|
-
import { registerWhatsAppQueueProcessor } from './chunk-3XCTGADT.js';
|
|
8
8
|
import { queueEmail, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-LJ5C4RBF.js';
|
|
9
9
|
import { unwrapErpReadData, mapErpPayloadToFulfillment, extractChildOrderRefsFromSalePayload, mapErpPayloadToInvoiceNumber, streamOrderInvoicePdf } from './chunk-PQJIJ4ZX.js';
|
|
10
10
|
import { isErpIntegrationEnabled } from './chunk-WQZ4AH2P.js';
|
|
11
11
|
import { mergeEmailLayoutCompanyDetails } from './chunk-YDMHG6BA.js';
|
|
12
12
|
import { getSmsTemplateDefault, SMS_MESSAGE_TEMPLATE_DEFAULTS } from './chunk-MGT4DJ2D.js';
|
|
13
|
-
import { ensureCustomerRecord, linkUnclaimedContactToUser, ensureCustomerForUser, canManageRoles, sessionHasEntityAccess } from './chunk-
|
|
14
|
-
import { permissionRowsToRecord, logRbac, isSuperAdmin, vendorPortalFlagsFromUser, VENDOR_SCOPED_STORE_ENTITIES, isVendorPortalUser, getPermissionableEntityKeys, VENDOR_STORE_RBAC_ENTITIES, isSuperAdminGroupName, VENDOR_RBAC_ENTITIES, VENDOR_VIEWER_ROLE_NAME, DEFAULT_VENDOR_ROLE_DEFS, VENDOR_GROUP_NAME, resolveVendorScopeFromSessionUser, canManageVendorRoles, isPlatformAdministrator, canManageVendorTeam, resolveDisabledMultiVendorScope, logEntityAccessDecision, explainSessionEntityAccess } from './chunk-
|
|
13
|
+
import { ensureCustomerRecord, linkUnclaimedContactToUser, ensureCustomerForUser, canManageRoles, sessionHasEntityAccess } from './chunk-NQF6H656.js';
|
|
14
|
+
import { permissionRowsToRecord, logRbac, isSuperAdmin, vendorPortalFlagsFromUser, VENDOR_SCOPED_STORE_ENTITIES, isVendorPortalUser, getPermissionableEntityKeys, VENDOR_STORE_RBAC_ENTITIES, isSuperAdminGroupName, VENDOR_RBAC_ENTITIES, VENDOR_VIEWER_ROLE_NAME, DEFAULT_VENDOR_ROLE_DEFS, VENDOR_GROUP_NAME, resolveVendorScopeFromSessionUser, canManageVendorRoles, isPlatformAdministrator, canManageVendorTeam, resolveDisabledMultiVendorScope, logEntityAccessDecision, explainSessionEntityAccess } from './chunk-CJY2HUJC.js';
|
|
15
15
|
import { retireSoftDeletedUniqueValue, activeUniqueValueExists } from './chunk-BK5XW5XH.js';
|
|
16
16
|
import { queueErp } from './chunk-7QJI56OL.js';
|
|
17
17
|
import { __name } from './chunk-5BKT4CS5.js';
|
|
@@ -1698,6 +1698,82 @@ async function recordOrderAssigneeHistory(dataSource, entityMap, orderId, userId
|
|
|
1698
1698
|
return nextSortOrder;
|
|
1699
1699
|
}
|
|
1700
1700
|
__name(recordOrderAssigneeHistory, "recordOrderAssigneeHistory");
|
|
1701
|
+
async function validateAssigneeOrderPermission(dataSource, entityMap, userId) {
|
|
1702
|
+
if (!Number.isFinite(userId) || userId <= 0) return {
|
|
1703
|
+
valid: true
|
|
1704
|
+
};
|
|
1705
|
+
if (entityMap.users) {
|
|
1706
|
+
const uRepo = dataSource.getRepository(entityMap.users);
|
|
1707
|
+
const u = await uRepo.findOne({
|
|
1708
|
+
where: {
|
|
1709
|
+
id: userId,
|
|
1710
|
+
deleted: false
|
|
1711
|
+
},
|
|
1712
|
+
relations: [
|
|
1713
|
+
"group"
|
|
1714
|
+
]
|
|
1715
|
+
});
|
|
1716
|
+
if (!u) {
|
|
1717
|
+
return {
|
|
1718
|
+
valid: false,
|
|
1719
|
+
error: "Assignee user not found."
|
|
1720
|
+
};
|
|
1721
|
+
}
|
|
1722
|
+
const userRow = u;
|
|
1723
|
+
if (userRow.adminAccess) {
|
|
1724
|
+
return {
|
|
1725
|
+
valid: true
|
|
1726
|
+
};
|
|
1727
|
+
}
|
|
1728
|
+
if (userRow.group?.name && userRow.group.name.toLowerCase() === "customer") {
|
|
1729
|
+
return {
|
|
1730
|
+
valid: false,
|
|
1731
|
+
error: "Customer accounts cannot be assigned to orders."
|
|
1732
|
+
};
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
if (entityMap.vendor_users) {
|
|
1736
|
+
const vuRepo = dataSource.getRepository(entityMap.vendor_users);
|
|
1737
|
+
const vuLinks = await vuRepo.find({
|
|
1738
|
+
where: {
|
|
1739
|
+
userId
|
|
1740
|
+
},
|
|
1741
|
+
relations: [
|
|
1742
|
+
"vendorRole",
|
|
1743
|
+
"vendorRole.permissions"
|
|
1744
|
+
]
|
|
1745
|
+
});
|
|
1746
|
+
if (vuLinks && vuLinks.length > 0) {
|
|
1747
|
+
let anyRoleHasAccess = false;
|
|
1748
|
+
for (const vu of vuLinks) {
|
|
1749
|
+
const r = vu.vendorRole;
|
|
1750
|
+
if (r) {
|
|
1751
|
+
if (r.isOwnerRole) {
|
|
1752
|
+
anyRoleHasAccess = true;
|
|
1753
|
+
break;
|
|
1754
|
+
}
|
|
1755
|
+
if (Array.isArray(r.permissions)) {
|
|
1756
|
+
const orderPerm = r.permissions.find((p) => String(p?.entity).toLowerCase() === "orders");
|
|
1757
|
+
if (orderPerm && orderPerm.canRead) {
|
|
1758
|
+
anyRoleHasAccess = true;
|
|
1759
|
+
break;
|
|
1760
|
+
}
|
|
1761
|
+
}
|
|
1762
|
+
}
|
|
1763
|
+
}
|
|
1764
|
+
if (!anyRoleHasAccess) {
|
|
1765
|
+
return {
|
|
1766
|
+
valid: false,
|
|
1767
|
+
error: "Cannot assign order: This team member does not have permission to access orders. Please grant order access in Roles & Permissions."
|
|
1768
|
+
};
|
|
1769
|
+
}
|
|
1770
|
+
}
|
|
1771
|
+
}
|
|
1772
|
+
return {
|
|
1773
|
+
valid: true
|
|
1774
|
+
};
|
|
1775
|
+
}
|
|
1776
|
+
__name(validateAssigneeOrderPermission, "validateAssigneeOrderPermission");
|
|
1701
1777
|
var LIST_QUERY_RESERVED = /* @__PURE__ */ new Set([
|
|
1702
1778
|
"page",
|
|
1703
1779
|
"limit",
|
|
@@ -5112,6 +5188,16 @@ function createCrudHandler(dataSource, entityMap, options) {
|
|
|
5112
5188
|
persistBody.orderNumber = `ORD00${randomPart}`;
|
|
5113
5189
|
persistBody.qrToken = crypto2.randomBytes(16).toString("hex");
|
|
5114
5190
|
}
|
|
5191
|
+
if (resource === "orders" && persistBody.assignedUserId) {
|
|
5192
|
+
const assignCheck = await validateAssigneeOrderPermission(dataSource, entityMap, Number(persistBody.assignedUserId));
|
|
5193
|
+
if (!assignCheck.valid) {
|
|
5194
|
+
return json({
|
|
5195
|
+
error: assignCheck.error ?? "Invalid order assignee"
|
|
5196
|
+
}, {
|
|
5197
|
+
status: 400
|
|
5198
|
+
});
|
|
5199
|
+
}
|
|
5200
|
+
}
|
|
5115
5201
|
await retireSoftDeletedUniquesFromBody(repo, persistBody);
|
|
5116
5202
|
created = await repo.save(repo.create(persistBody));
|
|
5117
5203
|
if (resource === "orders") {
|
|
@@ -5313,7 +5399,7 @@ function createCrudHandler(dataSource, entityMap, options) {
|
|
|
5313
5399
|
const orderIdForNotify = created.id;
|
|
5314
5400
|
const finalCreatedStatus = String(created.status ?? createdStatus ?? "pending").toLowerCase();
|
|
5315
5401
|
const initialPayStatus = String(persistBody.paymentStatus ?? body.paymentStatus ?? "unpaid").toLowerCase();
|
|
5316
|
-
void import('./emit-order-notification-trigger-
|
|
5402
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
5317
5403
|
if (finalCreatedStatus === "pending") {
|
|
5318
5404
|
if (initialPayStatus === "failed") {
|
|
5319
5405
|
fireOrderNotificationTrigger("payment_failed", orderIdForNotify, {
|
|
@@ -6220,6 +6306,14 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
|
|
|
6220
6306
|
if ("assignedUserId" in rawBody && rawBody.assignedUserId !== void 0) {
|
|
6221
6307
|
const aId = Number(rawBody.assignedUserId);
|
|
6222
6308
|
if (Number.isFinite(aId) && aId > 0) {
|
|
6309
|
+
const assignCheck = await validateAssigneeOrderPermission(dataSource, entityMap, aId);
|
|
6310
|
+
if (!assignCheck.valid) {
|
|
6311
|
+
return json({
|
|
6312
|
+
error: assignCheck.error ?? "Invalid order assignee"
|
|
6313
|
+
}, {
|
|
6314
|
+
status: 400
|
|
6315
|
+
});
|
|
6316
|
+
}
|
|
6223
6317
|
if (scopePutEarly.type === "vendor" && entityMap.vendor_users) {
|
|
6224
6318
|
const vuRepo = dataSource.getRepository(entityMap.vendor_users);
|
|
6225
6319
|
const vuLink = await vuRepo.findOne({
|
|
@@ -6516,7 +6610,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
|
|
|
6516
6610
|
const paymentUpdated = Boolean(rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null);
|
|
6517
6611
|
const assigneeUpdated = Boolean(rawBody && typeof rawBody === "object" && "assignedUserId" in rawBody && rawBody.assignedUserId !== void 0 && Number(rawBody.assignedUserId) > 0 && Number(rawBody.assignedUserId) !== Number(existingOrderRow?.assignedUserId));
|
|
6518
6612
|
if (assigneeUpdated) {
|
|
6519
|
-
void import('./emit-order-notification-trigger-
|
|
6613
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
6520
6614
|
fireOrderNotificationTrigger("order_assigned", updatedOrder.id, {
|
|
6521
6615
|
dataSource,
|
|
6522
6616
|
entityMap
|
|
@@ -6533,7 +6627,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
|
|
|
6533
6627
|
const payments = Array.isArray(updatedOrder.payments) ? updatedOrder.payments : [];
|
|
6534
6628
|
const bodyPayStatus = rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null ? String(rawBody.paymentStatus).toLowerCase() : null;
|
|
6535
6629
|
const curPayStatus = bodyPayStatus || String(payments[0]?.status || "unpaid").toLowerCase();
|
|
6536
|
-
void import('./emit-order-notification-trigger-
|
|
6630
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
6537
6631
|
if (newStatus === "pending") {
|
|
6538
6632
|
if (curPayStatus === "failed") {
|
|
6539
6633
|
fireOrderNotificationTrigger("payment_failed", updatedOrder.id, {
|
|
@@ -7101,6 +7195,14 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
|
|
|
7101
7195
|
const aId = Number(rawBody.assignedUserId);
|
|
7102
7196
|
console.log("[ORDERS-DEBUG][UPDATE] Updating assignedUserId to:", aId);
|
|
7103
7197
|
if (Number.isFinite(aId) && aId > 0) {
|
|
7198
|
+
const assignCheck = await validateAssigneeOrderPermission(dataSource, entityMap, aId);
|
|
7199
|
+
if (!assignCheck.valid) {
|
|
7200
|
+
return json({
|
|
7201
|
+
error: assignCheck.error ?? "Invalid order assignee"
|
|
7202
|
+
}, {
|
|
7203
|
+
status: 400
|
|
7204
|
+
});
|
|
7205
|
+
}
|
|
7104
7206
|
if (scopePut.type === "vendor" && entityMap.vendor_users) {
|
|
7105
7207
|
const vuRepo = dataSource.getRepository(entityMap.vendor_users);
|
|
7106
7208
|
const vuLink = await vuRepo.findOne({
|
|
@@ -7241,7 +7343,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
|
|
|
7241
7343
|
});
|
|
7242
7344
|
}
|
|
7243
7345
|
if (ordStatus === "pending" || ordStatus === "confirmed") {
|
|
7244
|
-
void import('./emit-order-notification-trigger-
|
|
7346
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
7245
7347
|
fireOrderNotificationTrigger("order_placed", pOrder, {
|
|
7246
7348
|
dataSource,
|
|
7247
7349
|
entityMap
|
|
@@ -7255,7 +7357,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
|
|
|
7255
7357
|
}
|
|
7256
7358
|
}
|
|
7257
7359
|
} else if (newPayStatus === "failed") {
|
|
7258
|
-
void import('./emit-order-notification-trigger-
|
|
7360
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
7259
7361
|
fireOrderNotificationTrigger("payment_failed", pOrder, {
|
|
7260
7362
|
dataSource,
|
|
7261
7363
|
entityMap
|
|
@@ -7263,7 +7365,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
|
|
|
7263
7365
|
}).catch(() => {
|
|
7264
7366
|
});
|
|
7265
7367
|
} else if (newPayStatus === "refunded") {
|
|
7266
|
-
void import('./emit-order-notification-trigger-
|
|
7368
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
7267
7369
|
fireOrderNotificationTrigger("payment_refund_initiated", pOrder, {
|
|
7268
7370
|
dataSource,
|
|
7269
7371
|
entityMap
|
|
@@ -7390,7 +7492,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
|
|
|
7390
7492
|
const paymentUpdated = Boolean(rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null);
|
|
7391
7493
|
const assigneeUpdated = Boolean(rawBody && typeof rawBody === "object" && "assignedUserId" in rawBody && rawBody.assignedUserId !== void 0 && Number(rawBody.assignedUserId) > 0 && Number(rawBody.assignedUserId) !== Number(existingOrderRow?.assignedUserId));
|
|
7392
7494
|
if (assigneeUpdated) {
|
|
7393
|
-
void import('./emit-order-notification-trigger-
|
|
7495
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
7394
7496
|
fireOrderNotificationTrigger("order_assigned", ord.id, {
|
|
7395
7497
|
dataSource,
|
|
7396
7498
|
entityMap
|
|
@@ -7407,7 +7509,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
|
|
|
7407
7509
|
const payments = Array.isArray(ord.payments) ? ord.payments : [];
|
|
7408
7510
|
const bodyPayStatus = rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null ? String(rawBody.paymentStatus).toLowerCase() : null;
|
|
7409
7511
|
const curPayStatus = bodyPayStatus || String(payments[0]?.status || "unpaid").toLowerCase();
|
|
7410
|
-
void import('./emit-order-notification-trigger-
|
|
7512
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
7411
7513
|
if (newStatus === "pending") {
|
|
7412
7514
|
if (curPayStatus === "failed") {
|
|
7413
7515
|
fireOrderNotificationTrigger("payment_failed", ord.id, {
|
|
@@ -29036,6 +29138,7 @@ function whatsappPlugin(config = {}) {
|
|
|
29036
29138
|
const { getWhatsAppSettings, getMessageTemplateRow, ...staticRest } = config;
|
|
29037
29139
|
let settingsLoader = getWhatsAppSettings;
|
|
29038
29140
|
if (!settingsLoader && context.dataSource) {
|
|
29141
|
+
const encKey = resolveSettingsEncryptionKey(env);
|
|
29039
29142
|
settingsLoader = /* @__PURE__ */ __name(async () => {
|
|
29040
29143
|
try {
|
|
29041
29144
|
const ds = context.dataSource;
|
|
@@ -29046,10 +29149,18 @@ function whatsappPlugin(config = {}) {
|
|
|
29046
29149
|
deleted: false
|
|
29047
29150
|
}
|
|
29048
29151
|
});
|
|
29049
|
-
|
|
29050
|
-
|
|
29051
|
-
r.value
|
|
29052
|
-
|
|
29152
|
+
const result = {};
|
|
29153
|
+
for (const r of rows) {
|
|
29154
|
+
let val = String(r.value ?? "");
|
|
29155
|
+
if (r.encrypted && encKey) {
|
|
29156
|
+
try {
|
|
29157
|
+
val = simpleDecrypt(val, encKey);
|
|
29158
|
+
} catch {
|
|
29159
|
+
}
|
|
29160
|
+
}
|
|
29161
|
+
result[r.key] = val;
|
|
29162
|
+
}
|
|
29163
|
+
return result;
|
|
29053
29164
|
} catch {
|
|
29054
29165
|
return {};
|
|
29055
29166
|
}
|
|
@@ -31238,7 +31349,7 @@ function createCmsApiHandler(config) {
|
|
|
31238
31349
|
status: 400
|
|
31239
31350
|
});
|
|
31240
31351
|
}
|
|
31241
|
-
const { resendOrderNotification } = await import('./order-notification-dispatcher-
|
|
31352
|
+
const { resendOrderNotification } = await import('./order-notification-dispatcher-Z3MXNF4U.js');
|
|
31242
31353
|
const result = await resendOrderNotification(triggerKey, orderId, {
|
|
31243
31354
|
dataSource,
|
|
31244
31355
|
entityMap,
|
|
@@ -31337,7 +31448,7 @@ function createCmsApiHandler(config) {
|
|
|
31337
31448
|
status: "cancelled"
|
|
31338
31449
|
});
|
|
31339
31450
|
const fireOrderCancelledNotification = /* @__PURE__ */ __name((refundAmount) => {
|
|
31340
|
-
void import('./emit-order-notification-trigger-
|
|
31451
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
31341
31452
|
fireOrderNotificationTrigger("order_cancelled", orderId, {
|
|
31342
31453
|
dataSource,
|
|
31343
31454
|
entityMap
|
|
@@ -31582,7 +31693,7 @@ function createCmsApiHandler(config) {
|
|
|
31582
31693
|
}, {
|
|
31583
31694
|
status: 400
|
|
31584
31695
|
});
|
|
31585
|
-
const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-
|
|
31696
|
+
const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-KHLZQQJX.js');
|
|
31586
31697
|
const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydratedSessionUser);
|
|
31587
31698
|
return handlers.getChannels(req, orderId);
|
|
31588
31699
|
}
|
|
@@ -31597,7 +31708,7 @@ function createCmsApiHandler(config) {
|
|
|
31597
31708
|
}, {
|
|
31598
31709
|
status: 400
|
|
31599
31710
|
});
|
|
31600
|
-
const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-
|
|
31711
|
+
const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-KHLZQQJX.js');
|
|
31601
31712
|
const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydratedSessionUser);
|
|
31602
31713
|
return handlers.sendOtp(req, orderId);
|
|
31603
31714
|
}
|
|
@@ -31612,7 +31723,7 @@ function createCmsApiHandler(config) {
|
|
|
31612
31723
|
}, {
|
|
31613
31724
|
status: 400
|
|
31614
31725
|
});
|
|
31615
|
-
const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-
|
|
31726
|
+
const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-KHLZQQJX.js');
|
|
31616
31727
|
const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydratedSessionUser);
|
|
31617
31728
|
return handlers.verifyOtp(req, orderId);
|
|
31618
31729
|
}
|
|
@@ -31627,7 +31738,7 @@ function createCmsApiHandler(config) {
|
|
|
31627
31738
|
}, {
|
|
31628
31739
|
status: 400
|
|
31629
31740
|
});
|
|
31630
|
-
const { createOrderAssigneesHandlers } = await import('./order-assignees-handlers-
|
|
31741
|
+
const { createOrderAssigneesHandlers } = await import('./order-assignees-handlers-YCT3Q3KC.js');
|
|
31631
31742
|
const handlers = createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionUser);
|
|
31632
31743
|
return handlers.listEligibleAssignees(req, orderId);
|
|
31633
31744
|
}
|
|
@@ -32244,7 +32355,7 @@ function createStorefrontApiHandler(config) {
|
|
|
32244
32355
|
const otpPepper = config.otpPepper;
|
|
32245
32356
|
const defaultPhoneCc = config.defaultPhoneCountryCode;
|
|
32246
32357
|
function fireStorefrontCheckoutNotifications(orderId) {
|
|
32247
|
-
void import('./emit-order-notification-trigger-
|
|
32358
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
32248
32359
|
fireOrderNotificationTrigger("order_pending", orderId, {
|
|
32249
32360
|
dataSource,
|
|
32250
32361
|
entityMap
|
|
@@ -35189,7 +35300,7 @@ function createStorefrontApiHandler(config) {
|
|
|
35189
35300
|
} catch {
|
|
35190
35301
|
}
|
|
35191
35302
|
try {
|
|
35192
|
-
void import('./emit-order-notification-trigger-
|
|
35303
|
+
void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
|
|
35193
35304
|
fireOrderNotificationTrigger("order_cancelled", orderId, {
|
|
35194
35305
|
dataSource,
|
|
35195
35306
|
entityMap
|
|
@@ -70,24 +70,6 @@ function hasEntityPermission(record, entity, action) {
|
|
|
70
70
|
}
|
|
71
71
|
__name(hasEntityPermission, "hasEntityPermission");
|
|
72
72
|
|
|
73
|
-
// src/auth/role-helpers.ts
|
|
74
|
-
var SUPER_ADMIN_GROUP_ID = 1;
|
|
75
|
-
var VENDOR_ADMIN_GROUP_ID = 5;
|
|
76
|
-
function isSuperAdmin(user) {
|
|
77
|
-
if (!user) return false;
|
|
78
|
-
if (user.groupId === SUPER_ADMIN_GROUP_ID) return true;
|
|
79
|
-
if (user.isRBACAdmin === true) return true;
|
|
80
|
-
return isSuperAdminGroupName(user.groupName);
|
|
81
|
-
}
|
|
82
|
-
__name(isSuperAdmin, "isSuperAdmin");
|
|
83
|
-
function isVendorAdmin(user) {
|
|
84
|
-
if (!user?.email || isSuperAdmin(user)) return false;
|
|
85
|
-
if (user.groupId === VENDOR_ADMIN_GROUP_ID) return true;
|
|
86
|
-
if ((user.vendorIds?.length ?? 0) > 0) return true;
|
|
87
|
-
return isVendorGroupName(user.groupName);
|
|
88
|
-
}
|
|
89
|
-
__name(isVendorAdmin, "isVendorAdmin");
|
|
90
|
-
|
|
91
73
|
// src/auth/vendor-scope.ts
|
|
92
74
|
var DEFAULT_VENDOR_SLUG = "default";
|
|
93
75
|
async function resolveDefaultVendorId(dataSource) {
|
|
@@ -231,6 +213,24 @@ function vendorPortalFlagsFromUser(input) {
|
|
|
231
213
|
}
|
|
232
214
|
__name(vendorPortalFlagsFromUser, "vendorPortalFlagsFromUser");
|
|
233
215
|
|
|
216
|
+
// src/auth/role-helpers.ts
|
|
217
|
+
var SUPER_ADMIN_GROUP_ID = 1;
|
|
218
|
+
var VENDOR_ADMIN_GROUP_ID = 5;
|
|
219
|
+
function isSuperAdmin(user) {
|
|
220
|
+
if (!user) return false;
|
|
221
|
+
if (user.groupId === SUPER_ADMIN_GROUP_ID) return true;
|
|
222
|
+
if (user.isRBACAdmin === true) return true;
|
|
223
|
+
return isSuperAdminGroupName(user.groupName);
|
|
224
|
+
}
|
|
225
|
+
__name(isSuperAdmin, "isSuperAdmin");
|
|
226
|
+
function isVendorAdmin(user) {
|
|
227
|
+
if (!user?.email || isSuperAdmin(user)) return false;
|
|
228
|
+
if (user.groupId === VENDOR_ADMIN_GROUP_ID) return true;
|
|
229
|
+
if ((user.vendorIds?.length ?? 0) > 0) return true;
|
|
230
|
+
return isVendorGroupName(user.groupName);
|
|
231
|
+
}
|
|
232
|
+
__name(isVendorAdmin, "isVendorAdmin");
|
|
233
|
+
|
|
234
234
|
// src/lib/vendor-role-defaults.ts
|
|
235
235
|
var VENDOR_RBAC_ENTITIES = [
|
|
236
236
|
...VENDOR_STORE_RBAC_ENTITIES,
|
|
@@ -623,7 +623,7 @@ async function logEntityAccessDecision(dataSource, context, user, entity, action
|
|
|
623
623
|
const id = Number(user.id);
|
|
624
624
|
if (Number.isFinite(id)) {
|
|
625
625
|
try {
|
|
626
|
-
const { loadDbPermissionsForUser } = await import('./rbac-debug-db-
|
|
626
|
+
const { loadDbPermissionsForUser } = await import('./rbac-debug-db-JK3U5UZK.js');
|
|
627
627
|
dbPermissions = await loadDbPermissionsForUser(dataSource, id);
|
|
628
628
|
} catch (e) {
|
|
629
629
|
dbPermissions = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkFNLF6G2N_cjs = require('./chunk-FNLF6G2N.cjs');
|
|
4
|
+
var chunkLCZZ3S4I_cjs = require('./chunk-LCZZ3S4I.cjs');
|
|
5
5
|
var chunk4WZNRVEZ_cjs = require('./chunk-4WZNRVEZ.cjs');
|
|
6
6
|
var chunkCTTV375J_cjs = require('./chunk-CTTV375J.cjs');
|
|
7
7
|
var chunkXHPRD45G_cjs = require('./chunk-XHPRD45G.cjs');
|
|
@@ -15,12 +15,12 @@ var _GoogleProvider__default = /*#__PURE__*/_interopDefault(_GoogleProvider);
|
|
|
15
15
|
|
|
16
16
|
// src/auth/seed-permissions.ts
|
|
17
17
|
async function seedAdministratorPermissions(dataSource, entityMap) {
|
|
18
|
-
const entities =
|
|
18
|
+
const entities = chunkLCZZ3S4I_cjs.getPermissionableEntityKeys(entityMap);
|
|
19
19
|
const groupRepo = dataSource.getRepository(entityMap.user_groups);
|
|
20
20
|
const permRepo = dataSource.getRepository(entityMap.permissions);
|
|
21
21
|
const adminGroup = await groupRepo.findOne({
|
|
22
22
|
where: {
|
|
23
|
-
name:
|
|
23
|
+
name: chunkLCZZ3S4I_cjs.ADMIN_GROUP_NAME,
|
|
24
24
|
deleted: false
|
|
25
25
|
}
|
|
26
26
|
});
|
|
@@ -260,13 +260,13 @@ async function createCustomerUserFromGoogleOAuth(input) {
|
|
|
260
260
|
}
|
|
261
261
|
if (input.entityMap.contacts) {
|
|
262
262
|
try {
|
|
263
|
-
await
|
|
263
|
+
await chunkFNLF6G2N_cjs.linkUnclaimedContactToUser(input.dataSource, input.entityMap.contacts, userId, email);
|
|
264
264
|
} catch {
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
267
|
if (input.entityMap.customer) {
|
|
268
268
|
try {
|
|
269
|
-
await
|
|
269
|
+
await chunkFNLF6G2N_cjs.ensureCustomerForUser(input.dataSource, input.entityMap.customer, {
|
|
270
270
|
id: userId,
|
|
271
271
|
name: displayName,
|
|
272
272
|
email,
|
|
@@ -387,18 +387,18 @@ async function checkMultiVendorEnabledViaSettingsApi() {
|
|
|
387
387
|
chunkXHPRD45G_cjs.__name(checkMultiVendorEnabledViaSettingsApi, "checkMultiVendorEnabledViaSettingsApi");
|
|
388
388
|
function sessionUserFromNextAuthUser(user) {
|
|
389
389
|
const g = user.group;
|
|
390
|
-
const isRBACAdmin =
|
|
390
|
+
const isRBACAdmin = chunkLCZZ3S4I_cjs.isSuperAdmin({
|
|
391
391
|
groupId: user.groupId ?? void 0,
|
|
392
392
|
groupName: g?.name,
|
|
393
393
|
isRBACAdmin: false
|
|
394
394
|
});
|
|
395
|
-
const entityPerms =
|
|
395
|
+
const entityPerms = chunkLCZZ3S4I_cjs.permissionRowsToRecord(g?.permissions);
|
|
396
396
|
const rawAdminAccess = user.adminAccess;
|
|
397
397
|
const adminAccess = rawAdminAccess === true ? true : rawAdminAccess === false ? false : void 0;
|
|
398
398
|
const vendorIds = user.vendorIds ?? [];
|
|
399
399
|
const vendorRole = user.vendorRole ?? null;
|
|
400
400
|
const isVendorRoleOwner = user.isVendorRoleOwner ?? false;
|
|
401
|
-
const { isVendorPortal, isVendorOwner: isVendorOwner2 } =
|
|
401
|
+
const { isVendorPortal, isVendorOwner: isVendorOwner2 } = chunkLCZZ3S4I_cjs.vendorPortalFlagsFromUser({
|
|
402
402
|
email: user.email,
|
|
403
403
|
isRBACAdmin,
|
|
404
404
|
groupName: g?.name,
|
|
@@ -2,62 +2,6 @@ import { __name } from './chunk-5BKT4CS5.js';
|
|
|
2
2
|
import { createHmac, timingSafeEqual, randomInt } from 'crypto';
|
|
3
3
|
import { MoreThan, IsNull } from 'typeorm';
|
|
4
4
|
|
|
5
|
-
// src/plugins/sms/sms-queue.ts
|
|
6
|
-
var SMS_QUEUE_NAME = "sms";
|
|
7
|
-
function registerSmsQueueProcessor(cms) {
|
|
8
|
-
const queue = cms.getPlugin("queue");
|
|
9
|
-
const sms = cms.getPlugin("sms");
|
|
10
|
-
if (!queue || !sms || typeof sms.send !== "function") return;
|
|
11
|
-
queue.registerProcessor(SMS_QUEUE_NAME, async (data) => {
|
|
12
|
-
const payload = data;
|
|
13
|
-
if (!payload.to) return;
|
|
14
|
-
if (payload.templateKey?.trim()) {
|
|
15
|
-
await sms.send({
|
|
16
|
-
to: payload.to,
|
|
17
|
-
templateKey: payload.templateKey.trim(),
|
|
18
|
-
variables: payload.variables,
|
|
19
|
-
otpCode: payload.otpCode
|
|
20
|
-
});
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
if (!payload.body?.trim()) return;
|
|
24
|
-
await sms.send({
|
|
25
|
-
to: payload.to,
|
|
26
|
-
body: payload.body,
|
|
27
|
-
otpCode: payload.otpCode,
|
|
28
|
-
variables: payload.variables
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
__name(registerSmsQueueProcessor, "registerSmsQueueProcessor");
|
|
33
|
-
async function queueSms(cms, payload) {
|
|
34
|
-
const queue = cms.getPlugin("queue");
|
|
35
|
-
const sms = cms.getPlugin("sms");
|
|
36
|
-
if (queue) {
|
|
37
|
-
await queue.add(SMS_QUEUE_NAME, payload);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (sms && typeof sms.send === "function") {
|
|
41
|
-
if (payload.templateKey?.trim()) {
|
|
42
|
-
await sms.send({
|
|
43
|
-
to: payload.to,
|
|
44
|
-
templateKey: payload.templateKey.trim(),
|
|
45
|
-
variables: payload.variables,
|
|
46
|
-
otpCode: payload.otpCode
|
|
47
|
-
});
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (payload.body?.trim()) {
|
|
51
|
-
await sms.send({
|
|
52
|
-
to: payload.to,
|
|
53
|
-
body: payload.body,
|
|
54
|
-
otpCode: payload.otpCode,
|
|
55
|
-
variables: payload.variables
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
__name(queueSms, "queueSms");
|
|
61
5
|
var OTP_TTL_MS = 10 * 60 * 1e3;
|
|
62
6
|
var MAX_SENDS_PER_HOUR = 5;
|
|
63
7
|
var MAX_VERIFY_ATTEMPTS = 8;
|
|
@@ -196,4 +140,4 @@ async function verifyAndConsumeOtpChallenge(dataSource, entityMap, input) {
|
|
|
196
140
|
}
|
|
197
141
|
__name(verifyAndConsumeOtpChallenge, "verifyAndConsumeOtpChallenge");
|
|
198
142
|
|
|
199
|
-
export { countRecentOtpSends, createOtpChallenge, generateNumericOtp, hashOtpCode, normalizePhoneE164,
|
|
143
|
+
export { countRecentOtpSends, createOtpChallenge, generateNumericOtp, hashOtpCode, normalizePhoneE164, verifyAndConsumeOtpChallenge, verifyOtpCodeHash };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkLCZZ3S4I_cjs = require('./chunk-LCZZ3S4I.cjs');
|
|
4
4
|
var chunkXHPRD45G_cjs = require('./chunk-XHPRD45G.cjs');
|
|
5
5
|
var typeorm = require('typeorm');
|
|
6
6
|
|
|
@@ -273,7 +273,7 @@ var RBAC_ADMIN_ONLY_ENTITIES = /* @__PURE__ */ new Set([
|
|
|
273
273
|
"permissions"
|
|
274
274
|
]);
|
|
275
275
|
function sessionHasEntityAccess(user, entity, action) {
|
|
276
|
-
return
|
|
276
|
+
return chunkLCZZ3S4I_cjs.explainSessionEntityAccess(user, entity, action).allowed;
|
|
277
277
|
}
|
|
278
278
|
chunkXHPRD45G_cjs.__name(sessionHasEntityAccess, "sessionHasEntityAccess");
|
|
279
279
|
function canManageRoles(user) {
|
|
@@ -364,8 +364,8 @@ function createAuthHelpersFromGetSession(getSession, NextResponse) {
|
|
|
364
364
|
}
|
|
365
365
|
const u = session.user;
|
|
366
366
|
const allowed = sessionHasEntityAccess(u, entity, action);
|
|
367
|
-
const { reason } =
|
|
368
|
-
|
|
367
|
+
const { reason } = chunkLCZZ3S4I_cjs.explainSessionEntityAccess(u, entity, action);
|
|
368
|
+
chunkLCZZ3S4I_cjs.logRbac("authHelpers.requireEntityPermission", {
|
|
369
369
|
entity,
|
|
370
370
|
action,
|
|
371
371
|
allowed,
|
|
@@ -397,10 +397,10 @@ function createAuthHelpersFromGetSession(getSession, NextResponse) {
|
|
|
397
397
|
}
|
|
398
398
|
const u = session.user;
|
|
399
399
|
if (u.isRBACAdmin) return null;
|
|
400
|
-
if (
|
|
400
|
+
if (chunkLCZZ3S4I_cjs.isVendorPortalUser(u)) return null;
|
|
401
401
|
if (u.adminAccess === true) return null;
|
|
402
402
|
if (u.adminAccess === false) {
|
|
403
|
-
|
|
403
|
+
chunkLCZZ3S4I_cjs.logRbac("requireAdminAccess denied (adminAccess:false)", {
|
|
404
404
|
email: u.email,
|
|
405
405
|
groupName: u.groupName,
|
|
406
406
|
isVendorPortal: u.isVendorPortal
|
|
@@ -412,7 +412,7 @@ function createAuthHelpersFromGetSession(getSession, NextResponse) {
|
|
|
412
412
|
status: 403
|
|
413
413
|
});
|
|
414
414
|
}
|
|
415
|
-
|
|
415
|
+
chunkLCZZ3S4I_cjs.logRbac("requireAdminAccess denied (no matching rule)", {
|
|
416
416
|
email: u.email,
|
|
417
417
|
adminAccess: u.adminAccess,
|
|
418
418
|
groupName: u.groupName,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { notifyLog, notificationTriggerEmitter, maskNotifyPhone } from './chunk-
|
|
1
|
+
import { notifyLog, notificationTriggerEmitter, maskNotifyPhone } from './chunk-W2ZTGLUH.js';
|
|
2
2
|
import { __name } from './chunk-5BKT4CS5.js';
|
|
3
3
|
|
|
4
4
|
// src/lib/emit-order-notification-trigger.ts
|
|
@@ -94,7 +94,7 @@ async function emitOrderNotificationTrigger(triggerKey, orderId, deps, extra) {
|
|
|
94
94
|
orderId
|
|
95
95
|
});
|
|
96
96
|
try {
|
|
97
|
-
const { dispatchOrderNotificationDirectly } = await import('./order-notification-dispatcher-
|
|
97
|
+
const { dispatchOrderNotificationDirectly } = await import('./order-notification-dispatcher-Z3MXNF4U.js');
|
|
98
98
|
await dispatchOrderNotificationDirectly(triggerKey, triggerPayload, deps.dataSource, deps.entityMap);
|
|
99
99
|
} catch (err) {
|
|
100
100
|
notifyLog.error("TRIGGER", "direct dispatch failed", {
|
|
@@ -1,5 +1,62 @@
|
|
|
1
1
|
import { __name } from './chunk-5BKT4CS5.js';
|
|
2
2
|
|
|
3
|
+
// src/plugins/sms/sms-queue.ts
|
|
4
|
+
var SMS_QUEUE_NAME = "sms";
|
|
5
|
+
function registerSmsQueueProcessor(cms) {
|
|
6
|
+
const queue = cms.getPlugin("queue");
|
|
7
|
+
const sms = cms.getPlugin("sms");
|
|
8
|
+
if (!queue || !sms || typeof sms.send !== "function") return;
|
|
9
|
+
queue.registerProcessor(SMS_QUEUE_NAME, async (data) => {
|
|
10
|
+
const payload = data;
|
|
11
|
+
if (!payload.to) return;
|
|
12
|
+
if (payload.templateKey?.trim()) {
|
|
13
|
+
await sms.send({
|
|
14
|
+
to: payload.to,
|
|
15
|
+
templateKey: payload.templateKey.trim(),
|
|
16
|
+
variables: payload.variables,
|
|
17
|
+
otpCode: payload.otpCode
|
|
18
|
+
});
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (!payload.body?.trim()) return;
|
|
22
|
+
await sms.send({
|
|
23
|
+
to: payload.to,
|
|
24
|
+
body: payload.body,
|
|
25
|
+
otpCode: payload.otpCode,
|
|
26
|
+
variables: payload.variables
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
__name(registerSmsQueueProcessor, "registerSmsQueueProcessor");
|
|
31
|
+
async function queueSms(cms, payload) {
|
|
32
|
+
const queue = cms.getPlugin("queue");
|
|
33
|
+
const sms = cms.getPlugin("sms");
|
|
34
|
+
if (queue) {
|
|
35
|
+
await queue.add(SMS_QUEUE_NAME, payload);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (sms && typeof sms.send === "function") {
|
|
39
|
+
if (payload.templateKey?.trim()) {
|
|
40
|
+
await sms.send({
|
|
41
|
+
to: payload.to,
|
|
42
|
+
templateKey: payload.templateKey.trim(),
|
|
43
|
+
variables: payload.variables,
|
|
44
|
+
otpCode: payload.otpCode
|
|
45
|
+
});
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (payload.body?.trim()) {
|
|
49
|
+
await sms.send({
|
|
50
|
+
to: payload.to,
|
|
51
|
+
body: payload.body,
|
|
52
|
+
otpCode: payload.otpCode,
|
|
53
|
+
variables: payload.variables
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
__name(queueSms, "queueSms");
|
|
59
|
+
|
|
3
60
|
// src/plugins/whatsapp/whatsapp-queue.ts
|
|
4
61
|
var WHATSAPP_QUEUE_NAME = "whatsapp";
|
|
5
62
|
function maskPhone(raw) {
|
|
@@ -80,4 +137,4 @@ async function queueWhatsApp(cms, payload) {
|
|
|
80
137
|
}
|
|
81
138
|
__name(queueWhatsApp, "queueWhatsApp");
|
|
82
139
|
|
|
83
|
-
export { queueWhatsApp, registerWhatsAppQueueProcessor };
|
|
140
|
+
export { queueSms, queueWhatsApp, registerSmsQueueProcessor, registerWhatsAppQueueProcessor };
|
|
@@ -65,6 +65,7 @@ var notifyLog = {
|
|
|
65
65
|
trigger: /* @__PURE__ */ chunkXHPRD45G_cjs.__name((message, data) => write("info", "TRIGGER", message, data), "trigger"),
|
|
66
66
|
email: /* @__PURE__ */ chunkXHPRD45G_cjs.__name((message, data) => write("info", "EMAIL", message, data), "email"),
|
|
67
67
|
whatsapp: /* @__PURE__ */ chunkXHPRD45G_cjs.__name((message, data) => write("info", "WHATSAPP", message, data), "whatsapp"),
|
|
68
|
+
sms: /* @__PURE__ */ chunkXHPRD45G_cjs.__name((message, data) => write("info", "SMS", message, data), "sms"),
|
|
68
69
|
push: /* @__PURE__ */ chunkXHPRD45G_cjs.__name((message, data) => write("info", "PUSH", message, data), "push"),
|
|
69
70
|
skip: /* @__PURE__ */ chunkXHPRD45G_cjs.__name((channel, message, data) => write("warn", `SKIP ${channel}`, message, data), "skip"),
|
|
70
71
|
error: /* @__PURE__ */ chunkXHPRD45G_cjs.__name((channel, message, data) => write("error", channel, message, data), "error")
|