UNPKG

@convex-dev/better-auth

Version:
43 lines 2.04 kB
import { createCookieGetter } from "better-auth/cookies"; import { JWT_COOKIE_NAME } from "../plugins/convex"; export const getToken = async (createAuth) => { const { cookies } = await import("next/headers"); const cookieStore = await cookies(); const auth = createAuth({}); const createCookie = createCookieGetter(auth.options); const cookie = createCookie(JWT_COOKIE_NAME); const tokenCookie = cookieStore.get(cookie.name); // Warn if there's a secure cookie mismatch between Convex and Next.js if (!tokenCookie?.value) { const isSecure = cookie.name.startsWith("__Secure-"); const insecureCookieName = cookie.name.replace("__Secure-", ""); const insecureCookie = cookieStore.get(insecureCookieName); const secureCookieName = isSecure ? cookie.name : `__Secure-${insecureCookieName}`; const secureCookie = cookieStore.get(secureCookieName); if (isSecure && insecureCookie) { console.warn(`Looking for secure cookie ${cookie.name} but found insecure cookie ${insecureCookie.name}`); } if (!isSecure && secureCookie) { console.warn(`Looking for insecure cookie ${cookie.name} but found secure cookie ${secureCookie.name}`); } } return tokenCookie?.value; }; const handler = (request, opts) => { const requestUrl = new URL(request.url); const convexSiteUrl = opts?.convexSiteUrl ?? process.env.NEXT_PUBLIC_CONVEX_SITE_URL; if (!convexSiteUrl) { throw new Error("NEXT_PUBLIC_CONVEX_SITE_URL is not set"); } const nextUrl = `${convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`; const newRequest = new Request(nextUrl, request); newRequest.headers.set("accept-encoding", "application/json"); return fetch(newRequest, { method: request.method, redirect: "manual" }); }; export const nextJsHandler = (opts) => ({ GET: (request) => handler(request, opts), POST: (request) => handler(request, opts), }); //# sourceMappingURL=index.js.map