Organize/lib/auth-helpers.ts

22 lines
675 B
TypeScript

import "server-only";
import { auth } from "@/auth";
import { Role } from "@/lib/generated/prisma/enums";
/** Returns the current session's user id, or throws if unauthenticated. */
export async function requireUserId(): Promise<string> {
const session = await auth();
if (!session?.user?.id) {
throw new Error("Unauthorized");
}
return session.user.id;
}
/** Returns the current session's user, or throws if not a signed-in admin. */
export async function requireAdmin() {
const session = await auth();
if (!session?.user?.id) throw new Error("Unauthorized");
if (session.user.role !== Role.ADMIN) throw new Error("Forbidden");
return session.user;
}