Files
lcbp3.np-dms.work/frontend/lib/auth copy.js

34 lines
800 B
JavaScript
Executable File

// frontend/lib/auth.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 session fetcher
*/
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 {
user: data.user,
permissions: data.permissions || data.perms || [],
token,
};
} catch (error) {
console.error("Error fetching session:", error);
return null;
}
}