Checkout: forward only the checkout fields, show clear errors, fix the contact form (#16)
build / test (push) Successful in 10s
build / build (push) Skipped

Co-authored-by: Michael Czechowski <mail@librete.ch>
This commit was merged in pull request #16.
This commit is contained in:
libretech authored and Michael Czechowski committed 2026-10-15 10:31:57 +02:00
1 parent d5dd109c63
commit d46bc9380e
29 files changed
+1108 -71

No files matched your search

+2 -2
View File
@@ -1,4 +1,4 @@
import { fetchCms } from "~/server/utils/cmsApi";
import { forwardToCms } from "~/server/utils/cmsApi";
export default defineEventHandler(async (event) => {
const uuid = getRouterParam(event, "uuid");
@@ -6,5 +6,5 @@ export default defineEventHandler(async (event) => {
throw createError({ statusCode: 400, statusMessage: "Missing order UUID" });
}
return await fetchCms(`/orders/${uuid}/cart`);
return await forwardToCms(`/orders/${uuid}/cart`);
});
+9 -4
View File
@@ -1,4 +1,5 @@
import { fetchCms } from "~/server/utils/cmsApi";
import { forwardToCms } from "~/server/utils/cmsApi";
import { invalidOrderUpdate, pickCustomerUpdate } from "~/server/utils/customerUpdate";
export default defineEventHandler(async (event) => {
const uuid = getRouterParam(event, "uuid");
@@ -6,10 +7,14 @@ export default defineEventHandler(async (event) => {
throw createError({ statusCode: 400, statusMessage: "Missing order UUID" });
}
const body = await readBody(event);
// Only the fields of the checkout's steps reach the CMS, which checks their values. Any other field is answered 400 here.
const update = pickCustomerUpdate(await readBody(event));
if (update.ok === false) {
throw createError(invalidOrderUpdate(update.errors));
}
return await fetchCms(`/orders/${uuid}/cart`, {
return await forwardToCms(`/orders/${uuid}/cart`, {
method: "PUT",
body
body: { data: update.data }
});
});
@@ -1,4 +1,4 @@
import { fetchCms } from "~/server/utils/cmsApi";
import { forwardToCms } from "~/server/utils/cmsApi";
export default defineEventHandler(async (event) => {
const uuid = getRouterParam(event, "uuid");
@@ -14,7 +14,7 @@ export default defineEventHandler(async (event) => {
const count = query.count || 1;
return await fetchCms(`/orders/${uuid}/add-product/${productId}?count=${count}`, {
return await forwardToCms(`/orders/${uuid}/add-product/${productId}?count=${count}`, {
method: "PUT"
});
});
@@ -1,4 +1,4 @@
import { fetchCms } from "~/server/utils/cmsApi";
import { forwardToCms } from "~/server/utils/cmsApi";
export default defineEventHandler(async (event) => {
const uuid = getRouterParam(event, "uuid");
@@ -11,7 +11,7 @@ export default defineEventHandler(async (event) => {
throw createError({ statusCode: 400, statusMessage: "Missing PayPal order ID" });
}
return await fetchCms(`/orders/${uuid}/capture/${paypalOrderId}`, {
return await forwardToCms(`/orders/${uuid}/capture/${paypalOrderId}`, {
method: "POST"
});
});
+2 -2
View File
@@ -1,4 +1,4 @@
import { fetchCms } from "~/server/utils/cmsApi";
import { forwardToCms } from "~/server/utils/cmsApi";
export default defineEventHandler(async (event) => {
const uuid = getRouterParam(event, "uuid");
@@ -10,7 +10,7 @@ export default defineEventHandler(async (event) => {
const returnUrl = query.returnUrl || "";
return await fetchCms(`/orders/${uuid}/checkout?returnUrl=${encodeURIComponent(String(returnUrl))}`, {
return await forwardToCms(`/orders/${uuid}/checkout?returnUrl=${encodeURIComponent(String(returnUrl))}`, {
method: "POST"
});
});
@@ -1,4 +1,4 @@
import { fetchCms } from "~/server/utils/cmsApi";
import { forwardToCms } from "~/server/utils/cmsApi";
export default defineEventHandler(async (event) => {
const uuid = getRouterParam(event, "uuid");
@@ -14,7 +14,7 @@ export default defineEventHandler(async (event) => {
const count = query.count || 1;
return await fetchCms(`/orders/${uuid}/remove-product/${productId}?count=${count}`, {
return await forwardToCms(`/orders/${uuid}/remove-product/${productId}?count=${count}`, {
method: "PUT"
});
});