74 lines
2.0 KiB
TypeScript
74 lines
2.0 KiB
TypeScript
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;
|
|
}
|
|
}
|