"use server";
import {
API_ENDPOINT,
API_KEY,
PROJECT_ID,
SESSION_COOKIE,
} from "@/config/appwrite";
import { Account, Client, OAuthProvider } from "node-appwrite";
import { cookies, headers } from "next/headers";
let appwriteClient = new Client()
.setEndpoint(API_ENDPOINT)
.setProject(PROJECT_ID)
.setKey(API_KEY);
let account = new Account(appwriteClient);
export async function getSession() {
const cookieStore = cookies();
const sessionId = cookieStore.get(SESSION_COOKIE)?.value;
if (!sessionId) {
return null;
}
try {
const session = await account.getSession(sessionId);
return session;
} catch (error) {
console.error("Failed to get session:", error);
return null;
}
}
export async function signIn(provider: "google") {
const origin = headers().get("origin") || "";
const success = `${origin}/api/auth/callback/${provider}`;
const failure = `${origin}/auth/error`;
const url = await account.createOAuth2Token(
OAuthProvider.Google,
success,
failure
);
return { url };
}