import { headers } from "next/headers"; import { redirect } from "next/navigation"; import { auth } from "@/lib/auth"; import { issueSsoTicket } from "@/lib/auth/sso-ticket"; import { cached } from "@/lib/cache"; import { resolveHotelName } from "@/lib/hotel-name"; import { prisma } from "@/lib/prisma"; import { siteSettings } from "@/lib/services/site-settings"; import { ClientView } from "./client-view"; export const dynamic = "force-dynamic"; export default async function ClientPage() { const session = await auth(); if (!session?.user?.id) redirect("/login"); const userId = Number(session.user.id); const [hotelName, clientUrl] = await Promise.all([ resolveHotelName(), siteSettings.get("nitro_client_url", ""), ]); const ip = (await headers()).get("x-real-client-ip") ?? "0.0.0.0"; const ticket = await issueSsoTicket(prisma, userId, hotelName, ip); const onlineCount = await cached("online_count", 10_000, () => prisma.user.count({ where: { online: "1" } }), ).catch(() => 0); return ( ); }