@infuro/cms-core 1.0.70 → 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.
- package/dist/admin.cjs +20 -28
- package/dist/admin.d.cts +1 -0
- package/dist/admin.d.ts +1 -0
- package/dist/admin.js +20 -28
- package/dist/api.cjs +33 -33
- package/dist/api.js +1 -1
- package/dist/{chunk-7NQMGB2S.js → chunk-43UVXBEH.js} +77 -41
- package/dist/{chunk-OP624LWU.cjs → chunk-SRGDHASW.cjs} +77 -41
- package/dist/index.cjs +206 -206
- package/dist/index.js +2 -2
- package/dist/migrations/helpers/vendor-role-seed.ts +65 -27
- package/package.json +1 -1
|
@@ -14423,26 +14423,51 @@ async function sendVendorOnboardEmails(input, deps) {
|
|
|
14423
14423
|
__name(sendVendorOnboardEmails, "sendVendorOnboardEmails");
|
|
14424
14424
|
|
|
14425
14425
|
// src/lib/seed-vendor-roles.ts
|
|
14426
|
-
|
|
14426
|
+
function appendValuesRow(params, values, cols) {
|
|
14427
|
+
const start = params.length;
|
|
14428
|
+
values.push(`(${cols.map((_, i) => `$${start + i + 1}`).join(", ")})`);
|
|
14429
|
+
params.push(...cols);
|
|
14430
|
+
}
|
|
14431
|
+
__name(appendValuesRow, "appendValuesRow");
|
|
14432
|
+
async function insertRolePermissions(exec, rows) {
|
|
14433
|
+
if (rows.length === 0) return;
|
|
14434
|
+
const values = [];
|
|
14435
|
+
const params = [];
|
|
14436
|
+
for (const row of rows) {
|
|
14437
|
+
appendValuesRow(params, values, [
|
|
14438
|
+
row.vendorRoleId,
|
|
14439
|
+
row.entity,
|
|
14440
|
+
row.canCreate,
|
|
14441
|
+
row.canRead,
|
|
14442
|
+
row.canUpdate,
|
|
14443
|
+
row.canDelete
|
|
14444
|
+
]);
|
|
14445
|
+
}
|
|
14446
|
+
await exec.query(`
|
|
14447
|
+
INSERT INTO "vendor_role_permissions"
|
|
14448
|
+
("vendorRoleId", "entity", "canCreate", "canRead", "canUpdate", "canDelete")
|
|
14449
|
+
VALUES ${values.join(", ")}
|
|
14450
|
+
ON CONFLICT ("vendorRoleId", "entity") DO NOTHING
|
|
14451
|
+
`, params);
|
|
14452
|
+
}
|
|
14453
|
+
__name(insertRolePermissions, "insertRolePermissions");
|
|
14454
|
+
function permissionRowsForRole(vendorRoleId, permissions) {
|
|
14455
|
+
const rows = [];
|
|
14427
14456
|
for (const entity of VENDOR_RBAC_ENTITIES) {
|
|
14428
14457
|
const flags = permissions[entity];
|
|
14429
14458
|
if (!flags) continue;
|
|
14430
|
-
|
|
14431
|
-
INSERT INTO "vendor_role_permissions"
|
|
14432
|
-
("vendorRoleId", "entity", "canCreate", "canRead", "canUpdate", "canDelete")
|
|
14433
|
-
VALUES ($1, $2, $3, $4, $5, $6)
|
|
14434
|
-
ON CONFLICT ("vendorRoleId", "entity") DO NOTHING
|
|
14435
|
-
`, [
|
|
14459
|
+
rows.push({
|
|
14436
14460
|
vendorRoleId,
|
|
14437
14461
|
entity,
|
|
14438
|
-
flags.canCreate,
|
|
14439
|
-
flags.canRead,
|
|
14440
|
-
flags.canUpdate,
|
|
14441
|
-
flags.canDelete
|
|
14442
|
-
|
|
14462
|
+
canCreate: flags.canCreate,
|
|
14463
|
+
canRead: flags.canRead,
|
|
14464
|
+
canUpdate: flags.canUpdate,
|
|
14465
|
+
canDelete: flags.canDelete
|
|
14466
|
+
});
|
|
14443
14467
|
}
|
|
14468
|
+
return rows;
|
|
14444
14469
|
}
|
|
14445
|
-
__name(
|
|
14470
|
+
__name(permissionRowsForRole, "permissionRowsForRole");
|
|
14446
14471
|
async function seedVendorDefaultRoles(em, vendorId) {
|
|
14447
14472
|
const exec = em;
|
|
14448
14473
|
const existing = await exec.query(`SELECT id, name, "isOwnerRole" FROM "vendor_roles" WHERE "vendorId" = $1 AND "deleted" = false`, [
|
|
@@ -14463,29 +14488,40 @@ async function seedVendorDefaultRoles(em, vendorId) {
|
|
|
14463
14488
|
viewerRoleId: viewerRoleId2
|
|
14464
14489
|
};
|
|
14465
14490
|
}
|
|
14466
|
-
const
|
|
14467
|
-
|
|
14468
|
-
let viewerRoleId = 0;
|
|
14491
|
+
const roleValues = [];
|
|
14492
|
+
const roleParams = [];
|
|
14469
14493
|
for (const def of DEFAULT_VENDOR_ROLE_DEFS) {
|
|
14470
|
-
|
|
14471
|
-
INSERT INTO "vendor_roles"
|
|
14472
|
-
("vendorId", "name", "description", "isSystem", "isOwnerRole")
|
|
14473
|
-
VALUES ($1, $2, $3, $4, $5)
|
|
14474
|
-
RETURNING id
|
|
14475
|
-
`, [
|
|
14494
|
+
appendValuesRow(roleParams, roleValues, [
|
|
14476
14495
|
vendorId,
|
|
14477
14496
|
def.name,
|
|
14478
14497
|
def.description,
|
|
14479
14498
|
def.isSystem,
|
|
14480
14499
|
def.isOwnerRole
|
|
14481
14500
|
]);
|
|
14482
|
-
|
|
14501
|
+
}
|
|
14502
|
+
const inserted = await exec.query(`
|
|
14503
|
+
INSERT INTO "vendor_roles"
|
|
14504
|
+
("vendorId", "name", "description", "isSystem", "isOwnerRole")
|
|
14505
|
+
VALUES ${roleValues.join(", ")}
|
|
14506
|
+
RETURNING id, name, "isOwnerRole"
|
|
14507
|
+
`, roleParams);
|
|
14508
|
+
const roleIdsByName = {};
|
|
14509
|
+
let ownerRoleId = 0;
|
|
14510
|
+
let viewerRoleId = 0;
|
|
14511
|
+
for (const r of inserted) {
|
|
14512
|
+
const id = Number(r.id);
|
|
14513
|
+
if (!id) continue;
|
|
14514
|
+
roleIdsByName[r.name] = id;
|
|
14515
|
+
if (r.isOwnerRole) ownerRoleId = id;
|
|
14516
|
+
if (r.name === VENDOR_VIEWER_ROLE_NAME) viewerRoleId = id;
|
|
14517
|
+
}
|
|
14518
|
+
const permRows = [];
|
|
14519
|
+
for (const def of DEFAULT_VENDOR_ROLE_DEFS) {
|
|
14520
|
+
const roleId = roleIdsByName[def.name];
|
|
14483
14521
|
if (!roleId) continue;
|
|
14484
|
-
|
|
14485
|
-
if (def.isOwnerRole) ownerRoleId = roleId;
|
|
14486
|
-
if (def.name === VENDOR_VIEWER_ROLE_NAME) viewerRoleId = roleId;
|
|
14487
|
-
await insertRolePermissions(exec, roleId, def.permissions);
|
|
14522
|
+
permRows.push(...permissionRowsForRole(roleId, def.permissions));
|
|
14488
14523
|
}
|
|
14524
|
+
await insertRolePermissions(exec, permRows);
|
|
14489
14525
|
return {
|
|
14490
14526
|
roleIdsByName,
|
|
14491
14527
|
ownerRoleId,
|
|
@@ -15345,25 +15381,25 @@ function createVendorOnboardHandlers(config) {
|
|
|
15345
15381
|
vendorUserProfileId: personRow.id
|
|
15346
15382
|
});
|
|
15347
15383
|
}
|
|
15348
|
-
if (entityMap.customer) {
|
|
15349
|
-
try {
|
|
15350
|
-
await ensureCustomerForUser(em, entityMap.customer, {
|
|
15351
|
-
id: newUser.id,
|
|
15352
|
-
name: userName,
|
|
15353
|
-
email: userEmail,
|
|
15354
|
-
phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
|
|
15355
|
-
}, {
|
|
15356
|
-
phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
|
|
15357
|
-
});
|
|
15358
|
-
} catch (customerErr) {
|
|
15359
|
-
console.error("[vendor-onboard] ensureCustomerForUser skipped", customerErr);
|
|
15360
|
-
}
|
|
15361
|
-
}
|
|
15362
15384
|
return {
|
|
15363
15385
|
vendor,
|
|
15364
15386
|
user: newUser
|
|
15365
15387
|
};
|
|
15366
15388
|
});
|
|
15389
|
+
if (entityMap.customer) {
|
|
15390
|
+
try {
|
|
15391
|
+
await ensureCustomerForUser(dataSource, entityMap.customer, {
|
|
15392
|
+
id: result.user.id,
|
|
15393
|
+
name: userName,
|
|
15394
|
+
email: userEmail,
|
|
15395
|
+
phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
|
|
15396
|
+
}, {
|
|
15397
|
+
phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
|
|
15398
|
+
});
|
|
15399
|
+
} catch (customerErr) {
|
|
15400
|
+
console.error("[vendor-onboard] ensureCustomerForUser skipped", customerErr);
|
|
15401
|
+
}
|
|
15402
|
+
}
|
|
15367
15403
|
let inviteLink;
|
|
15368
15404
|
const token = readVendorInviteToken(result.vendor.metadata);
|
|
15369
15405
|
if (token) {
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
|
14477
|
-
|
|
14478
|
-
let viewerRoleId = 0;
|
|
14501
|
+
const roleValues = [];
|
|
14502
|
+
const roleParams = [];
|
|
14479
14503
|
for (const def of chunkLCZZ3S4I_cjs.DEFAULT_VENDOR_ROLE_DEFS) {
|
|
14480
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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) {
|