28 lines
946 B
TypeScript
28 lines
946 B
TypeScript
import { headers } from "next/headers";
|
|
import { auth } from "@/lib/auth";
|
|
import { prisma } from "@/lib/prisma";
|
|
import { siteSettings } from "@/lib/services/site-settings";
|
|
import { issueSsoTicket } from "@/lib/auth/sso-ticket";
|
|
|
|
export const dynamic = "force-dynamic";
|
|
|
|
export async function GET() {
|
|
const session = await auth();
|
|
if (!session?.user?.id) {
|
|
return new Response(JSON.stringify({ error: "Unauthorized" }), { status: 401 });
|
|
}
|
|
|
|
const userId = Number(session.user.id);
|
|
const [hotelName, clientUrl] = await Promise.all([
|
|
siteSettings.get("hotel_name", "Atom"),
|
|
siteSettings.get("nitro_client_url", ""),
|
|
]);
|
|
|
|
const hdrs = await headers();
|
|
const ip =
|
|
hdrs.get("x-forwarded-for")?.split(",")[0]?.trim() ?? hdrs.get("x-real-ip") ?? "0.0.0.0";
|
|
|
|
const ticket = await issueSsoTicket(prisma, userId, hotelName ?? "Atom", ip);
|
|
|
|
return Response.json({ ticket, hotelName: hotelName ?? "Atom", clientUrl });
|
|
} |