31 lines
903 B
JavaScript
Executable File
31 lines
903 B
JavaScript
Executable File
// frontend/lib/session.js
|
|
import { cookies } from "next/headers";
|
|
|
|
const COOKIE_NAME = "access_token";
|
|
const API_BASE = process.env.NEXT_PUBLIC_API_URL || "http://localhost:3001";
|
|
|
|
/**
|
|
* Server-side function to get the current session from the request cookies.
|
|
* This can only be used in Server Components, Server Actions, or Route Handlers.
|
|
*/
|
|
export async function getSession() {
|
|
const cookieStore = cookies();
|
|
const token = cookieStore.get(COOKIE_NAME)?.value;
|
|
|
|
if (!token) return null;
|
|
|
|
try {
|
|
const res = await fetch(`${API_BASE}/api/auth/me`, {
|
|
headers: { Authorization: `Bearer ${token}` },
|
|
cache: "no-store",
|
|
});
|
|
|
|
if (!res.ok) return null;
|
|
|
|
const data = await res.json();
|
|
return data; // Expects { user, permissions, ... }
|
|
} catch (error) {
|
|
console.error("Error fetching session:", error);
|
|
return null;
|
|
}
|
|
} |