/** * Server-side auth helpers for Next.js API routes. */ import type { TokenPayload } from './types.js'; /** * Get the current user from an Authorization header value. * Pairs with a verifyToken function and a getUserById function. * * @param authHeader - The Authorization header value (e.g., "Bearer xxx") * @param verifyToken - Function to verify the JWT and return a payload * @param getUserById - Function to look up the user by their ID * @returns The user object or null if auth fails */ export async function getCurrentUser( authHeader: string | null, verifyToken: (token: string) => Promise, getUserById: (id: string) => Promise ): Promise { if (!authHeader?.startsWith('Bearer ')) return null; const token = authHeader.slice(7); const payload = await verifyToken(token); if (!payload || payload.type !== 'access') return null; return getUserById(payload.sub); }