UNPKG

mongoku

Version:

[![CI](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml/badge.svg)](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml)

82 lines (79 loc) 3.12 kB
import { b as base } from './server-Crjo4w1q.js'; import './root-otUAnOAR.js'; import { p as private_env } from './shared-server-BmU87nph.js'; import { c as contextStore, l as logger } from './logger-PfH_grbh.js'; import { g as getOAuthConfig, v as verifySession } from './oauth-D6jTWKFd.js'; import { MongoError } from 'mongodb'; import './async-DUoD1OpG.js'; import 'async_hooks'; import 'node:util'; import 'node:crypto'; Error.stackTraceLimit = 100; const handle = async ({ event, resolve }) => { const oauthConfig = await getOAuthConfig(); const authBasic = private_env.MONGOKU_AUTH_BASIC; event.locals.requestId = event.request.headers.get("X-Request-ID") || crypto.randomUUID(); event.setHeaders({ "X-Request-ID": event.locals.requestId }); return contextStore.run(event, async () => { const startTime = performance.now(); if (oauthConfig) { const isAuthRoute = event.url.pathname.startsWith(`${base}/auth/`); const isCimdRoute = event.url.pathname === `${base}/.well-known/cimd.json`; if (!isAuthRoute && !isCimdRoute) { const sessionCookie = event.cookies.get("mongoku_session"); const session = sessionCookie ? verifySession(oauthConfig, sessionCookie) : null; if (!session) { const acceptsHtml = event.request.headers.get("accept")?.includes("text/html"); logger.logRequest(acceptsHtml ? 302 : 401, performance.now() - startTime); if (acceptsHtml) { const returnTo = `${event.url.pathname}${event.url.search}`; const loginUrl = `${base}/auth/login?return=${encodeURIComponent(returnTo)}`; return new Response(null, { status: 302, headers: { Location: loginUrl } }); } return new Response(JSON.stringify({ message: "Session expired" }), { status: 401, headers: { "Content-Type": "application/json" } }); } event.locals.user = { sub: session.sub, name: session.name, email: session.email }; } } else if (authBasic) { const [username, password] = authBasic.split(":"); const basicAuth = event.request.headers.get("Authorization"); if (!basicAuth?.toLowerCase().startsWith("basic ") || basicAuth.slice("basic ".length) !== Buffer.from(`${username}:${password}`).toString("base64")) { logger.logRequest(401, performance.now() - startTime); return new Response("Unauthorized", { status: 401, headers: { "WWW-Authenticate": "Basic" } }); } } const response = await resolve(event); logger.logRequest(response.status, performance.now() - startTime); return response; }); }; const handleError = ({ error }) => { logger.error(error); if (error instanceof MongoError) { return { message: error.message, code: error.code }; } if (error instanceof Error) { return { message: error.message }; } return { message: "An unexpected error occurred" }; }; export { handle, handleError }; //# sourceMappingURL=hooks.server-BiUSRqj1.js.map