UNPKG

cosmic-authentication

Version:

Authentication library for cosmic.new. Designed to be used and deployed on cosmic.new

47 lines (46 loc) 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RETURN_URL_COOKIE = exports.refreshToken_COOKIE_NAME = exports.accessToken_COOKIE_NAME = void 0; exports.getAuthState = getAuthState; exports.getServerSession = getServerSession; const headers_1 = require("next/headers"); // Constants exports.accessToken_COOKIE_NAME = 'accessToken'; exports.refreshToken_COOKIE_NAME = 'refreshToken'; exports.RETURN_URL_COOKIE = 'auth_return_url'; // Get auth state by calling the /api/auth/status endpoint (server-side) async function getAuthState() { const cookieStore = await (0, headers_1.cookies)(); // Use Next.js cookies helper const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3000'; // Fallback for local dev const statusUrl = `${baseUrl}/api/auth/status`; try { const cookieString = cookieStore.toString(); const response = await fetch(statusUrl, { headers: { // Forward cookies from the incoming request to the API route Cookie: cookieString, }, cache: 'no-store', // Ensure fresh check every time }); if (response.ok) { const data = await response.json(); if (data.authenticated && data.user) { return { isAuthenticated: true, user: data.user, }; } } // Handle non-OK responses or unauthenticated status return { isAuthenticated: false, user: null }; } catch (error) { console.error('[getAuthState] Error fetching auth status:', error); return { isAuthenticated: false, user: null }; } } // Get user session data directly (server-side) async function getServerSession() { const authState = await getAuthState(); return authState.user; }