import { Client, Account, Databases } from 'node-appwrite'; import { cookies } from 'next/headers'; const ENDPOINT = process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT || 'http://localhost/v1'; const PROJECT_ID = process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID || '69bedced002971103d13'; export async function createSessionClient() { const cookieStore = await cookies(); const sessionCookie = cookieStore.get('a_session_' + PROJECT_ID.toLowerCase()); if (!sessionCookie || !sessionCookie.value) { return null; } const client = new Client() .setEndpoint(ENDPOINT) .setProject(PROJECT_ID); if (sessionCookie.value === "dev-bypass-session") { // Escalate to API Key privileges for local dev bypass client.setKey(process.env.APPWRITE_API_KEY || ''); } else { client.setSession(sessionCookie.value); } return { get account() { return new Account(client); }, get databases() { return new Databases(client); } }; } export async function createAdminClient() { const client = new Client() .setEndpoint(ENDPOINT) .setProject(PROJECT_ID) .setKey(process.env.APPWRITE_API_KEY || ''); return { get account() { return new Account(client); }, get databases() { return new Databases(client); } }; } export async function getLoggedInUser() { const cookieStore = await cookies(); const sessionCookie = cookieStore.get('a_session_' + PROJECT_ID.toLowerCase()); if (process.env.NODE_ENV !== "production" && sessionCookie?.value === "dev-bypass-session") { return { name: "Administrador (Modo Dev)", email: "admin@almeira.com.co" }; } try { const sessionClient = await createSessionClient(); if (!sessionClient) { console.log("No session client created (cookie missing)"); return null; } return await sessionClient.account.get(); } catch (error) { console.error("Error in getLoggedInUser API call:", error); // Session is invalid or expired return null; } }