diff --git a/apps/web/app/(dash)/actions.ts b/apps/web/app/(dash)/actions.ts new file mode 100644 index 00000000..70c2a567 --- /dev/null +++ b/apps/web/app/(dash)/actions.ts @@ -0,0 +1,48 @@ +"use server"; + +import { cookies, headers } from "next/headers"; +import { db } from "../helpers/server/db"; +import { sessions, users, space } from "../helpers/server/db/schema"; +import { eq } from "drizzle-orm"; +import { redirect } from "next/navigation"; + +export async function ensureAuth() { + const token = + cookies().get("next-auth.session-token")?.value ?? + cookies().get("__Secure-authjs.session-token")?.value ?? + cookies().get("authjs.session-token")?.value ?? + headers().get("Authorization")?.replace("Bearer ", ""); + + if (!token) { + return undefined; + } + + const sessionData = await db + .select() + .from(sessions) + .innerJoin(users, eq(users.id, sessions.userId)) + .where(eq(sessions.sessionToken, token)); + + if (!sessionData || sessionData.length < 0) { + return undefined; + } + + return { + user: sessionData[0]!.user, + session: sessionData[0]!, + }; +} + +export async function getSpaces() { + const data = await ensureAuth(); + if (!data) { + redirect("/signin"); + } + + const sp = await db + .select() + .from(space) + .where(eq(space.user, data.user.email)); + + return sp; +} diff --git a/apps/web/app/(dash)/chat/chatWindow.tsx b/apps/web/app/(dash)/chat/chatWindow.tsx index 8361bbf8..43c337ee 100644 --- a/apps/web/app/(dash)/chat/chatWindow.tsx +++ b/apps/web/app/(dash)/chat/chatWindow.tsx @@ -7,7 +7,7 @@ import { cn } from "@repo/ui/lib/utils"; import { motion } from "framer-motion"; import { useRouter } from "next/navigation"; -function ChatWindow({ q, spaces }: { q: string; spaces: number[] }) { +function ChatWindow({ q }: { q: string }) { const [layout, setLayout] = useState<"chat" | "initial">("initial"); const router = useRouter(); @@ -31,11 +31,7 @@ function ChatWindow({ q, spaces }: { q: string; spaces: number[] }) { className="max-w-3xl flex mx-auto w-full flex-col" >