import { NextRequest, NextResponse } from 'next/server'; // Force dynamic execution to ensure cookies are set at runtime export const dynamic = 'force-dynamic'; export async function POST(req: NextRequest) { try { // Parse the request body to get the auth token const body = await req.json(); const { token } = body; if (!token) { console.error('Set-cookie API: No token provided'); return NextResponse.json( { error: 'No token provided' }, { status: 400 } ); } // Create a response object const response = NextResponse.json( { success: true }, { status: 200 } ); // Set the token in an HTTP-only cookie that will be sent with requests // The secure flag is conditionally set based on the environment const isLocalhost = req.headers.get('host')?.includes('localhost') || req.headers.get('host')?.includes('127.0.0.1'); const cookieOptions = { // HttpOnly for security - prevents JavaScript access httpOnly: true, // Valid for 3 hours maxAge: 3 * 60 * 60, // Only send in requests to our domain path: '/', // Strict same-site policy to prevent CSRF sameSite: 'strict' as const, // Secure only in production environments secure: !isLocalhost }; // Set the cookie with the options response.cookies.set('Authorization', token, cookieOptions); console.log('Set-cookie API: Cookie set successfully'); return response; } catch (error) { console.error('Set-cookie API error:', error); return NextResponse.json( { error: 'Failed to set cookie', details: error instanceof Error ? error.message : String(error) }, { status: 500 } ); } }