cosmic-authentication
Version:
Authentication library for cosmic.new. Designed to be used and deployed on cosmic.new
47 lines (46 loc) • 1.87 kB
JavaScript
;
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;
}