@infuro/cms-core 1.0.71 → 1.0.72

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.
@@ -14433,26 +14433,51 @@ async function sendVendorOnboardEmails(input, deps) {
14433
14433
  chunkXHPRD45G_cjs.__name(sendVendorOnboardEmails, "sendVendorOnboardEmails");
14434
14434
 
14435
14435
  // src/lib/seed-vendor-roles.ts
14436
- async function insertRolePermissions(exec, vendorRoleId, permissions) {
14436
+ function appendValuesRow(params, values, cols) {
14437
+ const start = params.length;
14438
+ values.push(`(${cols.map((_, i) => `$${start + i + 1}`).join(", ")})`);
14439
+ params.push(...cols);
14440
+ }
14441
+ chunkXHPRD45G_cjs.__name(appendValuesRow, "appendValuesRow");
14442
+ async function insertRolePermissions(exec, rows) {
14443
+ if (rows.length === 0) return;
14444
+ const values = [];
14445
+ const params = [];
14446
+ for (const row of rows) {
14447
+ appendValuesRow(params, values, [
14448
+ row.vendorRoleId,
14449
+ row.entity,
14450
+ row.canCreate,
14451
+ row.canRead,
14452
+ row.canUpdate,
14453
+ row.canDelete
14454
+ ]);
14455
+ }
14456
+ await exec.query(`
14457
+ INSERT INTO "vendor_role_permissions"
14458
+ ("vendorRoleId", "entity", "canCreate", "canRead", "canUpdate", "canDelete")
14459
+ VALUES ${values.join(", ")}
14460
+ ON CONFLICT ("vendorRoleId", "entity") DO NOTHING
14461
+ `, params);
14462
+ }
14463
+ chunkXHPRD45G_cjs.__name(insertRolePermissions, "insertRolePermissions");
14464
+ function permissionRowsForRole(vendorRoleId, permissions) {
14465
+ const rows = [];
14437
14466
  for (const entity of chunkLCZZ3S4I_cjs.VENDOR_RBAC_ENTITIES) {
14438
14467
  const flags = permissions[entity];
14439
14468
  if (!flags) continue;
14440
- await exec.query(`
14441
- INSERT INTO "vendor_role_permissions"
14442
- ("vendorRoleId", "entity", "canCreate", "canRead", "canUpdate", "canDelete")
14443
- VALUES ($1, $2, $3, $4, $5, $6)
14444
- ON CONFLICT ("vendorRoleId", "entity") DO NOTHING
14445
- `, [
14469
+ rows.push({
14446
14470
  vendorRoleId,
14447
14471
  entity,
14448
- flags.canCreate,
14449
- flags.canRead,
14450
- flags.canUpdate,
14451
- flags.canDelete
14452
- ]);
14472
+ canCreate: flags.canCreate,
14473
+ canRead: flags.canRead,
14474
+ canUpdate: flags.canUpdate,
14475
+ canDelete: flags.canDelete
14476
+ });
14453
14477
  }
14478
+ return rows;
14454
14479
  }
14455
- chunkXHPRD45G_cjs.__name(insertRolePermissions, "insertRolePermissions");
14480
+ chunkXHPRD45G_cjs.__name(permissionRowsForRole, "permissionRowsForRole");
14456
14481
  async function seedVendorDefaultRoles(em, vendorId) {
14457
14482
  const exec = em;
14458
14483
  const existing = await exec.query(`SELECT id, name, "isOwnerRole" FROM "vendor_roles" WHERE "vendorId" = $1 AND "deleted" = false`, [
@@ -14473,29 +14498,40 @@ async function seedVendorDefaultRoles(em, vendorId) {
14473
14498
  viewerRoleId: viewerRoleId2
14474
14499
  };
14475
14500
  }
14476
- const roleIdsByName = {};
14477
- let ownerRoleId = 0;
14478
- let viewerRoleId = 0;
14501
+ const roleValues = [];
14502
+ const roleParams = [];
14479
14503
  for (const def of chunkLCZZ3S4I_cjs.DEFAULT_VENDOR_ROLE_DEFS) {
14480
- const inserted = await exec.query(`
14481
- INSERT INTO "vendor_roles"
14482
- ("vendorId", "name", "description", "isSystem", "isOwnerRole")
14483
- VALUES ($1, $2, $3, $4, $5)
14484
- RETURNING id
14485
- `, [
14504
+ appendValuesRow(roleParams, roleValues, [
14486
14505
  vendorId,
14487
14506
  def.name,
14488
14507
  def.description,
14489
14508
  def.isSystem,
14490
14509
  def.isOwnerRole
14491
14510
  ]);
14492
- const roleId = Number(inserted[0]?.id);
14511
+ }
14512
+ const inserted = await exec.query(`
14513
+ INSERT INTO "vendor_roles"
14514
+ ("vendorId", "name", "description", "isSystem", "isOwnerRole")
14515
+ VALUES ${roleValues.join(", ")}
14516
+ RETURNING id, name, "isOwnerRole"
14517
+ `, roleParams);
14518
+ const roleIdsByName = {};
14519
+ let ownerRoleId = 0;
14520
+ let viewerRoleId = 0;
14521
+ for (const r of inserted) {
14522
+ const id = Number(r.id);
14523
+ if (!id) continue;
14524
+ roleIdsByName[r.name] = id;
14525
+ if (r.isOwnerRole) ownerRoleId = id;
14526
+ if (r.name === chunkLCZZ3S4I_cjs.VENDOR_VIEWER_ROLE_NAME) viewerRoleId = id;
14527
+ }
14528
+ const permRows = [];
14529
+ for (const def of chunkLCZZ3S4I_cjs.DEFAULT_VENDOR_ROLE_DEFS) {
14530
+ const roleId = roleIdsByName[def.name];
14493
14531
  if (!roleId) continue;
14494
- roleIdsByName[def.name] = roleId;
14495
- if (def.isOwnerRole) ownerRoleId = roleId;
14496
- if (def.name === chunkLCZZ3S4I_cjs.VENDOR_VIEWER_ROLE_NAME) viewerRoleId = roleId;
14497
- await insertRolePermissions(exec, roleId, def.permissions);
14532
+ permRows.push(...permissionRowsForRole(roleId, def.permissions));
14498
14533
  }
14534
+ await insertRolePermissions(exec, permRows);
14499
14535
  return {
14500
14536
  roleIdsByName,
14501
14537
  ownerRoleId,
@@ -15355,25 +15391,25 @@ function createVendorOnboardHandlers(config) {
15355
15391
  vendorUserProfileId: personRow.id
15356
15392
  });
15357
15393
  }
15358
- if (entityMap.customer) {
15359
- try {
15360
- await chunkFNLF6G2N_cjs.ensureCustomerForUser(em, entityMap.customer, {
15361
- id: newUser.id,
15362
- name: userName,
15363
- email: userEmail,
15364
- phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15365
- }, {
15366
- phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15367
- });
15368
- } catch (customerErr) {
15369
- console.error("[vendor-onboard] ensureCustomerForUser skipped", customerErr);
15370
- }
15371
- }
15372
15394
  return {
15373
15395
  vendor,
15374
15396
  user: newUser
15375
15397
  };
15376
15398
  });
15399
+ if (entityMap.customer) {
15400
+ try {
15401
+ await chunkFNLF6G2N_cjs.ensureCustomerForUser(dataSource, entityMap.customer, {
15402
+ id: result.user.id,
15403
+ name: userName,
15404
+ email: userEmail,
15405
+ phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15406
+ }, {
15407
+ phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15408
+ });
15409
+ } catch (customerErr) {
15410
+ console.error("[vendor-onboard] ensureCustomerForUser skipped", customerErr);
15411
+ }
15412
+ }
15377
15413
  let inviteLink;
15378
15414
  const token = readVendorInviteToken(result.vendor.metadata);
15379
15415
  if (token) {