22 lines
675 B
TypeScript
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;
|
|
}
|