@infuro/cms-core 1.0.39 → 1.0.40
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 +108 -5
- package/dist/admin.js +109 -6
- package/dist/api.cjs +32 -32
- package/dist/api.d.cts +4 -1
- package/dist/api.d.ts +4 -1
- package/dist/api.js +1 -1
- package/dist/auth.cjs +12 -12
- package/dist/auth.js +1 -1
- package/dist/{chunk-SBRBR3VO.js → chunk-4BG7XYSH.js} +1 -0
- package/dist/{chunk-E6WVP7BK.cjs → chunk-ETZN4OQI.cjs} +1 -0
- package/dist/{chunk-SFDZMGHD.js → chunk-RCMUL6SZ.js} +442 -46
- package/dist/{chunk-ERJK5QXN.cjs → chunk-T7GCOO5Y.cjs} +443 -44
- package/dist/cli.cjs +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.cjs +210 -198
- package/dist/index.d.cts +84 -68
- package/dist/index.d.ts +84 -68
- package/dist/index.js +3 -3
- package/package.json +2 -2
package/dist/admin.cjs
CHANGED
|
@@ -492,7 +492,7 @@ var init_admin_config_context = __esm({
|
|
|
492
492
|
var CMS_VERSION;
|
|
493
493
|
var init_cms_version = __esm({
|
|
494
494
|
"src/lib/cms-version.ts"() {
|
|
495
|
-
CMS_VERSION = "1.0.
|
|
495
|
+
CMS_VERSION = "1.0.40" ;
|
|
496
496
|
}
|
|
497
497
|
});
|
|
498
498
|
function useCatalogCategories(enabled = true) {
|
|
@@ -9145,11 +9145,40 @@ function InvitePageContent() {
|
|
|
9145
9145
|
confirmPassword: ""
|
|
9146
9146
|
});
|
|
9147
9147
|
const [loading, setLoading] = React26.useState(false);
|
|
9148
|
+
const [checking, setChecking] = React26.useState(Boolean(token));
|
|
9149
|
+
const [inviteValid, setInviteValid] = React26.useState(false);
|
|
9148
9150
|
const [message, setMessage] = React26.useState("");
|
|
9149
9151
|
React26.useEffect(() => {
|
|
9150
9152
|
if (!token) {
|
|
9151
9153
|
setMessage("Invalid invite link. Token is missing.");
|
|
9154
|
+
setChecking(false);
|
|
9155
|
+
return;
|
|
9152
9156
|
}
|
|
9157
|
+
let cancelled = false;
|
|
9158
|
+
void (async () => {
|
|
9159
|
+
try {
|
|
9160
|
+
const res = await fetch(`/api/users/invite?token=${encodeURIComponent(token)}`);
|
|
9161
|
+
const result = await res.json();
|
|
9162
|
+
if (cancelled) return;
|
|
9163
|
+
if (res.ok && result.valid === true) {
|
|
9164
|
+
setInviteValid(true);
|
|
9165
|
+
setMessage("");
|
|
9166
|
+
} else {
|
|
9167
|
+
setInviteValid(false);
|
|
9168
|
+
setMessage(result.error || "This invitation is no longer valid.");
|
|
9169
|
+
}
|
|
9170
|
+
} catch {
|
|
9171
|
+
if (!cancelled) {
|
|
9172
|
+
setInviteValid(false);
|
|
9173
|
+
setMessage("Could not verify this invite link. Please try again.");
|
|
9174
|
+
}
|
|
9175
|
+
} finally {
|
|
9176
|
+
if (!cancelled) setChecking(false);
|
|
9177
|
+
}
|
|
9178
|
+
})();
|
|
9179
|
+
return () => {
|
|
9180
|
+
cancelled = true;
|
|
9181
|
+
};
|
|
9153
9182
|
}, [
|
|
9154
9183
|
token
|
|
9155
9184
|
]);
|
|
@@ -9192,12 +9221,21 @@ function InvitePageContent() {
|
|
|
9192
9221
|
setLoading(false);
|
|
9193
9222
|
}
|
|
9194
9223
|
}, "handleSubmit");
|
|
9195
|
-
if (!token) {
|
|
9224
|
+
if (!token || checking) {
|
|
9196
9225
|
return /* @__PURE__ */ React26__namespace.default.createElement(AuthPageLayout, null, /* @__PURE__ */ React26__namespace.default.createElement("div", {
|
|
9197
9226
|
className: "w-full space-y-4 p-5 sm:p-6 bg-white rounded-lg shadow-md text-center"
|
|
9198
9227
|
}, /* @__PURE__ */ React26__namespace.default.createElement("h2", {
|
|
9199
9228
|
className: "text-xl font-bold text-gray-900"
|
|
9200
|
-
}, "Invalid invite"), /* @__PURE__ */ React26__namespace.default.createElement("p", {
|
|
9229
|
+
}, checking ? "Checking invite\u2026" : "Invalid invite"), !checking && /* @__PURE__ */ React26__namespace.default.createElement("p", {
|
|
9230
|
+
className: "text-sm text-gray-600"
|
|
9231
|
+
}, message)));
|
|
9232
|
+
}
|
|
9233
|
+
if (!inviteValid) {
|
|
9234
|
+
return /* @__PURE__ */ React26__namespace.default.createElement(AuthPageLayout, null, /* @__PURE__ */ React26__namespace.default.createElement("div", {
|
|
9235
|
+
className: "w-full space-y-4 p-5 sm:p-6 bg-white rounded-lg shadow-md text-center"
|
|
9236
|
+
}, /* @__PURE__ */ React26__namespace.default.createElement("h2", {
|
|
9237
|
+
className: "text-xl font-bold text-gray-900"
|
|
9238
|
+
}, "Invite unavailable"), /* @__PURE__ */ React26__namespace.default.createElement("p", {
|
|
9201
9239
|
className: "text-sm text-gray-600"
|
|
9202
9240
|
}, message)));
|
|
9203
9241
|
}
|
|
@@ -12705,7 +12743,7 @@ function SettingsPage() {
|
|
|
12705
12743
|
onCheckedChange: setMultiVendorEnabled
|
|
12706
12744
|
}), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Label3, {
|
|
12707
12745
|
className: "text-sm font-medium text-gray-700"
|
|
12708
|
-
}, "Multi Vendor
|
|
12746
|
+
}, "Multi Vendor"), /* @__PURE__ */ React.createElement("p", {
|
|
12709
12747
|
className: "text-xs text-gray-500"
|
|
12710
12748
|
}, "Enable vendor portals, vendor logins, and vendor-scoped store data. Disabling this blocks vendor-only accounts from signing in."))), storeEnabled && /* @__PURE__ */ React.createElement("div", {
|
|
12711
12749
|
className: "mt-4 flex items-center gap-3 p-4 bg-gray-50 rounded-lg border border-gray-200"
|
|
@@ -31534,6 +31572,7 @@ function VendorEditPage({ vendorId }) {
|
|
|
31534
31572
|
const [sendOwnerEmail, setSendOwnerEmail] = React26.useState(true);
|
|
31535
31573
|
const [ownerPassword, setOwnerPassword] = React26.useState("");
|
|
31536
31574
|
const [ownerPasswordConfirm, setOwnerPasswordConfirm] = React26.useState("");
|
|
31575
|
+
const [reinviting, setReinviting] = React26.useState(false);
|
|
31537
31576
|
const vendorPayload = /* @__PURE__ */ __name(() => ({
|
|
31538
31577
|
name: name.trim(),
|
|
31539
31578
|
legalName: legalName.trim() || null,
|
|
@@ -31613,6 +31652,57 @@ function VendorEditPage({ vendorId }) {
|
|
|
31613
31652
|
vendorId,
|
|
31614
31653
|
create
|
|
31615
31654
|
]);
|
|
31655
|
+
const canReinviteOwner = !create && (inviteStatus === "pending" || inviteStatus === "expired");
|
|
31656
|
+
const handleReinviteOwner = /* @__PURE__ */ __name(async () => {
|
|
31657
|
+
setReinviting(true);
|
|
31658
|
+
setErrors([]);
|
|
31659
|
+
try {
|
|
31660
|
+
const res = await fetch(`/api/admin/vendors/${vendorId}/resend-invite`, {
|
|
31661
|
+
method: "POST",
|
|
31662
|
+
headers: {
|
|
31663
|
+
"Content-Type": "application/json"
|
|
31664
|
+
},
|
|
31665
|
+
body: JSON.stringify({
|
|
31666
|
+
sendEmail: true
|
|
31667
|
+
})
|
|
31668
|
+
});
|
|
31669
|
+
const data = await res.json();
|
|
31670
|
+
if (!res.ok) {
|
|
31671
|
+
setErrors([
|
|
31672
|
+
data.error || data.message || "Failed to resend invite"
|
|
31673
|
+
]);
|
|
31674
|
+
return;
|
|
31675
|
+
}
|
|
31676
|
+
const refreshRes = await fetch(`/api/vendors/${vendorId}`);
|
|
31677
|
+
if (refreshRes.ok) {
|
|
31678
|
+
const refreshed = await refreshRes.json();
|
|
31679
|
+
setInviteStatus(refreshed.inviteStatus ?? "pending");
|
|
31680
|
+
setMetadata(refreshed.metadata && typeof refreshed.metadata === "object" ? refreshed.metadata : null);
|
|
31681
|
+
} else {
|
|
31682
|
+
setInviteStatus("pending");
|
|
31683
|
+
}
|
|
31684
|
+
const inviteLink = typeof data.inviteLink === "string" ? data.inviteLink.trim() : "";
|
|
31685
|
+
if (inviteLink) {
|
|
31686
|
+
try {
|
|
31687
|
+
await navigator.clipboard.writeText(inviteLink);
|
|
31688
|
+
sonner.toast.success(data.message || "Invite resent. New link copied \u2014 previous invite links no longer work.");
|
|
31689
|
+
} catch {
|
|
31690
|
+
sonner.toast.success(data.message || "Invite resent.");
|
|
31691
|
+
sonner.toast.message("New invite link (previous links are invalid)", {
|
|
31692
|
+
description: inviteLink
|
|
31693
|
+
});
|
|
31694
|
+
}
|
|
31695
|
+
} else {
|
|
31696
|
+
sonner.toast.success(data.message || "Invite resent.");
|
|
31697
|
+
}
|
|
31698
|
+
} catch {
|
|
31699
|
+
setErrors([
|
|
31700
|
+
"Failed to resend invite"
|
|
31701
|
+
]);
|
|
31702
|
+
} finally {
|
|
31703
|
+
setReinviting(false);
|
|
31704
|
+
}
|
|
31705
|
+
}, "handleReinviteOwner");
|
|
31616
31706
|
if (!canOnboardVendors(session?.user)) {
|
|
31617
31707
|
return /* @__PURE__ */ React26__namespace.default.createElement(VendorAccessDenied, {
|
|
31618
31708
|
groupName: sessionUser?.groupName
|
|
@@ -32044,7 +32134,20 @@ function VendorEditPage({ vendorId }) {
|
|
|
32044
32134
|
readOnly: true,
|
|
32045
32135
|
value: inviteStatus,
|
|
32046
32136
|
className: `mt-1 ${fieldClass} bg-gray-100`
|
|
32047
|
-
})),
|
|
32137
|
+
})), canReinviteOwner && /* @__PURE__ */ React26__namespace.default.createElement("div", {
|
|
32138
|
+
className: "pt-1"
|
|
32139
|
+
}, /* @__PURE__ */ React26__namespace.default.createElement(Button, {
|
|
32140
|
+
type: "button",
|
|
32141
|
+
variant: "outline",
|
|
32142
|
+
size: "sm",
|
|
32143
|
+
className: "w-full",
|
|
32144
|
+
disabled: reinviting || saving,
|
|
32145
|
+
onClick: /* @__PURE__ */ __name(() => void handleReinviteOwner(), "onClick")
|
|
32146
|
+
}, /* @__PURE__ */ React26__namespace.default.createElement(LucideIcons.Mail, {
|
|
32147
|
+
className: "h-4 w-4 mr-2"
|
|
32148
|
+
}), reinviting ? "Sending invite\u2026" : "Re-invite owner"), /* @__PURE__ */ React26__namespace.default.createElement("p", {
|
|
32149
|
+
className: "mt-2 text-xs text-gray-500"
|
|
32150
|
+
}, "Sends a new invite email and invalidates any previous invite link immediately.")), /* @__PURE__ */ React26__namespace.default.createElement("div", null, /* @__PURE__ */ React26__namespace.default.createElement(FieldLabel, null, "Active"), /* @__PURE__ */ React26__namespace.default.createElement(Input, {
|
|
32048
32151
|
readOnly: true,
|
|
32049
32152
|
value: active ? "Yes" : "No",
|
|
32050
32153
|
className: `mt-1 ${fieldClass} bg-gray-100`
|
package/dist/admin.js
CHANGED
|
@@ -10,7 +10,7 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
10
10
|
import { cva } from 'class-variance-authority';
|
|
11
11
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
12
12
|
import * as LucideIcons from 'lucide-react';
|
|
13
|
-
import { ChevronDown, User, Settings, LogOut, LayoutDashboard, Store, FolderTree, Layers, Building2, CalendarDays, ShoppingBag, Package, Receipt, BadgePercent, ShoppingCart, CreditCard, Users, Inbox, File, LinkIcon, ClipboardList, MessageSquare, Image as Image$1, FileText, Shield, Puzzle, X, Plus, MoreVertical, Upload, Download, Edit, Copy, RefreshCw, Trash2, Save, Check, Search, AlertCircle, MapPin, BarChart3, TrendingUp, UserCheck, Activity, Globe, Eye, MousePointer, ArrowLeftRight, RotateCcw, KeyRound, Loader2, CalendarClock, Rss, ArrowLeft, Pencil, FolderPlus, LayoutGrid, List, Move, Archive, Edit2, ExternalLink, Power, Star, ChevronUp, Zap, Filter, CheckCircle2, ImageIcon, GripVertical, ChevronRight, ArrowRight, ArrowUpRight, IndianRupee, XCircle, Clock, Play, MessageCircle,
|
|
13
|
+
import { ChevronDown, User, Settings, LogOut, LayoutDashboard, Store, FolderTree, Layers, Building2, CalendarDays, ShoppingBag, Package, Receipt, BadgePercent, ShoppingCart, CreditCard, Users, Inbox, File, LinkIcon, ClipboardList, MessageSquare, Image as Image$1, FileText, Shield, Puzzle, X, Plus, MoreVertical, Upload, Download, Edit, Copy, RefreshCw, Trash2, Save, Check, Search, AlertCircle, MapPin, BarChart3, TrendingUp, UserCheck, Activity, Globe, Eye, MousePointer, ArrowLeftRight, RotateCcw, KeyRound, Loader2, CalendarClock, Rss, ArrowLeft, Pencil, FolderPlus, LayoutGrid, List, Move, Archive, Edit2, ExternalLink, Power, Star, ChevronUp, Mail, Zap, Filter, CheckCircle2, ImageIcon, GripVertical, ChevronRight, ArrowRight, ArrowUpRight, IndianRupee, XCircle, Clock, Play, MessageCircle, Bot, FileUp, Tag, Box, SlidersHorizontal, Calculator, Link2 as Link2$1, Unlink, Gift, MoreHorizontal, Bell, QrCode, Car, Circle, Settings2, DollarSign, Hash, ChevronLeft, Share2, Smartphone, HardDrive, Folder, Film } from 'lucide-react';
|
|
14
14
|
import Image from 'next/image';
|
|
15
15
|
import Link2 from 'next/link';
|
|
16
16
|
import { usePathname, useSearchParams, useRouter } from 'next/navigation';
|
|
@@ -457,7 +457,7 @@ var init_admin_config_context = __esm({
|
|
|
457
457
|
var CMS_VERSION;
|
|
458
458
|
var init_cms_version = __esm({
|
|
459
459
|
"src/lib/cms-version.ts"() {
|
|
460
|
-
CMS_VERSION = "1.0.
|
|
460
|
+
CMS_VERSION = "1.0.40" ;
|
|
461
461
|
}
|
|
462
462
|
});
|
|
463
463
|
function useCatalogCategories(enabled = true) {
|
|
@@ -9110,11 +9110,40 @@ function InvitePageContent() {
|
|
|
9110
9110
|
confirmPassword: ""
|
|
9111
9111
|
});
|
|
9112
9112
|
const [loading, setLoading] = useState(false);
|
|
9113
|
+
const [checking, setChecking] = useState(Boolean(token));
|
|
9114
|
+
const [inviteValid, setInviteValid] = useState(false);
|
|
9113
9115
|
const [message, setMessage] = useState("");
|
|
9114
9116
|
useEffect(() => {
|
|
9115
9117
|
if (!token) {
|
|
9116
9118
|
setMessage("Invalid invite link. Token is missing.");
|
|
9119
|
+
setChecking(false);
|
|
9120
|
+
return;
|
|
9117
9121
|
}
|
|
9122
|
+
let cancelled = false;
|
|
9123
|
+
void (async () => {
|
|
9124
|
+
try {
|
|
9125
|
+
const res = await fetch(`/api/users/invite?token=${encodeURIComponent(token)}`);
|
|
9126
|
+
const result = await res.json();
|
|
9127
|
+
if (cancelled) return;
|
|
9128
|
+
if (res.ok && result.valid === true) {
|
|
9129
|
+
setInviteValid(true);
|
|
9130
|
+
setMessage("");
|
|
9131
|
+
} else {
|
|
9132
|
+
setInviteValid(false);
|
|
9133
|
+
setMessage(result.error || "This invitation is no longer valid.");
|
|
9134
|
+
}
|
|
9135
|
+
} catch {
|
|
9136
|
+
if (!cancelled) {
|
|
9137
|
+
setInviteValid(false);
|
|
9138
|
+
setMessage("Could not verify this invite link. Please try again.");
|
|
9139
|
+
}
|
|
9140
|
+
} finally {
|
|
9141
|
+
if (!cancelled) setChecking(false);
|
|
9142
|
+
}
|
|
9143
|
+
})();
|
|
9144
|
+
return () => {
|
|
9145
|
+
cancelled = true;
|
|
9146
|
+
};
|
|
9118
9147
|
}, [
|
|
9119
9148
|
token
|
|
9120
9149
|
]);
|
|
@@ -9157,12 +9186,21 @@ function InvitePageContent() {
|
|
|
9157
9186
|
setLoading(false);
|
|
9158
9187
|
}
|
|
9159
9188
|
}, "handleSubmit");
|
|
9160
|
-
if (!token) {
|
|
9189
|
+
if (!token || checking) {
|
|
9161
9190
|
return /* @__PURE__ */ React26__default.createElement(AuthPageLayout, null, /* @__PURE__ */ React26__default.createElement("div", {
|
|
9162
9191
|
className: "w-full space-y-4 p-5 sm:p-6 bg-white rounded-lg shadow-md text-center"
|
|
9163
9192
|
}, /* @__PURE__ */ React26__default.createElement("h2", {
|
|
9164
9193
|
className: "text-xl font-bold text-gray-900"
|
|
9165
|
-
}, "Invalid invite"), /* @__PURE__ */ React26__default.createElement("p", {
|
|
9194
|
+
}, checking ? "Checking invite\u2026" : "Invalid invite"), !checking && /* @__PURE__ */ React26__default.createElement("p", {
|
|
9195
|
+
className: "text-sm text-gray-600"
|
|
9196
|
+
}, message)));
|
|
9197
|
+
}
|
|
9198
|
+
if (!inviteValid) {
|
|
9199
|
+
return /* @__PURE__ */ React26__default.createElement(AuthPageLayout, null, /* @__PURE__ */ React26__default.createElement("div", {
|
|
9200
|
+
className: "w-full space-y-4 p-5 sm:p-6 bg-white rounded-lg shadow-md text-center"
|
|
9201
|
+
}, /* @__PURE__ */ React26__default.createElement("h2", {
|
|
9202
|
+
className: "text-xl font-bold text-gray-900"
|
|
9203
|
+
}, "Invite unavailable"), /* @__PURE__ */ React26__default.createElement("p", {
|
|
9166
9204
|
className: "text-sm text-gray-600"
|
|
9167
9205
|
}, message)));
|
|
9168
9206
|
}
|
|
@@ -12670,7 +12708,7 @@ function SettingsPage() {
|
|
|
12670
12708
|
onCheckedChange: setMultiVendorEnabled
|
|
12671
12709
|
}), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Label3, {
|
|
12672
12710
|
className: "text-sm font-medium text-gray-700"
|
|
12673
|
-
}, "Multi Vendor
|
|
12711
|
+
}, "Multi Vendor"), /* @__PURE__ */ React.createElement("p", {
|
|
12674
12712
|
className: "text-xs text-gray-500"
|
|
12675
12713
|
}, "Enable vendor portals, vendor logins, and vendor-scoped store data. Disabling this blocks vendor-only accounts from signing in."))), storeEnabled && /* @__PURE__ */ React.createElement("div", {
|
|
12676
12714
|
className: "mt-4 flex items-center gap-3 p-4 bg-gray-50 rounded-lg border border-gray-200"
|
|
@@ -31499,6 +31537,7 @@ function VendorEditPage({ vendorId }) {
|
|
|
31499
31537
|
const [sendOwnerEmail, setSendOwnerEmail] = useState(true);
|
|
31500
31538
|
const [ownerPassword, setOwnerPassword] = useState("");
|
|
31501
31539
|
const [ownerPasswordConfirm, setOwnerPasswordConfirm] = useState("");
|
|
31540
|
+
const [reinviting, setReinviting] = useState(false);
|
|
31502
31541
|
const vendorPayload = /* @__PURE__ */ __name(() => ({
|
|
31503
31542
|
name: name.trim(),
|
|
31504
31543
|
legalName: legalName.trim() || null,
|
|
@@ -31578,6 +31617,57 @@ function VendorEditPage({ vendorId }) {
|
|
|
31578
31617
|
vendorId,
|
|
31579
31618
|
create
|
|
31580
31619
|
]);
|
|
31620
|
+
const canReinviteOwner = !create && (inviteStatus === "pending" || inviteStatus === "expired");
|
|
31621
|
+
const handleReinviteOwner = /* @__PURE__ */ __name(async () => {
|
|
31622
|
+
setReinviting(true);
|
|
31623
|
+
setErrors([]);
|
|
31624
|
+
try {
|
|
31625
|
+
const res = await fetch(`/api/admin/vendors/${vendorId}/resend-invite`, {
|
|
31626
|
+
method: "POST",
|
|
31627
|
+
headers: {
|
|
31628
|
+
"Content-Type": "application/json"
|
|
31629
|
+
},
|
|
31630
|
+
body: JSON.stringify({
|
|
31631
|
+
sendEmail: true
|
|
31632
|
+
})
|
|
31633
|
+
});
|
|
31634
|
+
const data = await res.json();
|
|
31635
|
+
if (!res.ok) {
|
|
31636
|
+
setErrors([
|
|
31637
|
+
data.error || data.message || "Failed to resend invite"
|
|
31638
|
+
]);
|
|
31639
|
+
return;
|
|
31640
|
+
}
|
|
31641
|
+
const refreshRes = await fetch(`/api/vendors/${vendorId}`);
|
|
31642
|
+
if (refreshRes.ok) {
|
|
31643
|
+
const refreshed = await refreshRes.json();
|
|
31644
|
+
setInviteStatus(refreshed.inviteStatus ?? "pending");
|
|
31645
|
+
setMetadata(refreshed.metadata && typeof refreshed.metadata === "object" ? refreshed.metadata : null);
|
|
31646
|
+
} else {
|
|
31647
|
+
setInviteStatus("pending");
|
|
31648
|
+
}
|
|
31649
|
+
const inviteLink = typeof data.inviteLink === "string" ? data.inviteLink.trim() : "";
|
|
31650
|
+
if (inviteLink) {
|
|
31651
|
+
try {
|
|
31652
|
+
await navigator.clipboard.writeText(inviteLink);
|
|
31653
|
+
toast.success(data.message || "Invite resent. New link copied \u2014 previous invite links no longer work.");
|
|
31654
|
+
} catch {
|
|
31655
|
+
toast.success(data.message || "Invite resent.");
|
|
31656
|
+
toast.message("New invite link (previous links are invalid)", {
|
|
31657
|
+
description: inviteLink
|
|
31658
|
+
});
|
|
31659
|
+
}
|
|
31660
|
+
} else {
|
|
31661
|
+
toast.success(data.message || "Invite resent.");
|
|
31662
|
+
}
|
|
31663
|
+
} catch {
|
|
31664
|
+
setErrors([
|
|
31665
|
+
"Failed to resend invite"
|
|
31666
|
+
]);
|
|
31667
|
+
} finally {
|
|
31668
|
+
setReinviting(false);
|
|
31669
|
+
}
|
|
31670
|
+
}, "handleReinviteOwner");
|
|
31581
31671
|
if (!canOnboardVendors(session?.user)) {
|
|
31582
31672
|
return /* @__PURE__ */ React26__default.createElement(VendorAccessDenied, {
|
|
31583
31673
|
groupName: sessionUser?.groupName
|
|
@@ -32009,7 +32099,20 @@ function VendorEditPage({ vendorId }) {
|
|
|
32009
32099
|
readOnly: true,
|
|
32010
32100
|
value: inviteStatus,
|
|
32011
32101
|
className: `mt-1 ${fieldClass} bg-gray-100`
|
|
32012
|
-
})),
|
|
32102
|
+
})), canReinviteOwner && /* @__PURE__ */ React26__default.createElement("div", {
|
|
32103
|
+
className: "pt-1"
|
|
32104
|
+
}, /* @__PURE__ */ React26__default.createElement(Button, {
|
|
32105
|
+
type: "button",
|
|
32106
|
+
variant: "outline",
|
|
32107
|
+
size: "sm",
|
|
32108
|
+
className: "w-full",
|
|
32109
|
+
disabled: reinviting || saving,
|
|
32110
|
+
onClick: /* @__PURE__ */ __name(() => void handleReinviteOwner(), "onClick")
|
|
32111
|
+
}, /* @__PURE__ */ React26__default.createElement(Mail, {
|
|
32112
|
+
className: "h-4 w-4 mr-2"
|
|
32113
|
+
}), reinviting ? "Sending invite\u2026" : "Re-invite owner"), /* @__PURE__ */ React26__default.createElement("p", {
|
|
32114
|
+
className: "mt-2 text-xs text-gray-500"
|
|
32115
|
+
}, "Sends a new invite email and invalidates any previous invite link immediately.")), /* @__PURE__ */ React26__default.createElement("div", null, /* @__PURE__ */ React26__default.createElement(FieldLabel, null, "Active"), /* @__PURE__ */ React26__default.createElement(Input, {
|
|
32013
32116
|
readOnly: true,
|
|
32014
32117
|
value: active ? "Yes" : "No",
|
|
32015
32118
|
className: `mt-1 ${fieldClass} bg-gray-100`
|
package/dist/api.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkT7GCOO5Y_cjs = require('./chunk-T7GCOO5Y.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 chunkT7GCOO5Y_cjs.createAnalyticsHandlers; }
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "createBlogBySlugHandler", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkT7GCOO5Y_cjs.createBlogBySlugHandler; }
|
|
28
28
|
});
|
|
29
29
|
Object.defineProperty(exports, "createChangePasswordHandler", {
|
|
30
30
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
31
|
+
get: function () { return chunkT7GCOO5Y_cjs.createChangePasswordHandler; }
|
|
32
32
|
});
|
|
33
33
|
Object.defineProperty(exports, "createCmsApiHandler", {
|
|
34
34
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
35
|
+
get: function () { return chunkT7GCOO5Y_cjs.createCmsApiHandler; }
|
|
36
36
|
});
|
|
37
37
|
Object.defineProperty(exports, "createCrudByIdHandler", {
|
|
38
38
|
enumerable: true,
|
|
39
|
-
get: function () { return
|
|
39
|
+
get: function () { return chunkT7GCOO5Y_cjs.createCrudByIdHandler; }
|
|
40
40
|
});
|
|
41
41
|
Object.defineProperty(exports, "createCrudHandler", {
|
|
42
42
|
enumerable: true,
|
|
43
|
-
get: function () { return
|
|
43
|
+
get: function () { return chunkT7GCOO5Y_cjs.createCrudHandler; }
|
|
44
44
|
});
|
|
45
45
|
Object.defineProperty(exports, "createDashboardStatsHandler", {
|
|
46
46
|
enumerable: true,
|
|
47
|
-
get: function () { return
|
|
47
|
+
get: function () { return chunkT7GCOO5Y_cjs.createDashboardStatsHandler; }
|
|
48
48
|
});
|
|
49
49
|
Object.defineProperty(exports, "createEcommerceAnalyticsHandler", {
|
|
50
50
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
51
|
+
get: function () { return chunkT7GCOO5Y_cjs.createEcommerceAnalyticsHandler; }
|
|
52
52
|
});
|
|
53
53
|
Object.defineProperty(exports, "createForgotPasswordHandler", {
|
|
54
54
|
enumerable: true,
|
|
55
|
-
get: function () { return
|
|
55
|
+
get: function () { return chunkT7GCOO5Y_cjs.createForgotPasswordHandler; }
|
|
56
56
|
});
|
|
57
57
|
Object.defineProperty(exports, "createFormBySlugHandler", {
|
|
58
58
|
enumerable: true,
|
|
59
|
-
get: function () { return
|
|
59
|
+
get: function () { return chunkT7GCOO5Y_cjs.createFormBySlugHandler; }
|
|
60
60
|
});
|
|
61
61
|
Object.defineProperty(exports, "createInviteAcceptHandler", {
|
|
62
62
|
enumerable: true,
|
|
63
|
-
get: function () { return
|
|
63
|
+
get: function () { return chunkT7GCOO5Y_cjs.createInviteAcceptHandler; }
|
|
64
64
|
});
|
|
65
65
|
Object.defineProperty(exports, "createJobScheduleHandlers", {
|
|
66
66
|
enumerable: true,
|
|
67
|
-
get: function () { return
|
|
67
|
+
get: function () { return chunkT7GCOO5Y_cjs.createJobScheduleHandlers; }
|
|
68
68
|
});
|
|
69
69
|
Object.defineProperty(exports, "createLlmAgentKnowledgeHandlers", {
|
|
70
70
|
enumerable: true,
|
|
71
|
-
get: function () { return
|
|
71
|
+
get: function () { return chunkT7GCOO5Y_cjs.createLlmAgentKnowledgeHandlers; }
|
|
72
72
|
});
|
|
73
73
|
Object.defineProperty(exports, "createMediaZipExtractHandler", {
|
|
74
74
|
enumerable: true,
|
|
75
|
-
get: function () { return
|
|
75
|
+
get: function () { return chunkT7GCOO5Y_cjs.createMediaZipExtractHandler; }
|
|
76
76
|
});
|
|
77
77
|
Object.defineProperty(exports, "createSetPasswordHandler", {
|
|
78
78
|
enumerable: true,
|
|
79
|
-
get: function () { return
|
|
79
|
+
get: function () { return chunkT7GCOO5Y_cjs.createSetPasswordHandler; }
|
|
80
80
|
});
|
|
81
81
|
Object.defineProperty(exports, "createSettingsApiHandlers", {
|
|
82
82
|
enumerable: true,
|
|
83
|
-
get: function () { return
|
|
83
|
+
get: function () { return chunkT7GCOO5Y_cjs.createSettingsApiHandlers; }
|
|
84
84
|
});
|
|
85
85
|
Object.defineProperty(exports, "createStorefrontApiHandler", {
|
|
86
86
|
enumerable: true,
|
|
87
|
-
get: function () { return
|
|
87
|
+
get: function () { return chunkT7GCOO5Y_cjs.createStorefrontApiHandler; }
|
|
88
88
|
});
|
|
89
89
|
Object.defineProperty(exports, "createUploadHandler", {
|
|
90
90
|
enumerable: true,
|
|
91
|
-
get: function () { return
|
|
91
|
+
get: function () { return chunkT7GCOO5Y_cjs.createUploadHandler; }
|
|
92
92
|
});
|
|
93
93
|
Object.defineProperty(exports, "createUserAuthApiRouter", {
|
|
94
94
|
enumerable: true,
|
|
95
|
-
get: function () { return
|
|
95
|
+
get: function () { return chunkT7GCOO5Y_cjs.createUserAuthApiRouter; }
|
|
96
96
|
});
|
|
97
97
|
Object.defineProperty(exports, "createUserAvatarHandler", {
|
|
98
98
|
enumerable: true,
|
|
99
|
-
get: function () { return
|
|
99
|
+
get: function () { return chunkT7GCOO5Y_cjs.createUserAvatarHandler; }
|
|
100
100
|
});
|
|
101
101
|
Object.defineProperty(exports, "createUserProfileHandler", {
|
|
102
102
|
enumerable: true,
|
|
103
|
-
get: function () { return
|
|
103
|
+
get: function () { return chunkT7GCOO5Y_cjs.createUserProfileHandler; }
|
|
104
104
|
});
|
|
105
105
|
Object.defineProperty(exports, "createUsersApiHandlers", {
|
|
106
106
|
enumerable: true,
|
|
107
|
-
get: function () { return
|
|
107
|
+
get: function () { return chunkT7GCOO5Y_cjs.createUsersApiHandlers; }
|
|
108
108
|
});
|
|
109
109
|
Object.defineProperty(exports, "createVendorDashboardHandler", {
|
|
110
110
|
enumerable: true,
|
|
111
|
-
get: function () { return
|
|
111
|
+
get: function () { return chunkT7GCOO5Y_cjs.createVendorDashboardHandler; }
|
|
112
112
|
});
|
|
113
113
|
Object.defineProperty(exports, "createVendorOnboardHandlers", {
|
|
114
114
|
enumerable: true,
|
|
115
|
-
get: function () { return
|
|
115
|
+
get: function () { return chunkT7GCOO5Y_cjs.createVendorOnboardHandlers; }
|
|
116
116
|
});
|
|
117
117
|
Object.defineProperty(exports, "getPublicSettingsGroup", {
|
|
118
118
|
enumerable: true,
|
|
119
|
-
get: function () { return
|
|
119
|
+
get: function () { return chunkT7GCOO5Y_cjs.getPublicSettingsGroup; }
|
|
120
120
|
});
|
|
121
121
|
Object.defineProperty(exports, "mergeGuardrailsIntoSystemPrompt", {
|
|
122
122
|
enumerable: true,
|
|
123
|
-
get: function () { return
|
|
123
|
+
get: function () { return chunkT7GCOO5Y_cjs.mergeGuardrailsIntoSystemPrompt; }
|
|
124
124
|
});
|
|
125
125
|
Object.defineProperty(exports, "parseLlmAgentValidationRules", {
|
|
126
126
|
enumerable: true,
|
|
127
|
-
get: function () { return
|
|
127
|
+
get: function () { return chunkT7GCOO5Y_cjs.parseLlmAgentValidationRules; }
|
|
128
128
|
});
|
|
129
129
|
Object.defineProperty(exports, "simpleDecrypt", {
|
|
130
130
|
enumerable: true,
|
|
131
|
-
get: function () { return
|
|
131
|
+
get: function () { return chunkT7GCOO5Y_cjs.simpleDecrypt; }
|
|
132
132
|
});
|
|
133
133
|
Object.defineProperty(exports, "simpleEncrypt", {
|
|
134
134
|
enumerable: true,
|
|
135
|
-
get: function () { return
|
|
135
|
+
get: function () { return chunkT7GCOO5Y_cjs.simpleEncrypt; }
|
|
136
136
|
});
|
|
137
137
|
Object.defineProperty(exports, "validateUserMessageAgainstAgentRules", {
|
|
138
138
|
enumerable: true,
|
|
139
|
-
get: function () { return
|
|
139
|
+
get: function () { return chunkT7GCOO5Y_cjs.validateUserMessageAgainstAgentRules; }
|
|
140
140
|
});
|
|
141
141
|
Object.defineProperty(exports, "validateUserMessageAgainstStructuredRules", {
|
|
142
142
|
enumerable: true,
|
|
143
|
-
get: function () { return
|
|
143
|
+
get: function () { return chunkT7GCOO5Y_cjs.validateUserMessageAgainstStructuredRules; }
|
|
144
144
|
});
|
|
145
145
|
Object.defineProperty(exports, "createCmsAuthBundle", {
|
|
146
146
|
enumerable: true,
|
package/dist/api.d.cts
CHANGED
|
@@ -137,7 +137,7 @@ interface InviteAcceptConfig extends AuthHandlersConfig {
|
|
|
137
137
|
entityMap: EntityMap;
|
|
138
138
|
beforeActivate?: (email: string, userId: number) => Promise<void>;
|
|
139
139
|
}
|
|
140
|
-
/**
|
|
140
|
+
/** Accept invite: vendor rotating token (preferred) or legacy base64 email token */
|
|
141
141
|
declare function createInviteAcceptHandler(config: InviteAcceptConfig): (request: Request) => Promise<Response>;
|
|
142
142
|
interface ChangePasswordConfig extends AuthHandlersConfig {
|
|
143
143
|
dataSource: DataSource;
|
|
@@ -165,6 +165,7 @@ interface UserAuthApiConfig extends ForgotPasswordConfig, Omit<SetPasswordConfig
|
|
|
165
165
|
* Path is the segment after the mount (e.g. "forgot-password"). Returns 404 for unknown paths.
|
|
166
166
|
*/
|
|
167
167
|
declare function createUserAuthApiRouter(config: UserAuthApiConfig): {
|
|
168
|
+
GET(req: Request, pathname: string): Promise<Response>;
|
|
168
169
|
POST(req: Request, pathname: string): Promise<Response>;
|
|
169
170
|
};
|
|
170
171
|
|
|
@@ -564,6 +565,8 @@ interface VendorOnboardHandlersConfig {
|
|
|
564
565
|
declare function createVendorOnboardHandlers(config: VendorOnboardHandlersConfig): {
|
|
565
566
|
/** POST /api/admin/vendors/onboard — create vendor + owner user + vendor_users + invite */
|
|
566
567
|
onboard(req: Request): Promise<Response>;
|
|
568
|
+
/** POST /api/admin/vendors/:id/resend-invite — rotate owner invite token and resend email */
|
|
569
|
+
resendInvite(req: Request, vendorIdStr: string): Promise<Response>;
|
|
567
570
|
/** POST /api/admin/vendor/switch — set active vendor in session (JWT update via client) */
|
|
568
571
|
switchVendor(req: Request): Promise<Response>;
|
|
569
572
|
/** GET /api/admin/vendor/team */
|
package/dist/api.d.ts
CHANGED
|
@@ -137,7 +137,7 @@ interface InviteAcceptConfig extends AuthHandlersConfig {
|
|
|
137
137
|
entityMap: EntityMap;
|
|
138
138
|
beforeActivate?: (email: string, userId: number) => Promise<void>;
|
|
139
139
|
}
|
|
140
|
-
/**
|
|
140
|
+
/** Accept invite: vendor rotating token (preferred) or legacy base64 email token */
|
|
141
141
|
declare function createInviteAcceptHandler(config: InviteAcceptConfig): (request: Request) => Promise<Response>;
|
|
142
142
|
interface ChangePasswordConfig extends AuthHandlersConfig {
|
|
143
143
|
dataSource: DataSource;
|
|
@@ -165,6 +165,7 @@ interface UserAuthApiConfig extends ForgotPasswordConfig, Omit<SetPasswordConfig
|
|
|
165
165
|
* Path is the segment after the mount (e.g. "forgot-password"). Returns 404 for unknown paths.
|
|
166
166
|
*/
|
|
167
167
|
declare function createUserAuthApiRouter(config: UserAuthApiConfig): {
|
|
168
|
+
GET(req: Request, pathname: string): Promise<Response>;
|
|
168
169
|
POST(req: Request, pathname: string): Promise<Response>;
|
|
169
170
|
};
|
|
170
171
|
|
|
@@ -564,6 +565,8 @@ interface VendorOnboardHandlersConfig {
|
|
|
564
565
|
declare function createVendorOnboardHandlers(config: VendorOnboardHandlersConfig): {
|
|
565
566
|
/** POST /api/admin/vendors/onboard — create vendor + owner user + vendor_users + invite */
|
|
566
567
|
onboard(req: Request): Promise<Response>;
|
|
568
|
+
/** POST /api/admin/vendors/:id/resend-invite — rotate owner invite token and resend email */
|
|
569
|
+
resendInvite(req: Request, vendorIdStr: string): Promise<Response>;
|
|
567
570
|
/** POST /api/admin/vendor/switch — set active vendor in session (JWT update via client) */
|
|
568
571
|
switchVendor(req: Request): Promise<Response>;
|
|
569
572
|
/** GET /api/admin/vendor/team */
|
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-RCMUL6SZ.js';
|
|
2
2
|
import './chunk-NNQBWDCI.js';
|
|
3
3
|
import './chunk-HCIRL37O.js';
|
|
4
4
|
import './chunk-JXF23MPG.js';
|
package/dist/auth.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkETZN4OQI_cjs = require('./chunk-ETZN4OQI.cjs');
|
|
4
4
|
var chunkOIGCAGH7_cjs = require('./chunk-OIGCAGH7.cjs');
|
|
5
5
|
var chunkWMXPKKXU_cjs = require('./chunk-WMXPKKXU.cjs');
|
|
6
6
|
require('./chunk-USNT2KNT.cjs');
|
|
@@ -9,47 +9,47 @@ require('./chunk-USNT2KNT.cjs');
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, "createCmsMiddleware", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunkETZN4OQI_cjs.createCmsMiddleware; }
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "defaultPublicApiMethods", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkETZN4OQI_cjs.defaultPublicApiMethods; }
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "getNextAuthOptions", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkETZN4OQI_cjs.getNextAuthOptions; }
|
|
21
21
|
});
|
|
22
22
|
Object.defineProperty(exports, "getStorefrontNextAuthOptions", {
|
|
23
23
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
24
|
+
get: function () { return chunkETZN4OQI_cjs.getStorefrontNextAuthOptions; }
|
|
25
25
|
});
|
|
26
26
|
Object.defineProperty(exports, "isAuthDebugClientEnabled", {
|
|
27
27
|
enumerable: true,
|
|
28
|
-
get: function () { return
|
|
28
|
+
get: function () { return chunkETZN4OQI_cjs.isAuthDebugClientEnabled; }
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "isAuthDebugEnabled", {
|
|
31
31
|
enumerable: true,
|
|
32
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkETZN4OQI_cjs.isAuthDebugEnabled; }
|
|
33
33
|
});
|
|
34
34
|
Object.defineProperty(exports, "logAuth", {
|
|
35
35
|
enumerable: true,
|
|
36
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkETZN4OQI_cjs.logAuth; }
|
|
37
37
|
});
|
|
38
38
|
Object.defineProperty(exports, "logAuthClient", {
|
|
39
39
|
enumerable: true,
|
|
40
|
-
get: function () { return
|
|
40
|
+
get: function () { return chunkETZN4OQI_cjs.logAuthClient; }
|
|
41
41
|
});
|
|
42
42
|
Object.defineProperty(exports, "nextAuthCookieDebugInfo", {
|
|
43
43
|
enumerable: true,
|
|
44
|
-
get: function () { return
|
|
44
|
+
get: function () { return chunkETZN4OQI_cjs.nextAuthCookieDebugInfo; }
|
|
45
45
|
});
|
|
46
46
|
Object.defineProperty(exports, "seedAdministratorPermissions", {
|
|
47
47
|
enumerable: true,
|
|
48
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunkETZN4OQI_cjs.seedAdministratorPermissions; }
|
|
49
49
|
});
|
|
50
50
|
Object.defineProperty(exports, "summarizeSessionUserForLog", {
|
|
51
51
|
enumerable: true,
|
|
52
|
-
get: function () { return
|
|
52
|
+
get: function () { return chunkETZN4OQI_cjs.summarizeSessionUserForLog; }
|
|
53
53
|
});
|
|
54
54
|
Object.defineProperty(exports, "OPEN_ENDPOINTS", {
|
|
55
55
|
enumerable: true,
|
package/dist/auth.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createCmsMiddleware, defaultPublicApiMethods, getNextAuthOptions, getStorefrontNextAuthOptions, isAuthDebugClientEnabled, isAuthDebugEnabled, logAuth, logAuthClient, nextAuthCookieDebugInfo, seedAdministratorPermissions, summarizeSessionUserForLog } from './chunk-
|
|
1
|
+
export { createCmsMiddleware, defaultPublicApiMethods, getNextAuthOptions, getStorefrontNextAuthOptions, isAuthDebugClientEnabled, isAuthDebugEnabled, logAuth, logAuthClient, nextAuthCookieDebugInfo, seedAdministratorPermissions, summarizeSessionUserForLog } from './chunk-4BG7XYSH.js';
|
|
2
2
|
export { OPEN_ENDPOINTS, PERMISSION_REQUIRED_ENDPOINTS, RBAC_ADMIN_ONLY_ENTITIES, canManageRoles, createAuthHelpers, createCmsAuthBundle, getRequiredPermission, isOpenEndpoint, isPublicMethod, sessionHasEntityAccess } from './chunk-UXMDSNIG.js';
|
|
3
3
|
export { ADMIN_GROUP_NAME, SUPER_ADMIN_GROUP_ID, VENDOR_ADMIN_GROUP_ID, VENDOR_OWNER_GROUP_NAME, VENDOR_SCOPED_STORE_ENTITIES, VENDOR_STORE_RBAC_ENTITIES, canManageVendorRoles, canManageVendorTeam, canOnboardVendors, explainSessionEntityAccess, getPermissionableEntityKeys, hasEntityPermission, isPlatformAdministrator, isRbacDebugEnabled, isSuperAdmin, isSuperAdminGroupName, isVendorAdmin, isVendorGroupName, isVendorOwner, isVendorPortalUser, isVendorStaff, logEntityAccessDecision, logRbac, permissionRowsToRecord, resolveVendorScopeFromSessionUser, summarizeEntityPerms, vendorPortalFlagsFromUser } from './chunk-P7QCLE5W.js';
|
|
4
4
|
import './chunk-SHUYVCID.js';
|