mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-03-25 03:44:29 -05:00
41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
import { User } from "@prisma/client";
|
|
import { httpError } from "@trpc/server";
|
|
import { NextApiRequest, NextApiResponse } from "next";
|
|
import { getSession } from "next-auth/client";
|
|
|
|
export const getMySession = (req: NextApiRequest): Promise<User | null> => {
|
|
if (
|
|
process.env.NODE_ENV === "development" &&
|
|
req.headers.cookie?.includes("mockUser=")
|
|
) {
|
|
return JSON.parse(req.headers.cookie.replace("mockUser=", ""));
|
|
}
|
|
|
|
// @ts-expect-error
|
|
return getSession({ req });
|
|
};
|
|
|
|
export const throwIfNotLoggedIn = (user: User | null) => {
|
|
if (!user) throw httpError.unauthorized();
|
|
|
|
return user;
|
|
};
|
|
|
|
export const createHandler = (
|
|
req: NextApiRequest,
|
|
res: NextApiResponse,
|
|
handlers: Partial<
|
|
Record<
|
|
"GET" | "POST",
|
|
(req: NextApiRequest, res: NextApiResponse) => Promise<void>
|
|
>
|
|
>
|
|
) => {
|
|
if (Object.keys(handlers).includes(req.method as any)) {
|
|
const key = req.method as keyof typeof handlers;
|
|
return handlers[key]!(req, res);
|
|
}
|
|
|
|
return res.status(405).end();
|
|
};
|