21 lines
763 B
TypeScript
21 lines
763 B
TypeScript
import { hashToken, SESSION_COOKIE_NAME } from "@minecraft-account-manager/auth";
|
|
import { findUserBySessionToken } from "@minecraft-account-manager/database";
|
|
import { cookies } from "next/headers";
|
|
import { redirect } from "next/navigation";
|
|
import { recordAuthenticatedUiAccess } from "@/lib/audit";
|
|
import { db } from "@/lib/database";
|
|
|
|
export async function getCurrentUser() {
|
|
const token = (await cookies()).get(SESSION_COOKIE_NAME)?.value;
|
|
if (!token) return null;
|
|
|
|
return findUserBySessionToken(db, hashToken(token));
|
|
}
|
|
|
|
export async function requireCurrentUser(accessPath?: string) {
|
|
const user = await getCurrentUser();
|
|
if (!user) redirect("/?portal=1");
|
|
if (accessPath) await recordAuthenticatedUiAccess(user, accessPath);
|
|
return user;
|
|
}
|