import { cookies } from 'next/headers'; import { Env_is_development } from './env'; import type { UserSessionCookie, UserAuth } from './auth_types'; import { Auth_tinyauth_endpoint } from './auth_shared'; export async function Auth_extract_session_cookie(): Promise { const cookieStore = await cookies(); for (const cookie of cookieStore.getAll()) { if (!cookie.name.includes("tinyauth-session")) continue; return { name: cookie.name, value: cookie.value, } as UserSessionCookie; } return null; } export async function Auth_get_user(): Promise { // Development mode bypass for testing with AUTH header if (Env_is_development()) { const { headers } = await import('next/headers'); const headersList = await headers(); if (headersList.get('AUTH') === '1') { return { isLoggedIn: true, username: 'testuser', name: 'Test User', email: 'test@example.com', provider: 'dev', oauth: false }; } } const cookie = await Auth_extract_session_cookie(); const endpoint = Auth_tinyauth_endpoint(); try { const headers: Record = {}; if (cookie) { headers['Cookie'] = `${cookie.name}=${cookie.value}`; } const response = await fetch(`${endpoint}/api/user`, { method: 'GET', headers }); if (!response.ok) { return { isLoggedIn: false, username: '', name: '', email: '', provider: '', oauth: false }; } const data = await response.json(); return { isLoggedIn: data.isLoggedIn || false, username: data.username || '', name: data.name || '', email: data.email || '', provider: data.provider || '', oauth: data.oauth || false }; } catch (error) { console.error('Failed to fetch user:', error); return { isLoggedIn: false, username: '', name: '', email: '', provider: '', oauth: false }; } }