@infuro/cms-core 1.0.35 → 1.0.38

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 (69) hide show
  1. package/dist/admin.cjs +1222 -1024
  2. package/dist/admin.d.cts +6 -0
  3. package/dist/admin.d.ts +6 -0
  4. package/dist/admin.js +1224 -1026
  5. package/dist/api.cjs +40 -39
  6. package/dist/api.js +8 -7
  7. package/dist/auth.cjs +51 -51
  8. package/dist/auth.d.cts +3 -3
  9. package/dist/auth.d.ts +3 -3
  10. package/dist/auth.js +3 -3
  11. package/dist/chunk-22FFHLTO.cjs +2356 -0
  12. package/dist/{chunk-CNTSLED2.cjs → chunk-E6WVP7BK.cjs} +75 -14
  13. package/dist/chunk-HCIRL37O.js +21 -0
  14. package/dist/chunk-HT5DI3XW.cjs +82 -0
  15. package/dist/{chunk-EF2JBPDM.js → chunk-KFFB6EMZ.js} +9 -0
  16. package/dist/chunk-NNQBWDCI.js +2325 -0
  17. package/dist/{chunk-TIAEXJLI.cjs → chunk-OIGCAGH7.cjs} +7 -7
  18. package/dist/{chunk-4TRPKBKO.js → chunk-P7QCLE5W.js} +52 -24
  19. package/dist/{chunk-2XE4X74C.js → chunk-PYUXVU75.js} +7801 -6871
  20. package/dist/{chunk-EQPITOP6.js → chunk-SBRBR3VO.js} +70 -9
  21. package/dist/{chunk-N44BJZ4C.cjs → chunk-SPQFNIYJ.cjs} +9 -0
  22. package/dist/chunk-UCKN4BBY.cjs +24 -0
  23. package/dist/{chunk-6KPQWRFW.js → chunk-UXMDSNIG.js} +1 -1
  24. package/dist/{chunk-BGJAV67S.cjs → chunk-VJDUKAJ3.cjs} +8207 -7261
  25. package/dist/{chunk-3KPNTQBV.cjs → chunk-WMXPKKXU.cjs} +52 -23
  26. package/dist/chunk-X47PBV4I.js +79 -0
  27. package/dist/cli.cjs +4 -2
  28. package/dist/cli.js +4 -2
  29. package/dist/emit-order-notification-trigger-D2N3KFHL.cjs +16 -0
  30. package/dist/emit-order-notification-trigger-IVLWKKJL.js +3 -0
  31. package/dist/{event-order-defaults-DUGDVGJI.cjs → event-order-defaults-EMWBIGL3.cjs} +9 -9
  32. package/dist/{event-order-defaults-6E543227.js → event-order-defaults-SDRNAZHC.js} +1 -1
  33. package/dist/index.cjs +805 -1059
  34. package/dist/index.d.cts +834 -728
  35. package/dist/index.d.ts +834 -728
  36. package/dist/index.js +385 -724
  37. package/dist/migrations/1775500000000-RssFeedsAndArticles.ts +0 -1
  38. package/dist/migrations/1775700000000-JobSchedules.ts +0 -1
  39. package/dist/migrations/1781220000000-AddWhatsappTriggerBindings.ts +23 -0
  40. package/dist/migrations/1781230000000-AddOrderNotificationTriggers.ts +46 -0
  41. package/dist/migrations/1781240000000-DropEventOrderNotificationColumns.ts +29 -0
  42. package/dist/migrations/1781250000000-RemoveOrderRefundedTrigger.ts +36 -0
  43. package/dist/migrations/1781260000000-RenameWhatsappTriggerBindingsToOrderNotificationBindings.ts +92 -0
  44. package/dist/migrations/1781270000000-ComboVendorId.ts +58 -0
  45. package/dist/order-notification-dispatcher-RU7BTGGX.cjs +18 -0
  46. package/dist/order-notification-dispatcher-XWIJYDGA.js +5 -0
  47. package/dist/{rbac-debug-db-D7ME7QUY.cjs → rbac-debug-db-KHG4FJC3.cjs} +2 -2
  48. package/dist/{rbac-debug-db-MTCTVNNM.js → rbac-debug-db-QWHOENBR.js} +1 -1
  49. package/package.json +1 -1
  50. package/dist/chunk-46GKADYE.cjs +0 -84
  51. package/dist/chunk-7YIBMQDR.cjs +0 -86
  52. package/dist/chunk-J7XHLOLO.js +0 -830
  53. package/dist/chunk-JBRR5UYL.js +0 -87
  54. package/dist/chunk-JHF4YYRC.cjs +0 -188
  55. package/dist/chunk-PAMVINEX.cjs +0 -577
  56. package/dist/chunk-QM733NUK.js +0 -186
  57. package/dist/chunk-R73BKDRO.cjs +0 -90
  58. package/dist/chunk-TFUOHI37.cjs +0 -839
  59. package/dist/chunk-XDSNZUW7.js +0 -564
  60. package/dist/chunk-ZQ4X6OAU.js +0 -82
  61. package/dist/chunk-ZSVCP6N3.js +0 -83
  62. package/dist/email-FKR4FXFI.js +0 -5
  63. package/dist/email-KVKVPNCL.cjs +0 -58
  64. package/dist/event-order-notifications-5GSAOYVS.cjs +0 -27
  65. package/dist/event-order-notifications-IIIF23D5.js +0 -10
  66. package/dist/layout-36UFTHC5.cjs +0 -11
  67. package/dist/layout-AOBN26XG.js +0 -2
  68. package/dist/whatsapp-queue-3DXA4MXU.js +0 -2
  69. package/dist/whatsapp-queue-KG65MXD5.cjs +0 -15
@@ -1,4 +1,4 @@
1
- import { getPermissionableEntityKeys, ADMIN_GROUP_NAME, isSuperAdmin, permissionRowsToRecord, vendorPortalFlagsFromUser } from './chunk-4TRPKBKO.js';
1
+ import { getPermissionableEntityKeys, ADMIN_GROUP_NAME, isSuperAdmin, permissionRowsToRecord, vendorPortalFlagsFromUser } from './chunk-P7QCLE5W.js';
2
2
  import { __name } from './chunk-SHUYVCID.js';
3
3
  import { getToken } from 'next-auth/jwt';
4
4
  import _CredentialsProvider from 'next-auth/providers/credentials';
@@ -14,7 +14,6 @@ async function seedAdministratorPermissions(dataSource, entityMap) {
14
14
  deleted: false
15
15
  }
16
16
  });
17
- console.log("ADMIN GROUP", adminGroup);
18
17
  if (!adminGroup) return;
19
18
  const fullCrud = {
20
19
  canCreate: true,
@@ -29,7 +28,6 @@ async function seedAdministratorPermissions(dataSource, entityMap) {
29
28
  entity
30
29
  }
31
30
  });
32
- console.log("EXISTING", existing);
33
31
  if (existing) {
34
32
  existing.canCreate = true;
35
33
  existing.canRead = true;
@@ -51,17 +49,13 @@ __name(seedAdministratorPermissions, "seedAdministratorPermissions");
51
49
  var LOG_PREFIX = "[cms-auth]";
52
50
  function isAuthDebugEnabled() {
53
51
  const v = process.env.CMS_AUTH_DEBUG?.trim().toLowerCase();
54
- if (v === "1" || v === "true" || v === "yes") return true;
55
- if (v === "0" || v === "false" || v === "no") return false;
56
- return process.env.NODE_ENV === "development";
52
+ return v === "1" || v === "true" || v === "yes";
57
53
  }
58
54
  __name(isAuthDebugEnabled, "isAuthDebugEnabled");
59
55
  function isAuthDebugClientEnabled() {
60
56
  if (typeof window === "undefined") return false;
61
57
  const v = process.env.NEXT_PUBLIC_CMS_AUTH_DEBUG?.trim().toLowerCase();
62
- if (v === "1" || v === "true" || v === "yes") return true;
63
- if (v === "0" || v === "false" || v === "no") return false;
64
- return process.env.NODE_ENV === "development";
58
+ return v === "1" || v === "true" || v === "yes";
65
59
  }
66
60
  __name(isAuthDebugClientEnabled, "isAuthDebugClientEnabled");
67
61
  function logAuth(message, data) {
@@ -240,6 +234,62 @@ function createCmsMiddleware(config = {}) {
240
234
  }
241
235
  __name(createCmsMiddleware, "createCmsMiddleware");
242
236
  var CredentialsProvider = _CredentialsProvider.default ?? _CredentialsProvider;
237
+ function parseBooleanSetting(value) {
238
+ if (typeof value === "boolean") return value;
239
+ if (typeof value === "number") return value !== 0;
240
+ if (typeof value === "string") {
241
+ const normalized = value.trim().toLowerCase();
242
+ if ([
243
+ "true",
244
+ "1",
245
+ "yes",
246
+ "on"
247
+ ].includes(normalized)) return true;
248
+ if ([
249
+ "false",
250
+ "0",
251
+ "no",
252
+ "off"
253
+ ].includes(normalized)) return false;
254
+ }
255
+ if (value && typeof value === "object") {
256
+ const record = value;
257
+ const nested = parseBooleanSetting(record.value ?? record.enabled ?? record.isEnabled ?? record.active ?? record.state);
258
+ if (nested != null) return nested;
259
+ }
260
+ return null;
261
+ }
262
+ __name(parseBooleanSetting, "parseBooleanSetting");
263
+ async function checkMultiVendorEnabledViaSettingsApi() {
264
+ const FAIL_OPEN_DEFAULT = true;
265
+ const base = process.env.NEXTAUTH_URL?.replace(/\/$/, "");
266
+ if (!base) {
267
+ logAuth("multiVendorCheck: no NEXTAUTH_URL, defaulting", {
268
+ multiVendorEnabled: FAIL_OPEN_DEFAULT
269
+ });
270
+ return FAIL_OPEN_DEFAULT;
271
+ }
272
+ try {
273
+ const res = await fetch(`${base}/api/settings/multi_vendor`, {
274
+ cache: "no-store"
275
+ });
276
+ if (!res.ok) {
277
+ logAuth("multiVendorCheck: non-OK response, defaulting", {
278
+ status: res.status
279
+ });
280
+ return FAIL_OPEN_DEFAULT;
281
+ }
282
+ const data = await res.json();
283
+ const parsed = parseBooleanSetting(data?.enabled ?? data?.value ?? data?.isEnabled ?? data?.active ?? data?.state);
284
+ return parsed ?? FAIL_OPEN_DEFAULT;
285
+ } catch (err) {
286
+ logAuth("multiVendorCheck: fetch failed, defaulting", {
287
+ message: err instanceof Error ? err.message : String(err)
288
+ });
289
+ return FAIL_OPEN_DEFAULT;
290
+ }
291
+ }
292
+ __name(checkMultiVendorEnabledViaSettingsApi, "checkMultiVendorEnabledViaSettingsApi");
243
293
  function sessionUserFromNextAuthUser(user) {
244
294
  const g = user.group;
245
295
  const isRBACAdmin = isSuperAdmin({
@@ -383,6 +433,17 @@ function getNextAuthOptions(config) {
383
433
  return null;
384
434
  }
385
435
  const sessionUser = sessionUserFromNextAuthUser(user);
436
+ if (sessionUser.isVendorPortal && !sessionUser.isRBACAdmin) {
437
+ const multiVendorEnabled = await checkMultiVendorEnabledViaSettingsApi();
438
+ if (!multiVendorEnabled) {
439
+ logAuth("authorize(credentials) rejected", {
440
+ reason: "multi_vendor_disabled",
441
+ email,
442
+ userId: user.id
443
+ });
444
+ return null;
445
+ }
446
+ }
386
447
  logAuth("authorize(credentials) ok", summarizeSessionUserForLog(sessionUser));
387
448
  return sessionUser;
388
449
  } catch (err) {
@@ -86,12 +86,18 @@ async function resolveEventOrderTemplate(channel, getRow, eventOverride) {
86
86
  let subject = def.subject;
87
87
  let body = def.body;
88
88
  let externalTemplateRef = def.externalTemplateRef;
89
+ let name;
90
+ let language;
91
+ let paramOrder;
89
92
  let enabled = true;
90
93
  if (row) {
91
94
  enabled = row.enabled !== false;
92
95
  if (row.subject?.trim()) subject = row.subject.trim();
93
96
  if (row.body.trim()) body = row.body;
94
97
  if (row.externalTemplateRef?.trim()) externalTemplateRef = row.externalTemplateRef.trim();
98
+ name = row.name?.trim() || void 0;
99
+ language = row.language?.trim() || void 0;
100
+ paramOrder = row.paramOrder?.length ? row.paramOrder : void 0;
95
101
  }
96
102
  if (eventOverride) {
97
103
  if (eventOverride.subject?.trim()) subject = eventOverride.subject.trim();
@@ -104,6 +110,9 @@ async function resolveEventOrderTemplate(channel, getRow, eventOverride) {
104
110
  subject,
105
111
  body,
106
112
  externalTemplateRef: externalTemplateRef?.trim() || void 0,
113
+ name,
114
+ language,
115
+ paramOrder,
107
116
  enabled
108
117
  };
109
118
  }
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
4
+ var events = require('events');
5
+
6
+ var KNOWN_NOTIFICATION_TRIGGERS = {
7
+ ORDER_PLACED: "order_placed",
8
+ ORDER_CANCELLED: "order_cancelled"
9
+ };
10
+ var NotificationTriggerEmitter = class NotificationTriggerEmitter2 extends events.EventEmitter {
11
+ static {
12
+ chunkUSNT2KNT_cjs.__name(this, "NotificationTriggerEmitter");
13
+ }
14
+ emitTrigger(triggerKey, payload) {
15
+ this.emit("__any__", triggerKey, payload);
16
+ }
17
+ onAnyTrigger(listener) {
18
+ this.on("__any__", listener);
19
+ }
20
+ };
21
+ var notificationTriggerEmitter = new NotificationTriggerEmitter();
22
+
23
+ exports.KNOWN_NOTIFICATION_TRIGGERS = KNOWN_NOTIFICATION_TRIGGERS;
24
+ exports.notificationTriggerEmitter = notificationTriggerEmitter;
@@ -1,4 +1,4 @@
1
- import { explainSessionEntityAccess, isVendorPortalUser, logRbac } from './chunk-4TRPKBKO.js';
1
+ import { explainSessionEntityAccess, isVendorPortalUser, logRbac } from './chunk-P7QCLE5W.js';
2
2
  import { __name } from './chunk-SHUYVCID.js';
3
3
 
4
4
  // src/auth/helpers.ts