mongoku
Version:
[](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml)
82 lines (79 loc) • 3.12 kB
JavaScript
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