fix: add logs
This commit is contained in:
parent
0fd67c6f48
commit
996eafd0cb
2 changed files with 38 additions and 0 deletions
24
src/middleware.ts
Normal file
24
src/middleware.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
import { NextResponse } from 'next/server'
|
||||||
|
import type { NextRequest } from 'next/server'
|
||||||
|
|
||||||
|
export function middleware(request: NextRequest) {
|
||||||
|
if (request.method === 'POST') {
|
||||||
|
console.log('[Middleware] POST request received', {
|
||||||
|
path: request.nextUrl.pathname,
|
||||||
|
method: request.method,
|
||||||
|
contentType: request.headers.get('content-type'),
|
||||||
|
userAgent: request.headers.get('user-agent'),
|
||||||
|
referer: request.headers.get('referer'),
|
||||||
|
nextAction: request.headers.get('next-action'),
|
||||||
|
accept: request.headers.get('accept'),
|
||||||
|
protocol: request.headers.get('x-forwarded-proto'),
|
||||||
|
ip: request.headers.get('x-forwarded-for'),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return NextResponse.next()
|
||||||
|
}
|
||||||
|
|
||||||
|
export const config = {
|
||||||
|
matcher: ['/kontakt'],
|
||||||
|
}
|
||||||
|
|
@ -13,6 +13,11 @@ import { isSpam } from '@/utils/detectSpam'
|
||||||
*/
|
*/
|
||||||
export async function send(toEmail: string, prevState: any, formData: FormData) {
|
export async function send(toEmail: string, prevState: any, formData: FormData) {
|
||||||
|
|
||||||
|
console.log('[ServerAction] send() entered', {
|
||||||
|
toEmail,
|
||||||
|
formKeys: [...formData.keys()],
|
||||||
|
})
|
||||||
|
|
||||||
const schema = z.object({
|
const schema = z.object({
|
||||||
email: z.email().max(100),
|
email: z.email().max(100),
|
||||||
subject: z.string().max(150),
|
subject: z.string().max(150),
|
||||||
|
|
@ -28,18 +33,24 @@ export async function send(toEmail: string, prevState: any, formData: FormData)
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!validatedFields.success) {
|
if (!validatedFields.success) {
|
||||||
|
console.log('[ServerAction] Validation failed', validatedFields.error.flatten().fieldErrors)
|
||||||
return {
|
return {
|
||||||
errors: validatedFields.error.flatten().fieldErrors,
|
errors: validatedFields.error.flatten().fieldErrors,
|
||||||
message: "Nicht alle Felder waren gültig"
|
message: "Nicht alle Felder waren gültig"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('[ServerAction] Validation passed, checking spam')
|
||||||
|
|
||||||
if (isSpam(validatedFields.data.message)) {
|
if (isSpam(validatedFields.data.message)) {
|
||||||
|
console.log('[ServerAction] Spam detected')
|
||||||
return {
|
return {
|
||||||
message: "Ihre Nachricht wurde als unerwünschte Werbung eingestuft und nicht gesendet."
|
message: "Ihre Nachricht wurde als unerwünschte Werbung eingestuft und nicht gesendet."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('[ServerAction] Sending email via Resend')
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const resend = new Resend(process.env.RESEND_API_KEY);
|
const resend = new Resend(process.env.RESEND_API_KEY);
|
||||||
await resend.emails.send({
|
await resend.emails.send({
|
||||||
|
|
@ -50,9 +61,12 @@ export async function send(toEmail: string, prevState: any, formData: FormData)
|
||||||
text: `Nachricht von ${validatedFields.data.name} (${validatedFields.data.email}): \n\n ${validatedFields.data.message}`
|
text: `Nachricht von ${validatedFields.data.name} (${validatedFields.data.email}): \n\n ${validatedFields.data.message}`
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.error('[ServerAction] Resend error:', e)
|
||||||
return { message: "Fehler beim senden der Nachricht." };
|
return { message: "Fehler beim senden der Nachricht." };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('[ServerAction] Email sent successfully')
|
||||||
|
|
||||||
return {
|
return {
|
||||||
message: "Ihre Nachricht wurde erfolgreich übermittelt"
|
message: "Ihre Nachricht wurde erfolgreich übermittelt"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue