import { NextResponse } from "next/server"; import { getDb } from "@/lib/db"; import { cookies } from "next/headers"; export async function GET() { try { const sql = getDb(); const cookieStore = await cookies(); const sessionToken = cookieStore.get("session_token")?.value; if (!sessionToken) { return NextResponse.json({ user: null }); } // Find session and user const sessions = await sql( `SELECT s.*, u.id as user_id, u.email, u.name, u.role, u.is_active, up.can_view_financial, up.can_edit, up.can_create, up.can_delete, up.can_download, up.can_view_dashboard, up.can_view_components, up.can_view_products, up.can_view_customers, up.can_view_suppliers, up.can_view_production, up.can_view_stock_history, up.can_view_logistics, up.can_view_stock_take, up.can_view_settings FROM sessions s JOIN users u ON s.user_id = u.id LEFT JOIN user_permissions up ON u.id = up.user_id WHERE s.token = $1 AND s.expires_at > NOW()`, [sessionToken] ); if (sessions.length === 0 || !sessions[0].is_active) { // Clear invalid session cookie cookieStore.delete("session_token"); return NextResponse.json({ user: null }); } const session = sessions[0]; // Build sections array from individual flags const sections: string[] = []; if (session.can_view_dashboard) sections.push("dashboard"); if (session.can_view_components) sections.push("components"); if (session.can_view_products) sections.push("products"); if (session.can_view_customers) sections.push("customers"); if (session.can_view_suppliers) sections.push("suppliers"); if (session.can_view_production) sections.push("production"); if (session.can_view_stock_history) sections.push("stock-history"); if (session.can_view_logistics) sections.push("logistics"); if (session.can_view_stock_take) sections.push("stock-take"); if (session.can_view_settings || session.role === "admin") sections.push("settings"); return NextResponse.json({ user: { id: session.user_id, email: session.email, name: session.name, role: session.role, permissions: { sections, can_view_financial: session.can_view_financial ?? false, can_edit: session.can_edit ?? false, can_create: session.can_create ?? false, can_delete: session.can_delete ?? false, can_download: session.can_download ?? false, }, }, }); } catch (error) { console.error("Session error:", error); return NextResponse.json({ user: null }); } }