diff --git a/src/app/(site)/login/page.tsx b/src/app/(site)/login/page.tsx
index 2447e2d7..50957614 100644
--- a/src/app/(site)/login/page.tsx
+++ b/src/app/(site)/login/page.tsx
@@ -1,19 +1,180 @@
import { headers } from "next/headers";
+import Image from "next/image";
+import Link from "next/link";
+import { getTranslations } from "next-intl/server";
import { LoginForm } from "@/components/auth/login-form";
+import { cached } from "@/lib/cache";
+import { avatarImageUrl } from "@/lib/format";
+import { prisma } from "@/lib/prisma";
import { captchaConfig } from "@/lib/services/captcha";
+import { siteSettings } from "@/lib/services/site-settings";
export default async function LoginPage() {
- const cfg = await captchaConfig();
+ const t = await getTranslations("pages.login");
+ const th = await getTranslations("header");
+ const [hotelName, imagerRaw, cfg] = await Promise.all([
+ siteSettings.get("hotel_name", "Hotel"),
+ siteSettings.get(
+ "habbo_imaging_url",
+ "https://www.habbo.com/habbo-imaging/avatarimage",
+ ),
+ captchaConfig(),
+ ]);
+ const imager = imagerRaw ?? "https://www.habbo.com/habbo-imaging/avatarimage";
const nonce = (await headers()).get("x-nonce") ?? undefined;
+ const [online, recentUsers] = await Promise.all([
+ cached("online_count", 10_000, () =>
+ prisma.user.count({ where: { online: "1" } }),
+ ).catch(() => 0),
+ prisma.user
+ .findMany({
+ where: { online: "1" },
+ select: { username: true, look: true },
+ take: 8,
+ })
+ .catch(() => []),
+ ]);
+
return (
-
+ {t("welcomeBackSub", { hotelName: hotelName ?? "Hotel" })} +
++ No account?{" "} + + Create one + +
++ {t("subtitle")} +
+