@infuro/cms-core 1.0.40 → 1.0.41
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 +107 -107
- package/dist/admin.js +107 -107
- package/dist/api.cjs +32 -32
- package/dist/api.js +1 -1
- package/dist/{chunk-RCMUL6SZ.js → chunk-EG4ICILK.js} +32 -70
- package/dist/{chunk-T7GCOO5Y.cjs → chunk-QU554KAZ.cjs} +32 -70
- package/dist/index.cjs +189 -189
- package/dist/index.js +2 -2
- package/package.json +2 -2
package/dist/api.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkQU554KAZ_cjs = require('./chunk-QU554KAZ.cjs');
|
|
4
4
|
require('./chunk-22FFHLTO.cjs');
|
|
5
5
|
require('./chunk-UCKN4BBY.cjs');
|
|
6
6
|
require('./chunk-7NMT3GBR.cjs');
|
|
@@ -20,127 +20,127 @@ require('./chunk-USNT2KNT.cjs');
|
|
|
20
20
|
|
|
21
21
|
Object.defineProperty(exports, "createAnalyticsHandlers", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkQU554KAZ_cjs.createAnalyticsHandlers; }
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "createBlogBySlugHandler", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkQU554KAZ_cjs.createBlogBySlugHandler; }
|
|
28
28
|
});
|
|
29
29
|
Object.defineProperty(exports, "createChangePasswordHandler", {
|
|
30
30
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
31
|
+
get: function () { return chunkQU554KAZ_cjs.createChangePasswordHandler; }
|
|
32
32
|
});
|
|
33
33
|
Object.defineProperty(exports, "createCmsApiHandler", {
|
|
34
34
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
35
|
+
get: function () { return chunkQU554KAZ_cjs.createCmsApiHandler; }
|
|
36
36
|
});
|
|
37
37
|
Object.defineProperty(exports, "createCrudByIdHandler", {
|
|
38
38
|
enumerable: true,
|
|
39
|
-
get: function () { return
|
|
39
|
+
get: function () { return chunkQU554KAZ_cjs.createCrudByIdHandler; }
|
|
40
40
|
});
|
|
41
41
|
Object.defineProperty(exports, "createCrudHandler", {
|
|
42
42
|
enumerable: true,
|
|
43
|
-
get: function () { return
|
|
43
|
+
get: function () { return chunkQU554KAZ_cjs.createCrudHandler; }
|
|
44
44
|
});
|
|
45
45
|
Object.defineProperty(exports, "createDashboardStatsHandler", {
|
|
46
46
|
enumerable: true,
|
|
47
|
-
get: function () { return
|
|
47
|
+
get: function () { return chunkQU554KAZ_cjs.createDashboardStatsHandler; }
|
|
48
48
|
});
|
|
49
49
|
Object.defineProperty(exports, "createEcommerceAnalyticsHandler", {
|
|
50
50
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
51
|
+
get: function () { return chunkQU554KAZ_cjs.createEcommerceAnalyticsHandler; }
|
|
52
52
|
});
|
|
53
53
|
Object.defineProperty(exports, "createForgotPasswordHandler", {
|
|
54
54
|
enumerable: true,
|
|
55
|
-
get: function () { return
|
|
55
|
+
get: function () { return chunkQU554KAZ_cjs.createForgotPasswordHandler; }
|
|
56
56
|
});
|
|
57
57
|
Object.defineProperty(exports, "createFormBySlugHandler", {
|
|
58
58
|
enumerable: true,
|
|
59
|
-
get: function () { return
|
|
59
|
+
get: function () { return chunkQU554KAZ_cjs.createFormBySlugHandler; }
|
|
60
60
|
});
|
|
61
61
|
Object.defineProperty(exports, "createInviteAcceptHandler", {
|
|
62
62
|
enumerable: true,
|
|
63
|
-
get: function () { return
|
|
63
|
+
get: function () { return chunkQU554KAZ_cjs.createInviteAcceptHandler; }
|
|
64
64
|
});
|
|
65
65
|
Object.defineProperty(exports, "createJobScheduleHandlers", {
|
|
66
66
|
enumerable: true,
|
|
67
|
-
get: function () { return
|
|
67
|
+
get: function () { return chunkQU554KAZ_cjs.createJobScheduleHandlers; }
|
|
68
68
|
});
|
|
69
69
|
Object.defineProperty(exports, "createLlmAgentKnowledgeHandlers", {
|
|
70
70
|
enumerable: true,
|
|
71
|
-
get: function () { return
|
|
71
|
+
get: function () { return chunkQU554KAZ_cjs.createLlmAgentKnowledgeHandlers; }
|
|
72
72
|
});
|
|
73
73
|
Object.defineProperty(exports, "createMediaZipExtractHandler", {
|
|
74
74
|
enumerable: true,
|
|
75
|
-
get: function () { return
|
|
75
|
+
get: function () { return chunkQU554KAZ_cjs.createMediaZipExtractHandler; }
|
|
76
76
|
});
|
|
77
77
|
Object.defineProperty(exports, "createSetPasswordHandler", {
|
|
78
78
|
enumerable: true,
|
|
79
|
-
get: function () { return
|
|
79
|
+
get: function () { return chunkQU554KAZ_cjs.createSetPasswordHandler; }
|
|
80
80
|
});
|
|
81
81
|
Object.defineProperty(exports, "createSettingsApiHandlers", {
|
|
82
82
|
enumerable: true,
|
|
83
|
-
get: function () { return
|
|
83
|
+
get: function () { return chunkQU554KAZ_cjs.createSettingsApiHandlers; }
|
|
84
84
|
});
|
|
85
85
|
Object.defineProperty(exports, "createStorefrontApiHandler", {
|
|
86
86
|
enumerable: true,
|
|
87
|
-
get: function () { return
|
|
87
|
+
get: function () { return chunkQU554KAZ_cjs.createStorefrontApiHandler; }
|
|
88
88
|
});
|
|
89
89
|
Object.defineProperty(exports, "createUploadHandler", {
|
|
90
90
|
enumerable: true,
|
|
91
|
-
get: function () { return
|
|
91
|
+
get: function () { return chunkQU554KAZ_cjs.createUploadHandler; }
|
|
92
92
|
});
|
|
93
93
|
Object.defineProperty(exports, "createUserAuthApiRouter", {
|
|
94
94
|
enumerable: true,
|
|
95
|
-
get: function () { return
|
|
95
|
+
get: function () { return chunkQU554KAZ_cjs.createUserAuthApiRouter; }
|
|
96
96
|
});
|
|
97
97
|
Object.defineProperty(exports, "createUserAvatarHandler", {
|
|
98
98
|
enumerable: true,
|
|
99
|
-
get: function () { return
|
|
99
|
+
get: function () { return chunkQU554KAZ_cjs.createUserAvatarHandler; }
|
|
100
100
|
});
|
|
101
101
|
Object.defineProperty(exports, "createUserProfileHandler", {
|
|
102
102
|
enumerable: true,
|
|
103
|
-
get: function () { return
|
|
103
|
+
get: function () { return chunkQU554KAZ_cjs.createUserProfileHandler; }
|
|
104
104
|
});
|
|
105
105
|
Object.defineProperty(exports, "createUsersApiHandlers", {
|
|
106
106
|
enumerable: true,
|
|
107
|
-
get: function () { return
|
|
107
|
+
get: function () { return chunkQU554KAZ_cjs.createUsersApiHandlers; }
|
|
108
108
|
});
|
|
109
109
|
Object.defineProperty(exports, "createVendorDashboardHandler", {
|
|
110
110
|
enumerable: true,
|
|
111
|
-
get: function () { return
|
|
111
|
+
get: function () { return chunkQU554KAZ_cjs.createVendorDashboardHandler; }
|
|
112
112
|
});
|
|
113
113
|
Object.defineProperty(exports, "createVendorOnboardHandlers", {
|
|
114
114
|
enumerable: true,
|
|
115
|
-
get: function () { return
|
|
115
|
+
get: function () { return chunkQU554KAZ_cjs.createVendorOnboardHandlers; }
|
|
116
116
|
});
|
|
117
117
|
Object.defineProperty(exports, "getPublicSettingsGroup", {
|
|
118
118
|
enumerable: true,
|
|
119
|
-
get: function () { return
|
|
119
|
+
get: function () { return chunkQU554KAZ_cjs.getPublicSettingsGroup; }
|
|
120
120
|
});
|
|
121
121
|
Object.defineProperty(exports, "mergeGuardrailsIntoSystemPrompt", {
|
|
122
122
|
enumerable: true,
|
|
123
|
-
get: function () { return
|
|
123
|
+
get: function () { return chunkQU554KAZ_cjs.mergeGuardrailsIntoSystemPrompt; }
|
|
124
124
|
});
|
|
125
125
|
Object.defineProperty(exports, "parseLlmAgentValidationRules", {
|
|
126
126
|
enumerable: true,
|
|
127
|
-
get: function () { return
|
|
127
|
+
get: function () { return chunkQU554KAZ_cjs.parseLlmAgentValidationRules; }
|
|
128
128
|
});
|
|
129
129
|
Object.defineProperty(exports, "simpleDecrypt", {
|
|
130
130
|
enumerable: true,
|
|
131
|
-
get: function () { return
|
|
131
|
+
get: function () { return chunkQU554KAZ_cjs.simpleDecrypt; }
|
|
132
132
|
});
|
|
133
133
|
Object.defineProperty(exports, "simpleEncrypt", {
|
|
134
134
|
enumerable: true,
|
|
135
|
-
get: function () { return
|
|
135
|
+
get: function () { return chunkQU554KAZ_cjs.simpleEncrypt; }
|
|
136
136
|
});
|
|
137
137
|
Object.defineProperty(exports, "validateUserMessageAgainstAgentRules", {
|
|
138
138
|
enumerable: true,
|
|
139
|
-
get: function () { return
|
|
139
|
+
get: function () { return chunkQU554KAZ_cjs.validateUserMessageAgainstAgentRules; }
|
|
140
140
|
});
|
|
141
141
|
Object.defineProperty(exports, "validateUserMessageAgainstStructuredRules", {
|
|
142
142
|
enumerable: true,
|
|
143
|
-
get: function () { return
|
|
143
|
+
get: function () { return chunkQU554KAZ_cjs.validateUserMessageAgainstStructuredRules; }
|
|
144
144
|
});
|
|
145
145
|
Object.defineProperty(exports, "createCmsAuthBundle", {
|
|
146
146
|
enumerable: true,
|
package/dist/api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-
|
|
1
|
+
export { createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-EG4ICILK.js';
|
|
2
2
|
import './chunk-NNQBWDCI.js';
|
|
3
3
|
import './chunk-HCIRL37O.js';
|
|
4
4
|
import './chunk-JXF23MPG.js';
|
|
@@ -12256,6 +12256,13 @@ function createVendorOnboardHandlers(config) {
|
|
|
12256
12256
|
status: 400
|
|
12257
12257
|
});
|
|
12258
12258
|
}
|
|
12259
|
+
if (body.activation === "password" || body.user?.password) {
|
|
12260
|
+
return json({
|
|
12261
|
+
error: "Setting a password during vendor onboard is no longer supported. Create the vendor, then send an invite or copy the invite link so the owner can set their own password."
|
|
12262
|
+
}, {
|
|
12263
|
+
status: 400
|
|
12264
|
+
});
|
|
12265
|
+
}
|
|
12259
12266
|
const profile = parseVendorProfileFromBody(body.vendor, {
|
|
12260
12267
|
defaultRegistrationStatus: "approved"
|
|
12261
12268
|
});
|
|
@@ -12265,34 +12272,8 @@ function createVendorOnboardHandlers(config) {
|
|
|
12265
12272
|
}, {
|
|
12266
12273
|
status: 400
|
|
12267
12274
|
});
|
|
12268
|
-
const activation =
|
|
12269
|
-
const
|
|
12270
|
-
let ownerPasswordHash = null;
|
|
12271
|
-
if (activation === "password") {
|
|
12272
|
-
const plain = body.user?.password?.trim();
|
|
12273
|
-
if (!plain) {
|
|
12274
|
-
return json({
|
|
12275
|
-
error: "Password is required when activating with a set password"
|
|
12276
|
-
}, {
|
|
12277
|
-
status: 400
|
|
12278
|
-
});
|
|
12279
|
-
}
|
|
12280
|
-
if (plain.length < minPasswordLength) {
|
|
12281
|
-
return json({
|
|
12282
|
-
error: `Password must be at least ${minPasswordLength} characters`
|
|
12283
|
-
}, {
|
|
12284
|
-
status: 400
|
|
12285
|
-
});
|
|
12286
|
-
}
|
|
12287
|
-
if (!hashPassword) {
|
|
12288
|
-
return json({
|
|
12289
|
-
error: "Password hashing is not configured on the server"
|
|
12290
|
-
}, {
|
|
12291
|
-
status: 501
|
|
12292
|
-
});
|
|
12293
|
-
}
|
|
12294
|
-
ownerPasswordHash = await hashPassword(plain);
|
|
12295
|
-
}
|
|
12275
|
+
const activation = "invite";
|
|
12276
|
+
const ownerPasswordHash = null;
|
|
12296
12277
|
const slug = trimOrNull(body.vendor?.slug) || slugify(vendorName);
|
|
12297
12278
|
if (!slug) return json({
|
|
12298
12279
|
error: "Could not derive vendor slug"
|
|
@@ -12349,7 +12330,7 @@ function createVendorOnboardHandlers(config) {
|
|
|
12349
12330
|
email: userEmail,
|
|
12350
12331
|
phone: ownerPhone,
|
|
12351
12332
|
password: ownerPasswordHash,
|
|
12352
|
-
blocked:
|
|
12333
|
+
blocked: true,
|
|
12353
12334
|
groupId: ownerGroup.id,
|
|
12354
12335
|
adminAccess: true,
|
|
12355
12336
|
updatedAt: /* @__PURE__ */ new Date()
|
|
@@ -12366,15 +12347,14 @@ function createVendorOnboardHandlers(config) {
|
|
|
12366
12347
|
email: userEmail,
|
|
12367
12348
|
phone: ownerPhone,
|
|
12368
12349
|
password: ownerPasswordHash,
|
|
12369
|
-
blocked:
|
|
12350
|
+
blocked: true,
|
|
12370
12351
|
groupId: ownerGroup.id,
|
|
12371
12352
|
adminAccess: true
|
|
12372
12353
|
}));
|
|
12373
|
-
const
|
|
12354
|
+
const metadata = applyRotatingVendorInvite(buildVendorMetadata(null, {
|
|
12374
12355
|
ownerDesignation,
|
|
12375
12356
|
termsAccepted: true
|
|
12376
|
-
});
|
|
12377
|
-
const metadata = activation === "invite" ? applyRotatingVendorInvite(baseMetadata) : baseMetadata;
|
|
12357
|
+
}));
|
|
12378
12358
|
const vendor = await vendorRepo.save(vendorRepo.create({
|
|
12379
12359
|
name: vendorName,
|
|
12380
12360
|
slug,
|
|
@@ -12442,39 +12422,14 @@ function createVendorOnboardHandlers(config) {
|
|
|
12442
12422
|
};
|
|
12443
12423
|
});
|
|
12444
12424
|
let inviteLink;
|
|
12445
|
-
|
|
12446
|
-
if (
|
|
12447
|
-
|
|
12448
|
-
if (token) {
|
|
12449
|
-
inviteLink = buildVendorInviteLink(baseUrl, token);
|
|
12450
|
-
}
|
|
12451
|
-
}
|
|
12452
|
-
if (sendOwnerEmail) {
|
|
12453
|
-
emailSent = await trySendVendorOnboardEmails({
|
|
12454
|
-
vendorName,
|
|
12455
|
-
vendorSlug: slug,
|
|
12456
|
-
ownerName: userName,
|
|
12457
|
-
ownerEmail: userEmail,
|
|
12458
|
-
activation,
|
|
12459
|
-
inviteLink,
|
|
12460
|
-
sendToOwner: true
|
|
12461
|
-
});
|
|
12462
|
-
} else if (getCms) {
|
|
12463
|
-
await trySendVendorOnboardEmails({
|
|
12464
|
-
vendorName,
|
|
12465
|
-
vendorSlug: slug,
|
|
12466
|
-
ownerName: userName,
|
|
12467
|
-
ownerEmail: userEmail,
|
|
12468
|
-
activation,
|
|
12469
|
-
inviteLink,
|
|
12470
|
-
sendToOwner: false
|
|
12471
|
-
});
|
|
12425
|
+
const token = readVendorInviteToken(result.vendor.metadata);
|
|
12426
|
+
if (token) {
|
|
12427
|
+
inviteLink = buildVendorInviteLink(baseUrl, token);
|
|
12472
12428
|
}
|
|
12473
|
-
const message = activation === "password" ? emailSent ? "Vendor onboarded successfully. Welcome email sent to the owner." : sendOwnerEmail ? "Vendor onboarded successfully. Owner can sign in with the password you set (welcome email may not have been sent \u2014 check email plugin)." : "Vendor onboarded successfully. Owner can sign in with the password you set." : emailSent ? "Vendor onboarded successfully. Invite email sent." : sendOwnerEmail ? "Vendor onboarded successfully. Invite link created (email may not have been sent \u2014 check email plugin)." : "Vendor onboarded successfully. Share the invite link with the owner.";
|
|
12474
12429
|
return json({
|
|
12475
|
-
message,
|
|
12430
|
+
message: "Vendor created successfully.",
|
|
12476
12431
|
activation,
|
|
12477
|
-
emailSent,
|
|
12432
|
+
emailSent: false,
|
|
12478
12433
|
vendor: result.vendor,
|
|
12479
12434
|
user: {
|
|
12480
12435
|
id: result.user.id,
|
|
@@ -12509,9 +12464,11 @@ function createVendorOnboardHandlers(config) {
|
|
|
12509
12464
|
});
|
|
12510
12465
|
}
|
|
12511
12466
|
let sendEmail = true;
|
|
12467
|
+
let rotate = true;
|
|
12512
12468
|
try {
|
|
12513
12469
|
const body = await req.json().catch(() => ({}));
|
|
12514
12470
|
if (body.sendEmail === false) sendEmail = false;
|
|
12471
|
+
if (body.rotate === false) rotate = false;
|
|
12515
12472
|
} catch {
|
|
12516
12473
|
}
|
|
12517
12474
|
try {
|
|
@@ -12577,12 +12534,16 @@ function createVendorOnboardHandlers(config) {
|
|
|
12577
12534
|
status: 400
|
|
12578
12535
|
});
|
|
12579
12536
|
}
|
|
12580
|
-
const
|
|
12581
|
-
|
|
12582
|
-
|
|
12583
|
-
|
|
12584
|
-
|
|
12585
|
-
|
|
12537
|
+
const nextMetadata = rotate ? applyRotatingVendorInvite(v.metadata) : {
|
|
12538
|
+
...v.metadata ?? {}
|
|
12539
|
+
};
|
|
12540
|
+
if (rotate || v.inviteStatus !== "pending") {
|
|
12541
|
+
await vendorRepo.update(vendorId, {
|
|
12542
|
+
metadata: nextMetadata,
|
|
12543
|
+
inviteStatus: "pending"
|
|
12544
|
+
});
|
|
12545
|
+
}
|
|
12546
|
+
const token = readVendorInviteToken(nextMetadata);
|
|
12586
12547
|
if (!token) {
|
|
12587
12548
|
return json({
|
|
12588
12549
|
error: "Failed to generate invite token"
|
|
@@ -12603,8 +12564,9 @@ function createVendorOnboardHandlers(config) {
|
|
|
12603
12564
|
sendToOwner: true
|
|
12604
12565
|
});
|
|
12605
12566
|
}
|
|
12567
|
+
const rotatedNote = rotate ? " Previous invite link is no longer valid." : "";
|
|
12606
12568
|
return json({
|
|
12607
|
-
message: emailSent ?
|
|
12569
|
+
message: emailSent ? `Invite email sent.${rotatedNote}` : sendEmail ? `Invite link ready (email may not have been sent \u2014 check email plugin).${rotatedNote}` : rotate ? "New invite link created. Previous invite link is no longer valid." : "Invite link ready.",
|
|
12608
12570
|
emailSent,
|
|
12609
12571
|
inviteLink,
|
|
12610
12572
|
inviteStatus: "pending"
|
|
@@ -12266,6 +12266,13 @@ function createVendorOnboardHandlers(config) {
|
|
|
12266
12266
|
status: 400
|
|
12267
12267
|
});
|
|
12268
12268
|
}
|
|
12269
|
+
if (body.activation === "password" || body.user?.password) {
|
|
12270
|
+
return json({
|
|
12271
|
+
error: "Setting a password during vendor onboard is no longer supported. Create the vendor, then send an invite or copy the invite link so the owner can set their own password."
|
|
12272
|
+
}, {
|
|
12273
|
+
status: 400
|
|
12274
|
+
});
|
|
12275
|
+
}
|
|
12269
12276
|
const profile = parseVendorProfileFromBody(body.vendor, {
|
|
12270
12277
|
defaultRegistrationStatus: "approved"
|
|
12271
12278
|
});
|
|
@@ -12275,34 +12282,8 @@ function createVendorOnboardHandlers(config) {
|
|
|
12275
12282
|
}, {
|
|
12276
12283
|
status: 400
|
|
12277
12284
|
});
|
|
12278
|
-
const activation =
|
|
12279
|
-
const
|
|
12280
|
-
let ownerPasswordHash = null;
|
|
12281
|
-
if (activation === "password") {
|
|
12282
|
-
const plain = body.user?.password?.trim();
|
|
12283
|
-
if (!plain) {
|
|
12284
|
-
return json({
|
|
12285
|
-
error: "Password is required when activating with a set password"
|
|
12286
|
-
}, {
|
|
12287
|
-
status: 400
|
|
12288
|
-
});
|
|
12289
|
-
}
|
|
12290
|
-
if (plain.length < minPasswordLength) {
|
|
12291
|
-
return json({
|
|
12292
|
-
error: `Password must be at least ${minPasswordLength} characters`
|
|
12293
|
-
}, {
|
|
12294
|
-
status: 400
|
|
12295
|
-
});
|
|
12296
|
-
}
|
|
12297
|
-
if (!hashPassword) {
|
|
12298
|
-
return json({
|
|
12299
|
-
error: "Password hashing is not configured on the server"
|
|
12300
|
-
}, {
|
|
12301
|
-
status: 501
|
|
12302
|
-
});
|
|
12303
|
-
}
|
|
12304
|
-
ownerPasswordHash = await hashPassword(plain);
|
|
12305
|
-
}
|
|
12285
|
+
const activation = "invite";
|
|
12286
|
+
const ownerPasswordHash = null;
|
|
12306
12287
|
const slug = trimOrNull(body.vendor?.slug) || slugify(vendorName);
|
|
12307
12288
|
if (!slug) return json({
|
|
12308
12289
|
error: "Could not derive vendor slug"
|
|
@@ -12359,7 +12340,7 @@ function createVendorOnboardHandlers(config) {
|
|
|
12359
12340
|
email: userEmail,
|
|
12360
12341
|
phone: ownerPhone,
|
|
12361
12342
|
password: ownerPasswordHash,
|
|
12362
|
-
blocked:
|
|
12343
|
+
blocked: true,
|
|
12363
12344
|
groupId: ownerGroup.id,
|
|
12364
12345
|
adminAccess: true,
|
|
12365
12346
|
updatedAt: /* @__PURE__ */ new Date()
|
|
@@ -12376,15 +12357,14 @@ function createVendorOnboardHandlers(config) {
|
|
|
12376
12357
|
email: userEmail,
|
|
12377
12358
|
phone: ownerPhone,
|
|
12378
12359
|
password: ownerPasswordHash,
|
|
12379
|
-
blocked:
|
|
12360
|
+
blocked: true,
|
|
12380
12361
|
groupId: ownerGroup.id,
|
|
12381
12362
|
adminAccess: true
|
|
12382
12363
|
}));
|
|
12383
|
-
const
|
|
12364
|
+
const metadata = applyRotatingVendorInvite(buildVendorMetadata(null, {
|
|
12384
12365
|
ownerDesignation,
|
|
12385
12366
|
termsAccepted: true
|
|
12386
|
-
});
|
|
12387
|
-
const metadata = activation === "invite" ? applyRotatingVendorInvite(baseMetadata) : baseMetadata;
|
|
12367
|
+
}));
|
|
12388
12368
|
const vendor = await vendorRepo.save(vendorRepo.create({
|
|
12389
12369
|
name: vendorName,
|
|
12390
12370
|
slug,
|
|
@@ -12452,39 +12432,14 @@ function createVendorOnboardHandlers(config) {
|
|
|
12452
12432
|
};
|
|
12453
12433
|
});
|
|
12454
12434
|
let inviteLink;
|
|
12455
|
-
|
|
12456
|
-
if (
|
|
12457
|
-
|
|
12458
|
-
if (token) {
|
|
12459
|
-
inviteLink = buildVendorInviteLink(baseUrl, token);
|
|
12460
|
-
}
|
|
12461
|
-
}
|
|
12462
|
-
if (sendOwnerEmail) {
|
|
12463
|
-
emailSent = await trySendVendorOnboardEmails({
|
|
12464
|
-
vendorName,
|
|
12465
|
-
vendorSlug: slug,
|
|
12466
|
-
ownerName: userName,
|
|
12467
|
-
ownerEmail: userEmail,
|
|
12468
|
-
activation,
|
|
12469
|
-
inviteLink,
|
|
12470
|
-
sendToOwner: true
|
|
12471
|
-
});
|
|
12472
|
-
} else if (getCms) {
|
|
12473
|
-
await trySendVendorOnboardEmails({
|
|
12474
|
-
vendorName,
|
|
12475
|
-
vendorSlug: slug,
|
|
12476
|
-
ownerName: userName,
|
|
12477
|
-
ownerEmail: userEmail,
|
|
12478
|
-
activation,
|
|
12479
|
-
inviteLink,
|
|
12480
|
-
sendToOwner: false
|
|
12481
|
-
});
|
|
12435
|
+
const token = readVendorInviteToken(result.vendor.metadata);
|
|
12436
|
+
if (token) {
|
|
12437
|
+
inviteLink = buildVendorInviteLink(baseUrl, token);
|
|
12482
12438
|
}
|
|
12483
|
-
const message = activation === "password" ? emailSent ? "Vendor onboarded successfully. Welcome email sent to the owner." : sendOwnerEmail ? "Vendor onboarded successfully. Owner can sign in with the password you set (welcome email may not have been sent \u2014 check email plugin)." : "Vendor onboarded successfully. Owner can sign in with the password you set." : emailSent ? "Vendor onboarded successfully. Invite email sent." : sendOwnerEmail ? "Vendor onboarded successfully. Invite link created (email may not have been sent \u2014 check email plugin)." : "Vendor onboarded successfully. Share the invite link with the owner.";
|
|
12484
12439
|
return json({
|
|
12485
|
-
message,
|
|
12440
|
+
message: "Vendor created successfully.",
|
|
12486
12441
|
activation,
|
|
12487
|
-
emailSent,
|
|
12442
|
+
emailSent: false,
|
|
12488
12443
|
vendor: result.vendor,
|
|
12489
12444
|
user: {
|
|
12490
12445
|
id: result.user.id,
|
|
@@ -12519,9 +12474,11 @@ function createVendorOnboardHandlers(config) {
|
|
|
12519
12474
|
});
|
|
12520
12475
|
}
|
|
12521
12476
|
let sendEmail = true;
|
|
12477
|
+
let rotate = true;
|
|
12522
12478
|
try {
|
|
12523
12479
|
const body = await req.json().catch(() => ({}));
|
|
12524
12480
|
if (body.sendEmail === false) sendEmail = false;
|
|
12481
|
+
if (body.rotate === false) rotate = false;
|
|
12525
12482
|
} catch {
|
|
12526
12483
|
}
|
|
12527
12484
|
try {
|
|
@@ -12587,12 +12544,16 @@ function createVendorOnboardHandlers(config) {
|
|
|
12587
12544
|
status: 400
|
|
12588
12545
|
});
|
|
12589
12546
|
}
|
|
12590
|
-
const
|
|
12591
|
-
|
|
12592
|
-
|
|
12593
|
-
|
|
12594
|
-
|
|
12595
|
-
|
|
12547
|
+
const nextMetadata = rotate ? applyRotatingVendorInvite(v.metadata) : {
|
|
12548
|
+
...v.metadata ?? {}
|
|
12549
|
+
};
|
|
12550
|
+
if (rotate || v.inviteStatus !== "pending") {
|
|
12551
|
+
await vendorRepo.update(vendorId, {
|
|
12552
|
+
metadata: nextMetadata,
|
|
12553
|
+
inviteStatus: "pending"
|
|
12554
|
+
});
|
|
12555
|
+
}
|
|
12556
|
+
const token = readVendorInviteToken(nextMetadata);
|
|
12596
12557
|
if (!token) {
|
|
12597
12558
|
return json({
|
|
12598
12559
|
error: "Failed to generate invite token"
|
|
@@ -12613,8 +12574,9 @@ function createVendorOnboardHandlers(config) {
|
|
|
12613
12574
|
sendToOwner: true
|
|
12614
12575
|
});
|
|
12615
12576
|
}
|
|
12577
|
+
const rotatedNote = rotate ? " Previous invite link is no longer valid." : "";
|
|
12616
12578
|
return json({
|
|
12617
|
-
message: emailSent ?
|
|
12579
|
+
message: emailSent ? `Invite email sent.${rotatedNote}` : sendEmail ? `Invite link ready (email may not have been sent \u2014 check email plugin).${rotatedNote}` : rotate ? "New invite link created. Previous invite link is no longer valid." : "Invite link ready.",
|
|
12618
12580
|
emailSent,
|
|
12619
12581
|
inviteLink,
|
|
12620
12582
|
inviteStatus: "pending"
|