aboutsummaryrefslogtreecommitdiff
path: root/apps/web/app/api/me/route.ts
blob: 25aa27bc992e46a644ab1cce8f1ed7207cbdc9ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { db } from "@/server/db";
import { eq } from "drizzle-orm";
import { sessions, users } from "@repo/db/schema";
import { type NextRequest, NextResponse } from "next/server";

export const runtime = "edge";

export async function GET(req: NextRequest) {
	const token =
		req.cookies.get("next-auth.session-token")?.value ??
		req.cookies.get("__Secure-authjs.session-token")?.value ??
		req.cookies.get("authjs.session-token")?.value ??
		req.headers.get("Authorization")?.replace("Bearer ", "");

	const session = await db
		.select()
		.from(sessions)
		.where(eq(sessions.sessionToken, token!));

	if (!session || session.length === 0) {
		return new Response(
			JSON.stringify({ message: "Invalid Key, session not found." }),
			{ status: 404 },
		);
	}

	const user = await db
		.select()
		.from(users)
		.where(eq(users.id, session[0]!.userId))
		.limit(1);

	if (!user || user.length === 0) {
		return NextResponse.json(
			{ message: "Invalid Key, session not found." },
			{ status: 404 },
		);
	}

	return new Response(
		JSON.stringify({
			message: "OK",
			data: { session: session[0], user: user[0] },
		}),
		{ status: 200 },
	);
}