import type { APIRoute } from 'astro' // POST /api/consent - บันทึก consent export const POST: APIRoute = async ({ request }) => { try { const body = await request.json() const { session_id, essential, analytics, marketing, functional } = body if (!session_id) { return new Response(JSON.stringify({ error: 'session_id is required' }), { status: 400, headers: { 'Content-Type': 'application/json' }, }) } // Get client info const ipAddress = request.headers.get('x-forwarded-for')?.split(',')[0] || 'unknown' const userAgent = request.headers.get('user-agent') || 'unknown' // Build consent record const consentTypes = [] if (essential) consentTypes.push('essential') if (analytics) consentTypes.push('analytics') if (marketing) consentTypes.push('marketing') if (functional) consentTypes.push('functional') // In Payload CMS, you would save this to the consent-logs collection // For now, return success (Payload integration happens at build time) const record = { sessionId: session_id, consentType: consentTypes.length === 4 ? 'accept_all' : consentTypes.join(','), granted: analytics || marketing || functional, ipAddress, userAgent, metadata: { essential, analytics, marketing, functional }, createdAt: new Date().toISOString(), } // Log for debugging (remove in production) console.log('[Consent API] New consent record:', JSON.stringify(record)) return new Response(JSON.stringify({ success: true, record }), { status: 200, headers: { 'Content-Type': 'application/json' }, }) } catch (error) { console.error('[Consent API] Error:', error) return new Response(JSON.stringify({ error: 'Internal server error' }), { status: 500, headers: { 'Content-Type': 'application/json' }, }) } } // GET /api/consent - ตรวจสอบ consent ของ session export const GET: APIRoute = async ({ request }) => { try { const url = new URL(request.url) const sessionId = url.searchParams.get('session_id') if (!sessionId) { return new Response(JSON.stringify({ error: 'session_id is required' }), { status: 400, headers: { 'Content-Type': 'application/json' }, }) } // In Payload CMS, query the consent-logs collection // For now, return not found (Payload integration happens at build time) return new Response(JSON.stringify({ error: 'Not implemented in template' }), { status: 501, headers: { 'Content-Type': 'application/json' }, }) } catch (error) { console.error('[Consent API] Error:', error) return new Response(JSON.stringify({ error: 'Internal server error' }), { status: 500, headers: { 'Content-Type': 'application/json' }, }) } }