v0.1.2: checkout fixes for CMS v0.2.0 (#18)
Co-authored-by: Michael Czechowski <mail@librete.ch>
This commit was merged in pull request #18.
This commit is contained in:
1 parent
60b8f1ab58
commit
fccff147ba
29 files changed
+1108
-71
No files matched your search
@@ -1,55 +1,18 @@
|
||||
import { contactMail, mailSendUrl } from "~/server/utils/contactMail";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const body = await readBody(event);
|
||||
|
||||
const { name, email, subject, message } = body;
|
||||
|
||||
if (!name || !email || !message) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: "Name, E-Mail und Nachricht sind erforderlich",
|
||||
});
|
||||
}
|
||||
|
||||
// Validate email format
|
||||
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
if (!emailRegex.test(email)) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: "Ungültige E-Mail-Adresse",
|
||||
});
|
||||
const result = contactMail(await readBody(event));
|
||||
if (result.ok === false) {
|
||||
throw createError({ statusCode: 400, message: result.message });
|
||||
}
|
||||
|
||||
try {
|
||||
// Send email via Mail service
|
||||
const config = useRuntimeConfig();
|
||||
const mailApiUrl = config.mailApiUrl || "http://mail:2222";
|
||||
|
||||
await $fetch(`${mailApiUrl}/send`, {
|
||||
method: "POST",
|
||||
body: {
|
||||
to: "paperwork@muellerprints.de",
|
||||
subject: `Kontaktanfrage: ${subject || "Anfrage über Website"}`,
|
||||
body: `
|
||||
Name: ${name}
|
||||
E-Mail: ${email}
|
||||
Betreff: ${subject || "Kontaktanfrage über Website"}
|
||||
|
||||
Nachricht:
|
||||
${message}
|
||||
|
||||
---
|
||||
Diese Nachricht wurde über das Kontaktformular auf muellerprints.de gesendet.
|
||||
`.trim(),
|
||||
replyTo: email,
|
||||
},
|
||||
});
|
||||
await $fetch(mailSendUrl(config.mailApiUrl || "http://mail:2222"), { method: "POST", body: result.mail });
|
||||
|
||||
return { success: true };
|
||||
} catch (error) {
|
||||
console.error("Failed to send contact email:", error);
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
message: "E-Mail konnte nicht gesendet werden",
|
||||
});
|
||||
throw createError({ statusCode: 500, message: "E-Mail konnte nicht gesendet werden" });
|
||||
}
|
||||
});
|
||||
@@ -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`);
|
||||
});
|
||||
@@ -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"
|
||||
});
|
||||
});
|
||||
@@ -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"
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user