add register require invite

This commit is contained in:
creations 2025-03-19 18:44:21 -04:00
parent 99f170750c
commit 0b09b6eb3d
Signed by: creations
GPG key ID: 8F553AA4320FC711

View file

@ -1,5 +1,8 @@
import { getSetting } from "@config/sql/settings"; import { getSetting } from "@config/sql/settings";
import { renderEjsTemplate } from "@helpers/ejs"; import { renderEjsTemplate } from "@helpers/ejs";
import { type ReservedSQL, sql } from "bun";
import { logger } from "@/helpers/logger";
const routeDef: RouteDef = { const routeDef: RouteDef = {
method: "GET", method: "GET",
@ -10,15 +13,30 @@ const routeDef: RouteDef = {
async function handler(request: ExtendedRequest): Promise<Response> { async function handler(request: ExtendedRequest): Promise<Response> {
if (request.session) return Response.redirect("/"); if (request.session) return Response.redirect("/");
const reservation: ReservedSQL = await sql.reserve();
try {
const [firstUser] = await sql`SELECT COUNT(*) FROM users`;
const instanceName: string = const instanceName: string =
(await getSetting("instance_name")) || "Unnamed Instance"; (await getSetting("instance_name", reservation)) ||
"Unnamed Instance";
const requiresInvite: boolean =
(await getSetting("enable_invitations", reservation)) === "true" &&
firstUser.count !== "0";
const ejsTemplateData: EjsTemplateData = { const ejsTemplateData: EjsTemplateData = {
title: `Register - ${instanceName}`, title: `Register - ${instanceName}`,
instance_name: instanceName, instance_name: instanceName,
requires_invite: requiresInvite,
}; };
return await renderEjsTemplate("auth/register", ejsTemplateData); return await renderEjsTemplate("auth/register", ejsTemplateData);
} catch (error) {
logger.error(["Error rendering register page", error as Error]);
return Response.redirect("/");
} finally {
reservation.release();
}
} }
export { handler, routeDef }; export { handler, routeDef };